OPENSHIFT CONTAINER PLATFORM - Technical Deep Dive
-
Upload
khangminh22 -
Category
Documents
-
view
0 -
download
0
Transcript of OPENSHIFT CONTAINER PLATFORM - Technical Deep Dive
OPENSHIFT TECHNICAL OVERVIEW2
Self-Service
Multi-language
Automation
Collaboration
Multi-tenant
Standards-based
Web-scale
Open Source
Enterprise Grade
Secure
OPENSHIFT TECHNICAL OVERVIEW3
ANYCONTAINER
Amazon Web Services Microsoft Azure Google CloudOpenStackDatacenterLaptop
ANYINFRASTRUCTURE
APPLICATION LIFECYCLE MANAGEMENT
ENTERPRISE CONTAINER HOST
CONTAINER ORCHESTRATION AND MANAGEMENT(KUBERNETES)
OPENSHIFT CONTAINER PLATFORM
OPENSHIFT TECHNICAL OVERVIEW4
OPENSHIFT CONTAINER PLATFORM
Automated Operations*
Kubernetes
Red Hat Enterprise Linux or Red Hat CoreOS
Application Services
CaaS PaaSBest IT Ops Experience Best Developer Experience
*coming soon
Cluster Services
Developer Services
Middleware, Service Mesh, Functions, ISV Metrics, Chargeback, Registry, Logging Dev Tools, Automated Builds, CI/CD, IDE
OPENSHIFT TECHNICAL OVERVIEW5
OPENSHIFT ARCHITECTURE
EXISTING AUTOMATION
TOOLSETS
SCM(GIT)
CI/CD
SERVICE LAYER
ROUTING LAYER
PERSISTENTSTORAGE
REGISTRY
RHEL
NODE
c
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
C
C
C C
C
C
C CC C
RED HATENTERPRISE LINUX
MASTER
API/AUTHENTICATION
DATA STORE
SCHEDULER
HEALTH/SCALING
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
OPENSHIFT TECHNICAL OVERVIEW7
WHAT ARE CONTAINERS?It Depends Who You Ask
● Application processes on a shared kernel
● Simpler, lighter, and denser than VMs
● Portable across different environments
● Package apps with all dependencies
● Deploy to any environment in seconds
● Easily accessed and shared
INFRASTRUCTURE APPLICATIONS
OPENSHIFT TECHNICAL OVERVIEW8
VIRTUAL MACHINES AND CONTAINERS
VIRTUAL MACHINES CONTAINERS
VM isolates the hardware Container isolates the process
VM
OS Dependencies
Kernel
Hypervisor
Hardware
App App App App
Container Host (Kernel)
Container
App
OS deps
Container
App
OS deps
Container
App
OS deps
Container
App
OS deps
Hypervisor
Hardware
OPENSHIFT TECHNICAL OVERVIEW9
Virtual Machine
Application
OS dependencies
Operating System
VIRTUAL MACHINES AND CONTAINERS
VM IsolationComplete OSStatic ComputeStatic MemoryHigh Resource Usage
Container IsolationShared KernelBurstable ComputeBurstable MemoryLow Resource Usage
Container Host
Container
Application
OS dependencies
OPENSHIFT TECHNICAL OVERVIEW10
VIRTUAL MACHINES AND CONTAINERS
Container Host
Container
Application
OS dependencies
Dev
IT OpsInfrastructure
Virtual Machine
Application
OS dependencies
Operating System
IT Ops(and Dev, sort of)
Infrastructure
Clear ownership boundary between Dev and IT Ops drives DevOps adoption
and fosters agility
Optimized for stability
Optimized for agility
OPENSHIFT TECHNICAL OVERVIEW11
Virtual machines are NOT portable across hypervisor and do NOT provide portable packaging for applications
APPLICATION PORTABILITY WITH VM
VM Type X
Application
OS dependencies
Operating System
BARE METAL PRIVATE CLOUD PUBLIC CLOUDVIRTUALIZATIO
NLAPTOP
Application
OS dependencies
Operating System
VM Type Y
Application
OS dependencies
Operating System
VM Type Z
Application
OS dependencies
Operating System
Guest VM
Application
OS dependencies
Operating System
OPENSHIFT TECHNICAL OVERVIEW12
APPLICATION PORTABILITY WITH CONTAINERS
LAPTOP
Container
Application
OS dependencies
Guest VM
RHEL
BARE METAL
Container
Application
OS dependencies
RHEL
VIRTUALIZATION
Container
Application
OS dependencies
Virtual Machine
RHEL
PRIVATE CLOUD
Container
Application
OS dependencies
Virtual Machine
RHEL
PUBLIC CLOUD
Container
Application
OS dependencies
Virtual Machine
RHEL
RHEL Containers + RHEL Host = Guaranteed PortabilityAcross Any Infrastructure
OPENSHIFT TECHNICAL OVERVIEW13
LINUX AND CONTAINER INFRASTRUCTURE
CONTAINERS ARE LINUX
Red Hat Enterprise Linux is a leader in paid
Linux
70%CY2016 paidLinux share
CONTAINER CONTAINER CONTAINER
LINUX CONTAINER HOST (KERNEL)
LINUX O/SDEPENDENCY
LINUX O/SDEPENDENCY
LINUX O/SDEPENDENCY
APP APP APP
Linux OS host spans every container
1 2Linux is in
every single container
OPENSHIFT TECHNICAL OVERVIEW14
Base Image
Image Layer 1
Image Layer 2
Image Layer 3
Base RHEL
OS Update Layer
Java Runtime Layer
Application Layer
Container Image Layers Example Container Image
RAPID SECURITY PATCHING USINGCONTAINER IMAGE LAYERING
OPENSHIFT TECHNICAL OVERVIEW
A lightweight, OCI-compliant container runtime
15
Minimal and Secure Architecture
Optimized for Kubernetes
Runs any OCI-compliant image
(including docker)
Optional runtime in OCP 3.10, default OCP 3.11+
OPENSHIFT TECHNICAL OVERVIEW18
containers are created from container images
CONTAINERCONTAINERIMAGE
BINARY RUNTIME
OPENSHIFT TECHNICAL OVERVIEW19
IMAGE REGISTRY
container images are stored in an image registry
CONTAINER
CONTAINERIMAGE
CONTAINERIMAGE
CONTAINERIMAGE
CONTAINERIMAGE
CONTAINERIMAGE
CONTAINERIMAGE
OPENSHIFT TECHNICAL OVERVIEW20
an image repository contains all versions of an image in the image registry
IMAGE REGISTRY
frontend:latestfrontend:2.0frontend:1.1frontend:1.0
CONTAINERIMAGE
mongo:latestmongo:3.7mongo:3.6mongo:3.4
CONTAINERIMAGE
myregistry/frontend myregistry/mongo
OPENSHIFT TECHNICAL OVERVIEW21
PODPOD
containers are wrapped in pods which are units of deployment and management
CONTAINER CONTAINERCONTAINER
IP: 10.1.0.11 IP: 10.1.0.55
OPENSHIFT TECHNICAL OVERVIEW22
pods configuration is defined in a deployment
image namereplicaslabelscpumemorystorage
POD
CONTAINER
POD
CONTAINER
POD
CONTAINER
DEPLOYMENT
OPENSHIFT TECHNICAL OVERVIEW23
services provide internal load-balancing and service discovery across pods
POD
CONTAINER
POD
CONTAINER
POD
CONTAINER
BACKEND SERVICE
POD
CONTAINER
role: backend
role: backendrole: backendrole: backendrole: frontend
10.110.1.11 10.120.2.22 10.130.3.3310.140.4.44
172.30.170.110
OPENSHIFT TECHNICAL OVERVIEW24
apps can talk to each other via services
InvokeBackend API
POD
CONTAINER
POD
CONTAINER
POD
CONTAINER
BACKEND SERVICE
POD
CONTAINER
role: backend
role: backendrole: backendrole: backendrole: frontend
10.110.1.11 10.120.2.22 10.130.3.3310.140.4.44
172.30.170.110
OPENSHIFT TECHNICAL OVERVIEW25
POD
routes add services to the external load-balancer and provide readable urls for the app
CONTAINER
POD
CONTAINER
POD
CONTAINER
BACKEND SERVICE
ROUTEapp-prod.mycompany.com
> curl http://app-prod.mycompany.com
OPENSHIFT TECHNICAL OVERVIEW26
projects isolate apps across environments, teams, groups and departments
POD
C
POD
C
POD
C
PAYMENT DEV
POD
C
POD
C
POD
C
PAYMENT PROD
POD
C
POD
C
POD
C
CATALOG
POD
C
POD
C
POD
C
INVENTORY
OPENSHIFT TECHNICAL OVERVIEW
NODES RHEL INSTANCES WHERE APPS RUN
29
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
OPENSHIFT TECHNICAL OVERVIEW
RHEL
NODE
c
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
C
C
C C
C
C
C CC C
APPS RUN IN CONTAINERS
30
Container Image
Container
Pod
OPENSHIFT TECHNICAL OVERVIEW31
PODS ARE THE UNIT OF ORCHESTRATION
RHEL
NODE
c
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
C
C
C C
C
C
C CC C
OPENSHIFT TECHNICAL OVERVIEW
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
32
MASTERS ARE THE CONTROL PLANE
RED HATENTERPRISE LINUX
MASTER
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
OPENSHIFT TECHNICAL OVERVIEW
RHEL
NODE
RHEL
NODE
RHEL
NODE
33
API AND AUTHENTICATION
RHEL
NODE
RHEL
NODE
RHEL
NODE
RED HATENTERPRISE LINUX
MASTER
API/AUTHENTICATION
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
OPENSHIFT TECHNICAL OVERVIEW
RHEL
NODE
RHEL
NODE
RHEL
NODE
34
DESIRED AND CURRENT STATE
RHEL
NODE
RHEL
NODE
RHEL
NODE
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
RED HATENTERPRISE LINUX
MASTER
API/AUTHENTICATION
DATA STORE
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
OPENSHIFT TECHNICAL OVERVIEW35
INTEGRATED CONTAINER REGISTRY
RHEL
NODE
RHEL
NODE
RHEL
RHEL
NODE
RHEL
NODE
RHEL
RHEL
NODE
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
RED HATENTERPRISE LINUX
MASTER
API/AUTHENTICATION
DATA STORE
NODE
REGISTRY
RHEL
OPENSHIFT TECHNICAL OVERVIEW36
ORCHESTRATION AND SCHEDULING
RHEL
NODE
RHEL
NODE
RHEL
RHEL
NODE
RHEL
NODE
RHEL
RHEL
NODE
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
RED HATENTERPRISE LINUX
MASTER
API/AUTHENTICATION
DATA STORE
SCHEDULER
NODE
REGISTRY
RHEL
OPENSHIFT TECHNICAL OVERVIEW37
PLACEMENT BY POLICY
RHEL
NODE
RHEL
NODE
RHEL
NODE
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
RED HATENTERPRISE LINUX
MASTER
API/AUTHENTICATION
DATA STORE
SCHEDULERREGISTRY
RHEL
NODE
RHEL
NODE
C
C
RHEL
NODE
c
C
C
OPENSHIFT TECHNICAL OVERVIEW
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
C
C
RHEL
NODE
c
C
C
38
AUTOSCALING PODS
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
RED HATENTERPRISE LINUX
MASTER
API/AUTHENTICATION
DATA STORE
SCHEDULERREGISTRY
HEALTH/SCALING
OPENSHIFT TECHNICAL OVERVIEW39
SERVICE DISCOVERY
SERVICE LAYER
REGISTRY
RHEL
NODE
C
C
RHEL
NODE
C C
RHEL
NODE
c
C
C
RHEL
NODE
C C
RHEL
NODE
C
RHEL
NODE
CRED HATENTERPRISE LINUX
MASTER
API/AUTHENTICATION
DATA STORE
SCHEDULER
HEALTH/SCALING
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
OPENSHIFT TECHNICAL OVERVIEW40
PERSISTENT DATA IN CONTAINERS
SERVICE LAYER
PERSISTENTSTORAGE
REGISTRY
RHEL
NODE
C
C
RHEL
NODE
C C
RHEL
NODE
c
C
C
RHEL
NODE
C C
RHEL
NODE
C
RHEL
NODE
CRED HATENTERPRISE LINUX
MASTER
API/AUTHENTICATION
DATA STORE
SCHEDULER
HEALTH/SCALING
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
OPENSHIFT TECHNICAL OVERVIEW41
ROUTING AND LOAD-BALANCING
SERVICE LAYER
ROUTING LAYER
PERSISTENTSTORAGE
REGISTRY
RHEL
NODE
C
C
RHEL
NODE
C C
RHEL
NODE
c
C
C
RHEL
NODE
C C
RHEL
NODE
C
RHEL
NODE
CRED HATENTERPRISE LINUX
MASTER
API/AUTHENTICATION
DATA STORE
SCHEDULER
HEALTH/SCALING
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
OPENSHIFT TECHNICAL OVERVIEW42
ACCESS VIA WEB, CLI, IDE AND API
EXISTING AUTOMATION
TOOLSETS
SCM(GIT)
CI/CD
SERVICE LAYER
ROUTING LAYER
PERSISTENTSTORAGE
REGISTRY
RHEL
NODE
C
C
RHEL
NODE
C C
RHEL
NODE
c
C
C
RHEL
NODE
C C
RHEL
NODE
C
RHEL
NODE
CRED HATENTERPRISE LINUX
MASTER
API/AUTHENTICATION
DATA STORE
SCHEDULER
HEALTH/SCALING
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
OPENSHIFT TECHNICAL OVERVIEW44
PROOF-OF-CONCEPT ARCHITECTURE
ApplicationTraffic
Dev and OpsUser
INFRAMASTER
NODE NODE
An infrastructure node is a node that is dedicated to infrastructure pods such as router, image registry, metrics, and logs
OPENSHIFT TECHNICAL OVERVIEW45
APP HIGH-AVAILABILITY ARCHITECTURE
ENTERPRISE LOAD-BALANCER
ApplicationTraffic
Dev and OpsUser
INFRAMASTER INFRA
NODE NODE NODE NODE
OPENSHIFT TECHNICAL OVERVIEW46
FULL HIGH-AVAILABILITY ARCHITECTURE
ENTERPRISE LOAD-BALANCER
ApplicationTrafficDev and Ops
User
NODE
MASTER MASTER INFRAMASTER INFRA
NODE NODE NODE NODENODE
INFRA
NODE
OPENSHIFT TECHNICAL OVERVIEW49
AUTO-HEALING FAILED PODS
RHEL
NODE
RHEL
NODE
c
RHEL
NODE
RHEL
NODE
c
RHEL
NODE
C
C
RHEL
NODE
C
C
RED HATENTERPRISE LINUX
MASTER
API/AUTHENTICATION
DATA STORE
SCHEDULER
HEALTH/SCALING
C
OPENSHIFT TECHNICAL OVERVIEW50
AUTO-HEALING FAILED CONTAINERS
RHEL
NODE
RHEL
NODE
c
RHEL
NODE
RHEL
NODE
c
RHEL
NODE
C
C
RHEL
NODE
C
C
RED HATENTERPRISE LINUX
MASTER
API/AUTHENTICATION
DATA STORE
SCHEDULER
HEALTH/SCALING
C
OPENSHIFT TECHNICAL OVERVIEW51
AUTO-HEALING FAILED CONTAINERS
RHEL
NODE
RHEL
NODE
c
RHEL
NODE
RHEL
NODE
c
RHEL
NODE
C
C
RHEL
NODE
C
C
RED HATENTERPRISE LINUX
MASTER
API/AUTHENTICATION
DATA STORE
SCHEDULER
HEALTH/SCALING
C
OPENSHIFT TECHNICAL OVERVIEW52
AUTO-HEALING FAILED CONTAINERS
RHEL
NODE
RHEL
NODE
c
RHEL
NODE
RHEL
NODE
c
RHEL
NODE
C
C
RHEL
NODE
C
C
RED HATENTERPRISE LINUX
MASTER
API/AUTHENTICATION
DATA STORE
SCHEDULER
HEALTH/SCALING
C
OPENSHIFT TECHNICAL OVERVIEW53
AUTO-HEALING FAILED CONTAINERS
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
C
C
RHEL
NODE
C
C
c
RED HATENTERPRISE LINUX
MASTER
API/AUTHENTICATION
DATA STORE
SCHEDULER
HEALTH/SCALING
C
c
OPENSHIFT TECHNICAL OVERVIEW55
BUILT-IN SERVICE DISCOVERYINTERNAL LOAD-BALANCING
SERVICE
app=payroll role=frontend
POD
app=payroll
role=frontend
POD
app=payroll
role=frontend
Name: payroll-frontendIP: 172.10.1.23Port: 8080
POD
app=payroll
role=backendversion=1.0 version=1.0
OPENSHIFT TECHNICAL OVERVIEW56
BUILT-IN SERVICE DISCOVERYINTERNAL LOAD-BALANCING
SERVICE
app=payroll role=frontend
POD
app=payroll
role=frontend
POD
app=payroll
role=frontend
POD
app=payroll
role=frontend
Name: payroll-frontendIP: 172.10.1.23Port: 8080
POD
app=payroll
role=backendversion=2.0 version=1.0 version=1.0
OPENSHIFT TECHNICAL OVERVIEW57
SERVICE
POD POD
ROUTER
POD
EXTERNAL TRAFFIC
INTERNAL TRAFFIC
ROUTE EXPOSES SERVICES EXTERNALLY
OPENSHIFT TECHNICAL OVERVIEW58
● Pluggable routing architecture○ HAProxy Router○ F5 Router
● Multiple-routers with traffic sharding● Router supported protocols
○ HTTP/HTTPS○ WebSockets○ TLS with SNI
● Non-standard ports via cloud load-balancers, external IP, and NodePort
ROUTING AND EXTERNAL LOAD-BALANCING
OPENSHIFT TECHNICAL OVERVIEW59
ROUTE SPLIT TRAFFIC
SERVICE A
App A App A
SERVICE B
App B App B
ROUTE
10% traffic90% traffic
Split Traffic Between Multiple Services For A/B Testing, Blue/Green and Canary Deployments
OPENSHIFT TECHNICAL OVERVIEW
● NodePort binds a service to a unique port on all the nodes
● Traffic received on any node redirects to a node with the running service
● Ports in 30K-60K range which usually differs from the service
● Firewall rules must allow traffic to all nodes on the specific port
60
EXTERNAL TRAFFIC TO A SERVICE ON A RANDOM PORT WITH NODEPORT
NODE192.10.0.12
NODE192.10.0.11
NODE192.10.0.10
SERVICE
INT IP: 172.1.0.20:90
POD
10.1.0.1:90
POD
10.1.0.2:90
POD
10.1.0.3:90
connect192.10.0.10:31421192.10.0.11:31421192.10.0.12:31421
CLIENT
OPENSHIFT TECHNICAL OVERVIEW
NODE192.10.0.12
NODE192.10.0.11
NODE192.10.0.10
61
EXTERNAL TRAFFIC TO A SERVICE ON ANY PORT WITH INGRESS
SERVICE
EXT IP: 200.1.0.10:90INT IP: 172.1.0.20:90
POD
10.1.0.1:90
POD
10.1.0.2:90
POD
10.1.0.3:90
connect200.1.0.10:90
CLIENT● Access a service with an external IP on any TCP/UDP port, such as○ Databases○ Message Brokers
● Automatic IP allocation from a predefined pool using Ingress IP Self-Service
● IP failover pods provide high availability for the IP pool
OPENSHIFT TECHNICAL OVERVIEW62
CONTROL OUTGOING TRAFFIC SOURCE IP WITH EGRESS ROUTER
NODEIP1
EGRESSROUTER
PODIP1
EGRESS SERVICEINTERNAL-IP:8080
EXTERNAL SERVICE
Whitelist: IP1
POD
POD
POD
OPENSHIFT TECHNICAL OVERVIEW63
● Built-in internal DNS to reach services by name
● Split DNS is supported via SkyDNS○ Master answers DNS queries for internal services○ Other name servers serve the rest of the queries
● Software Defined Networking (SDN) for a unified cluster network to enable pod-to-pod communication
● OpenShift follows the Kubernetes Container Networking Interface (CNI) plug-in model
OPENSHIFT NETWORKING
OPENSHIFT TECHNICAL OVERVIEW64
OPENSHIFT NETWORK PLUGINS
OpenShift SDN
(OVS)
OPENSHIFT
KUBERNETES CNI
Flannel** NuageTigera
Calico & CNX
JuniperContrail
CiscoContiv &
Contiv-ACIBig Switch
Fully Supported Validated
VMwareNSX-T
In-Progress
DEFAULT
kuryr-kubernetes
OpenShift SDN
(OVN*)
* Coming as default in OCP 4.1** Flannel is minimally verified and is supported only and exactly as deployed in the OpenShift on OpenStack reference architecture
OpenDaylight(CNI & Kuryr)
RH-OSPNeutronPlugin
OPENSHIFT TECHNICAL OVERVIEW
NODE172.16.1.10
65
OPENSHIFT NETWORKING
POD10.1.2.2
POD10.1.2.4
NODE172.16.1.20
POD10.1.4.2
POD10.1.4.4
IP Network
VxLAN Overlay Network
OPENSHIFT TECHNICAL OVERVIEW
FLAT NETWORK (Default)
● All pods can communicate with each other across projects
MULTI-TENANT NETWORK
● Project-level network isolation● Multicast support● Egress network policies
NETWORK POLICY
● Granular policy-based isolation
66
OPENSHIFT SDN
NODE
POD POD
PODPOD
NODE
POD POD
PODPOD
PROJECT A PROJECT B
DEFAULT NAMESPACE
✓
PROJECT C
Multi-Tenant Network
OPENSHIFT TECHNICAL OVERVIEW
PROJECT A
67
OPENSHIFT SDN - NETWORK POLICY
POD
POD
POD
POD
PROJECT B
POD
POD
POD
POD
Example Policies● Allow all traffic inside the project● Allow traffic from green to gray● Allow traffic to purple on 8080
✓
✓
8080
5432
✓
apiVersion: extensions/v1beta1kind: NetworkPolicymetadata:
name: allow-to-purple-on-8080spec:
podSelector:matchLabels:
color: purpleingress:- ports:
- protocol: tcpport: 8080
✓
OPENSHIFT TECHNICAL OVERVIEW
Container to Container on the Same Host
68
OPENSHIFT SDN - OVS PACKET FLOW
NODE
POD 1veth0
10.1.15.2/24
br010.1.15.1/24
192.168.0.100
eth0
POD 2veth1
10.1.15.3/24
vxlan0
OPENSHIFT TECHNICAL OVERVIEW
NODE 2
NODE 1
69
OPENSHIFT SDN - OVS PACKET FLOW
POD 1veth0
10.1.15.2/24br0
10.1.15.1/24vxlan0
POD 2veth0
10.1.20.2/24br0
10.1.20.1/24vxlan0
192.168.0.100
eth0
192.168.0.200
eth0
Container to Container on the Different Hosts
OPENSHIFT TECHNICAL OVERVIEW
Container Connects to External Host
Container to Container on Different Hosts
70
OPENSHIFT SDN - OVS PACKET FLOW
NODE 1
POD 1veth0
10.1.15.2/24br0
10.1.15.1/24tun0
192.168.0.100
ExternalHost
eth0
OPENSHIFT TECHNICAL OVERVIEW71
OPENSHIFT SDN WITH FLANNEL FOR OPENSTACK
NODE 1
POD 1veth0
10.1.15.2/24docker0
10.1.15.1/24Routing Table
flanneld
NODE 2
POD 2veth0
10.1.20.2/24docker0
10.1.20.1/24Routing Table
flanneld
etcd
192.168.0.100
eth0
192.168.0.200
eth0
Flannel is minimally verified and is supported only and exactly as deployed in the OpenShift on OpenStack reference architecture https://access.redhat.com/articles/2743631
OPENSHIFT TECHNICAL OVERVIEW73
● EFK stack to aggregate logs for hosts and applications
○ Elasticsearch: a search and analytics engine to store logs
○ Fluentd: gathers logs and sends to Elasticsearch.
○ Kibana: A web UI for Elasticsearch.
● Access control
○ Cluster administrators can view all logs
○ Users can only view logs for their projects
● Ability to send logs elsewhere
○ External elasticsearch, Splunk, etc
CENTRAL LOG MANAGEMENT WITH EFK
OPENSHIFT TECHNICAL OVERVIEW
CENTRAL LOG MANAGEMENT WITH EFK
APPLICATION LOGS
OPERATION LOGS
ELASTICELASTIC
74
RHEL
NODE
POD POD
PODPODFLUENTD
RHEL
NODE
POD POD
PODPOD
FLUENTD
ELASTICSEARCH
RHEL
NODE
POD POD
PODPOD
FLUENTD
USER
ELASTICELASTIC
KIBANA
ELASTICELASTICELASTICSEARCH
ELASTICELASTIC
KIBANA
ADMIN
OPENSHIFT TECHNICAL OVERVIEW
CONTAINER METRICS
76
RHEL
NODE
POD POD
PODPODFLUENTD
CONTAINER METRICS
RHEL
NODE
POD POD
PODPOD
FLUENTD
HEAPSTER
RHEL
NODE
POD POD
PODPOD
CADVISOR
HAWKULAR OPENSHIFTWEB CONSOLE
ELASTICELASTICCASSANDRA
RED HATCLOUDFORMS
CUSTOMDASHBOARDS
API
USER
OPENSHIFT TECHNICAL OVERVIEW78
AUTOMATED & INTEGRATED SECURITY
Container Content
Container Registry
CI/CD Pipeline
Deployment Policies
Security Ecosystem
CONTROLApplication Security
DEFENDInfrastructure
EXTEND
Container Host Multi-tenancyContainer Platform
Network Isolation Storage
Audit & Logging API Management
OPENSHIFT TECHNICAL OVERVIEW
NODE
MASTER● Secure mechanism for holding sensitive data e.g.
○ Passwords and credentials○ SSH Keys○ Certificates
● Secrets are made available as○ Environment variables○ Volume mounts○ Interaction with external systems
● Encrypted in transit and at rest
● Never rest on the nodes
79
SECRET MANAGEMENT
Container
Distributed Store
Container
OPENSHIFT TECHNICAL OVERVIEW80
CheckExpiry
RedeployCerts
CERTIFICATE MANAGEMENT
● Certificates are used to provide secure connections to
○ master and nodes○ router and registry○ etcd
● Ansible playbooks to automate redeployment
● Redeploy all at once or specific components
● Certificate expiry report generator
MASTER
NODES
ROUTER
REGISTRY
ETCD
✓✓✓✓✓
AnsiblePlaybook
OPENSHIFT TECHNICAL OVERVIEW81
CERTIFICATE CHECKS
● master and nodes
● router and registry service certificates from etcd secrets
● master, node, router, registry, and kubeconfig files for cluster-admin users
● etcd certificates
CERTIFICATE EXPIRY REPORT
OPENSHIFT TECHNICAL OVERVIEW83
● Persistent Volume (PV) is tied to a piece of network storage● Provisioned by an administrator (static or dynamically)● Allows admins to describe storage and users to request storage● Assigned to pods based on the requested size, access mode, labels and type
PERSISTENT STORAGE
NFS
GlusterFS
OpenStack Cinder
Ceph RBD
AWS EBS
GCE Persistent Disk
iSCSI
Fiber Channel
Azure Disk
Azure File
FlexVolume
VMWare vSphere VMDK
Container Storage Interface
(CSI)*** Shipped and supported by NetApp via TSANet** Tech Preview
NetApp Trident*
OPENSHIFT TECHNICAL OVERVIEW
PROJECT
POOL OF PERSISTENT VOLUMES
84
PERSISTENT STORAGE
NFSPV
iSCSIPV
NFSPV
Admin
User
register PV
create claim
NFSPV
GlusterFSPV
Pod
claim
Pod
claim
Pod
claim
CephRBDPV
OPENSHIFT TECHNICAL OVERVIEW85
DYNAMIC VOLUME PROVISIONING
Admin
User
define StorageClass
create claim: Fastest
SlowAzure-Disk
FastAWS-SSD
FastestNetApp-Flash
NetAppProvisioner
AWSProvisioner
Pod
claim
PV
OpenShiftPV Controller
provision
AzureProvisioner
bound
OPENSHIFT TECHNICAL OVERVIEW86
● Containerized Red Hat Gluster Storage
● Native integration with OpenShift
● Unified Orchestration using Kubernetes for
applications and storage
● Greater control & ease of use for developers
● Lower TCO through convergence
● Single vendor Support DISTRIBUTED, SECURE, SCALE-OUT STORAGE CLUSTER
APPLICATIONCONTAINER
APPLICATION CONTAINER
APPLICATION CONTAINER
STORAGECONTAINER
STORAGECONTAINER
STORAGECONTAINER
OPENSHIFT CONTAINER STORAGE
OPENSHIFT TECHNICAL OVERVIEW
NODENODENODE
OPENSHIFT CONTAINER STORAGE
87
NODE
POD POD POD POD POD POD POD
POD POD POD
RHGS RHGS RHGS
POD POD POD
MASTER
OPENSHIFT TECHNICAL OVERVIEW89
WHY A SERVICE BROKER?
SERVICE CONSUMER
SERVICE PROVIDER
☑ Open ticket☑ Wait for allocation
☑ Receive credentials☑ Add to app☑ Deploy app
Manual, Time-consuming and Inconsistent
OPENSHIFT TECHNICAL OVERVIEW90
A multi-vendor project to standardize how services are consumed on cloud-native platforms across service providers
OPENSHIFT TECHNICAL OVERVIEW91
WHAT IS A SERVICE BROKER?
SERVICE CONSUMER
SERVICE PROVIDER
SERVICE CATALOG
SERVICE BROKER
Automated, Standard and Consistent
OPENSHIFT TECHNICAL OVERVIEW92
OPENSHIFT SERVICE CATALOG
OPENSHIFT SERVICE CATALOG
OpenShift AutomationBroker
OpenShiftTemplateBroker
AWSServiceBroker
OtherServiceBrokers
ANSIBLE
OPENSHIFT
AWS
OTHER COMPATIBLE SERVICES
Ansible Playbook Bundles
OpenShiftTemplates
AWSServices
OtherServices
OPENSHIFT TECHNICAL OVERVIEW93
SERVICE BROKER CONCEPTS
SERVICE CONSUMER
SERVICE PROVIDER
SERVICE CATALOG
SERVICE BROKER
SERVICE: an offering that can be used by an app e.g. database
PLAN: a specific flavor of a service e.g. Gold Tier
SERVICE INSTANCE: an instance of the offering
PROVISION: creating a service instance
BIND: associate a service instance and its credentials to an app
OPENSHIFT TECHNICAL OVERVIEW
● Deploy service broker on or off OpenShift
● Register the broker referring to the deployed broker
● Register the broker services by creating ServiceClass resources(the service broker might automatically perform this step)
94
HOW TO ADD A SERVICE BROKER
apiVersion: servicecatalog.k8s.io/v1alpha1kind: Brokermetadata:name: asb-broker
spec:url: https://asb-1338-ansible-service-broker.10.2.2.15.nip.io
OPENSHIFT TECHNICAL OVERVIEW95
● Exposes Templates and Instant Apps in the Service Catalog
● Pulled from openshift namespace by default
● Multiple namespaces can be configured for template discovery
TEMPLATE SERVICE BROKER
OPENSHIFT TECHNICAL OVERVIEW96
TEMPLATE SERVER BROKER PROVISIONING
Template Service Broker
Node.jsContainer
openshiftnamespace
nodejs-template
OpenShift Service Catalog
Service Broker creates a the objects from the template
OPENSHIFT TECHNICAL OVERVIEW97
TEMPLATE SERVICE BROKERBINDING
Template Service Broker
Node.jsContainer
openshiftnamespace
nodejs-template
OpenShift Service Catalog
create binding
Service Broker creates a binding and secret for any credentials (config map, secret, etc) created by the template
OPENSHIFT TECHNICAL OVERVIEW98
OPENSHIFT ANSIBLE BROKER
● Use Ansible on OpenShift
○ Deploy containerized applications○ Provision external services (e.g. Oracle database)○ Provision cloud services (e.g. AWS RDS)○ Orchestrate multi-service solutions○ Conditional logic for control on deployments (e.g. database is initialized)
● Leverage existing Ansible playbooks
● Anything you can do with Ansible, you can do with OAB
OPENSHIFT TECHNICAL OVERVIEW99
● Lightweight application definition
● Packaged as a container image
● Embedded Ansible runtime
● Metadata for parameters
● Named playbooks for actions
● Leverage existing Ansible playbooks
● Registry is queried to discover APBs
ANSIBLE PLAYBOOK BUNDLES (APB)
Ansible Playbook Bundle (Container Image)
Ansible Runtime
├─ roles├─ playbooks│ ├─ provision.yaml│ ├─ unprovision.yaml│ ├─ bind.yaml│ └─ unbind.yaml└─ apb.yaml
OPENSHIFT TECHNICAL OVERVIEW100
OpenShift Ansible Broker
Red Hat Container Catalog
Docker H
ubO
penShift Registry
mediawiki-apb
postgresql-apb Discover and list APBs from the configured image registries
OpenShift Service Catalog
OPENSHIFT ANSIBLE BROKER PROVISIONING
OPENSHIFT TECHNICAL OVERVIEW101
OpenShift Ansible Broker
APBContainer(postgresql)
oc run postgresql-apb provision $vars
Pull APB image and run it with the broker action as a parameter
Red Hat Container Catalog
Docker H
ubO
penShift Registry
mediawiki-apb
postgresql-apb
OpenShift Service Catalog
OPENSHIFT ANSIBLE BROKER PROVISIONING
OPENSHIFT TECHNICAL OVERVIEW102
Ansible Service Broker
APBContainer(postgresql)
oc run postgresql-apb provision $vars ansible-playbook provision.yaml $vars
PostgreSQL
Container
APB container runsprovision.yamlplaybook to create a PostgreSQL container
Red Hat Container Catalog
Docker H
ubO
penShift Registry
mediawiki-apb
postgresql-apb
OpenShift Service Catalog
OpenShift Service Catalog
OpenShift Ansible Broker
PostgreSQL
Container
Red Hat Container Catalog
Docker H
ubO
penShift Registry
mediawiki-apb
postgresql-apb
OPENSHIFT ANSIBLE BROKER PROVISIONING
OPENSHIFT TECHNICAL OVERVIEW103
OpenShift Ansible Broker
APBContainer(postgresql)
PostgreSQL
Container
APB container runsbind.yamlplaybook to create database user
oc run postgresql-apb bind $vars ansible-playbook bind.yaml $vars
Red Hat Container Catalog
Docker H
ubO
penShift Registry
mediawiki-apb
postgresql-apb
MediaWikiContainer
OpenShift Service Catalog
OPENSHIFT ANSIBLE BROKER BINDING
OPENSHIFT TECHNICAL OVERVIEW104
OpenShift Ansible Broker
PostgreSQL
Container
Red Hat Container Catalog
Docker H
ubO
penShift Registry
mediawiki-apb
postgresql-apb
MediaWikiContainer
OpenShift Service Catalog
mount binding secret
Service Catalog creates a secret for the binding, containing the database credentials
OPENSHIFT ANSIBLE BROKER BINDING
OPENSHIFT TECHNICAL OVERVIEW105
OpenShift Ansible Broker
PostgreSQL
Container
APB container goes away and Service Broker creates a binding for the PostgreSQL service
Red Hat Container Catalog
Docker H
ubO
penShift Registry
mediawiki-apb
postgresql-apb
create bindingMediaWikiContainer
OpenShift Service Catalog
OPENSHIFT ANSIBLE BROKER BINDING
OPENSHIFT TECHNICAL OVERVIEW106
OpenShift Ansible Broker
PostgreSQL
Container
MediaWiki container uses the credentials in the secret to connect to the PostgreSQL database
Red Hat Container Catalog
Docker H
ubO
penShift Registry
mediawiki-apb
postgresql-apb
MediaWikiContainer
OpenShift Service Catalog
mount binding secret
OPENSHIFT ANSIBLE BROKER BINDING
OPENSHIFT TECHNICAL OVERVIEW107
AWS SERVICE BROKER
● Amazon Athena● Amazon DynamoDB● Amazon ElastiCache● Amazon EMR● Amazon Kinesis Data Streams● Amazon KMS● Amazon Lex● Amazon Polly● Amazon RDS for MariaDB● Amazon RDS for MySQL● Amazon RDS for PostgreSQL● Amazon RedShift● Amazon Rekognition● Amazon Route 53● Amazon S3● Amazon SNS● Amazon SQS● Amazon Translate
OPENSHIFT TECHNICAL OVERVIEW108
AWS PROVISIONING
AWSRDS
Compatible D
ocker R
egistries
oc run rds-apb provision $vars ansible-playbook provision.yaml $vars
APB container runsprovision.yaml playbook to interact with CFN and create RDS instance
OpenShift Service Catalog
APBContainer
(rds)
OpenShift Ansible Broker
AWS ECR
s3-apb
rds-apb
AWS Cloud
Formation
OPENSHIFT TECHNICAL OVERVIEW109
AZURE SERVICE BROKER
Available on OpenShift on Azure managed-service and Azure Stack● Azure Cosmos DB● Azure KeyVault● Azure Storage● Azure Redis Cache● Azure DocumentDB● Azure Service Bus and Event Hub● Azure SQL Database● Azure SQL Database Failover Group● Azure Database for MySQL ● Azure Database for PostgreSQL
OPENSHIFT TECHNICAL OVERVIEW111
KUBERNETES OPERATOR FRAMEWORK
Operator Framework is an open source toolkit to manage application instances on Kubernetes in an effective, automated and scalable way.
Installation Upgrade Backup Failure recovery
Metrics& insights Tuning
AUTOMATED LIFECYCLE MANAGEMENT
OPENSHIFT TECHNICAL OVERVIEW112
KUBERNETES OPERATOR FRAMEWORK
Operators codify operational knowledge and workflows to automate lifecycle management of containerized applications with Kubernetes
SDK LIFECYCLE MANAGEMENT METERING
OPENSHIFT TECHNICAL OVERVIEW113
WHY OPERATOR FRAMEWORK?
DEVELOPER DEPLOY
STATEFUL APP
A WHILE
LATER
APP SERVICES OPERATIONS
UPDATEPATCHBACKUPREBALANCESCALE
DEPLOY
STATEFUL APP
UPDATEPATCHBACKUPREBALANCESCALE
APPOPERATORDEVELOPER
OPENSHIFT TECHNICAL OVERVIEW115
OPERATOR METERING
● Based on Prometheus
● Reports namespace, pods and custom label query
● Easy to process by accounting or custom software
OPENSHIFT TECHNICAL OVERVIEW116
THE INDUSTRY IS ALIGNING BEHIND THE KUBERNETES OPERATOR FRAMEWORK
60+ Certified ISV Operators in Red Hat Early Access Program
OPENSHIFT TECHNICAL OVERVIEW
Application Release Strategies with OpenShift
Building Polyglot Microservices on OpenShift
Building JBoss EAP 6 Microservices on OpenShift
Building JBoss EAP 7 Microservices on OpenShift
Business Process Management with JBoss BPMS on OpenShift
Build and Deployment of Java Applications on OpenShift
Building Microservices on OpenShift with Fuse Integration...
JFrog Artifactory on OpenShift Container Platform
Spring Boot Microservices on Red Hat OpenShift
API Management with Red Hat 3scale on OpenShift
App CI/CD on OCP with Jenkins
OpenShift on VMware vCenter
OpenShift on Red Hat OpenStack Platform
OpenShift on Amazon Web Services
OpenShift on Google Cloud Platform
OpenShift on Microsoft Azure
OpenShift on Red Hat Virtualization
OpenShift on HPE Servers with Ansible Tower
OpenShift on VMware vCenter 6 with Gluster
Deploying an OpenShift Distributed Architecture
OpenShift Architecture and Deployment Guide
OpenShift Scaling, Performance, and Capacity Planning
118
REFERENCE ARCHITECTURES
OPENSHIFT TECHNICAL OVERVIEW120
BUILD AND DEPLOY CONTAINER IMAGES
DEPLOY YOURSOURCE CODE
DEPLOY YOURCONTAINER IMAGE
DEPLOY YOURAPP BINARY
OPENSHIFT TECHNICAL OVERVIEW121
DEPLOY SOURCE CODE WITH SOURCE-TO-IMAGE (S2I)
GitRepositoryBUILD APP
(OpenShift) Developer
code
Source-to-Image(S2I)
Builder Image
ImageRegistry
BUILD IMAGE(OpenShift)
DEPLOY(OpenShift)
deployApplication Container
OpenShift DoesUser/Tool Does
OPENSHIFT TECHNICAL OVERVIEW122
DEPLOY APP BINARY WITH SOURCE-TO-IMAGE (S2I)
ApplicationBinary
(e.g. WAR)BUILD APP(Build Infra) Existing Build
Process
build
Source-to-Image(S2I)
Builder Image
ImageRegistry
BUILD IMAGE(OpenShift)
DEPLOY(OpenShift)
deployApplication Container
OpenShift DoesUser/Tool Does
OPENSHIFT TECHNICAL OVERVIEW
DEPLOY(Openshift)
123
DEPLOY DOCKER IMAGEbuild
Application Container
deploy
Application Image
ImageRegistry
BUILD IMAGE (Build Infra) Existing Image
Build Process
PUSH(Build Infra)
OpenShift DoesUser/Tool Does
OPENSHIFT TECHNICAL OVERVIEW
BUILD STAGE 3
BUILD STAGE 2
BUILD STAGE 1
124
BUILD IMAGES IN MULTIPLE STAGES
OPENSHIFT TECHNICAL OVERVIEW125
EXAMPLE: USE ANY RUNTIME IMAGE WITH SOURCE-TO-IMAGE BUILDS
DOCKER BUILDWILDFLY S2I BUILD app.war
WildFly S2IBuilder Image
WildFly Runtime Image
Use Source-to-Image to build app binaries and deploy on lean vanilla runtimes
read more on https://blog.openshift.com/chaining-builds/
OPENSHIFT TECHNICAL OVERVIEW126
EXAMPLE: USE ANY BUILD TOOL WITH OFFICIAL RUNTIME IMAGES
DOCKER BUILDCUSTOM GRADLE BUILD
CustomGradle S2IBuilder Image
Red HatOpenJDKImage
Use your choice of build tool like Gradle and deploy to official images like the JDK image
read more on https://blog.openshift.com/chaining-builds/
app.war
OPENSHIFT TECHNICAL OVERVIEW127
EXAMPLE: SMALL LEAN RUNTIMES
DOCKER BUILDCUSTOM GO BUILD
CustomGo S2IBuilder Image
ScratchImage
Build the app binary and deploy on small scratch images
read more on https://blog.openshift.com/chaining-builds/
app
OPENSHIFT TECHNICAL OVERVIEW
CI/CD WITH BUILD AND DEPLOYMENTS
129
BUILDS● Webhook triggers: build the app image whenever the code changes● Image trigger: build the app image whenever the base language or app runtime changes● Build hooks: test the app image before pushing it to an image registry
DEPLOYMENTS● Deployment triggers: redeploy app containers whenever configuration changes or the
image changes in the OpenShift integrated registry or upstream registries
OPENSHIFT TECHNICAL OVERVIEW130
CONTINUOUS DELIVERY WITH CONTAINERS
sourcerepository
CI/CDengine
dev container
physical
virtual
private cloud
public cloud
OPENSHIFT TECHNICAL OVERVIEW131
OPENSHIFT LOVES CI/CD
JENKINS-AS-A SERVICEON OPENSHIFT
HYBRID JENKINS INFRA WITH OPENSHIFT
EXISTING CI/CD DEPLOY TO OPENSHIFT
OPENSHIFT TECHNICAL OVERVIEW132
JENKINS-AS-A-SERVICE ON OPENSHIFT
● Certified Jenkins images with pre-configured plugins○ Provided out-of-the-box○ Follows Jenkins 1.x and 2.x LTS versions
● Jenkins S2I Builder for customizing the image○ Install Plugins○ Configure Jenkins○ Configure Build Jobs
● OpenShift plugins to integrate authentication with OpenShift and also CI/CD pipelines
● Dynamically deploys Jenkins slave containers
PluginsJobs
Configuration
Jenkins(S2I)
CustomJenkinsImage
JenkinsImage
OPENSHIFT TECHNICAL OVERVIEW
● Scale existing Jenkins infrastructure by dynamically provisioning Jenkins slaves on OpenShift
● Use Kubernetes plug-in on existing Jenkin servers
133
HYBRID JENKINS INFRA WITH OPENSHIFT
OPENSHIFT
APP APPrun jobJENKINSSLAVE
Run Job
JENKINSSLAVE
Run Job
build
JENKINSMASTER
deploy
OPENSHIFT TECHNICAL OVERVIEW
● Existing CI/CD infrastructure outside OpenShift performs operations against OpenShift○ OpenShift Pipeline Jenkins Plugin for Jenkins○ OpenShift CLI for integrating other CI Engines with OpenShift
● Without disrupting existing processes, can be combined with previous alternative
134
EXISTING CI/CD DEPLOY TO OPENSHIFT
OPENSHIFT
APPEXISTING
CI/CD INFRA
Jenkins, Bamboo, TeamCity, etc
APPbuild
deploy
S2IBuildrun job
OPENSHIFT TECHNICAL OVERVIEW135
OPENSHIFT PIPELINES
● OpenShift Pipelines allow defining a CI/CD workflow via a Jenkins pipeline which can be started, monitored, and managed similar to other builds
● Dynamic provisioning of Jenkins slaves
● Auto-provisioning of Jenkins server
● OpenShift Pipeline strategies○ Embedded Jenkinsfile○ Jenkinsfile from a Git repository
apiVersion: v1kind: BuildConfigmetadata:
name: app-pipelinespec:
strategy:type: JenkinsPipelinejenkinsPipelineStrategy:
jenkinsfile: |-node('maven') {
stage('build app') {git url: 'https://git/app.git'sh "mvn package"
}stage('build image') {
sh "oc start-build app --from-file=target/app.jar
}stage('deploy') {
openshiftDeploy deploymentConfig: 'app'}
}
Provision a Jenkins slave for running Maven
OPENSHIFT TECHNICAL OVERVIEW
APPLICATIONIMAGE
137
CONTINUOUS DELIVERY PIPELINE
DEV TEAM GIT SERVER ARTIFACT REPOSITORY
JENKINSIMAGE BUILD
● S2I build from source code● S2I build from app binary● Existing docker container image
build process
OPENSHIFT TECHNICAL OVERVIEW
CONTINUOUS DELIVERY PIPELINE
OPENSHIFTIMAGE
REGISTRY
OPENSHIFTCLUSTER
138
DEVELOPER GIT SERVER ARTIFACT REPOSITORY
OPENSHIFT CI/CD PIPELINE (JENKINS)
IMAGE BUILD & DEPLOY
OPENSHIFTIMAGEREGISTRY
OPENSHIFTCLUSTER
NON-PROD PRODDEV
OPENSHIFT TECHNICAL OVERVIEW
OPENSHIFTIMAGE
REGISTRY
OPENSHIFTCLUSTER
139
CONTINUOUS DELIVERY PIPELINEDEVELOPER GIT SERVER ARTIFACT REPOSITORY
OPENSHIFT CI/CD PIPELINE (JENKINS)
IMAGE BUILD & DEPLOY
OPENSHIFTIMAGEREGISTRY
OPENSHIFTCLUSTER
PROMOTETO TEST
NON-PROD PRODDEV TEST
OPENSHIFT TECHNICAL OVERVIEW
OPENSHIFTIMAGE
REGISTRY
OPENSHIFTCLUSTER
140
CONTINUOUS DELIVERY PIPELINEDEVELOPER GIT SERVER ARTIFACT REPOSITORY
OPENSHIFT CI/CD PIPELINE (JENKINS)
IMAGE BUILD & DEPLOY
OPENSHIFTIMAGEREGISTRY
OPENSHIFTCLUSTER
PROMOTETO TEST
PROMOTETO UAT
NON-PROD PRODDEV TEST UAT
OPENSHIFT TECHNICAL OVERVIEW
ServiceNowJIRA Service DeskZendeksBMC Remedy
OPENSHIFTIMAGE
REGISTRY
OPENSHIFTCLUSTER
141
CONTINUOUS DELIVERY PIPELINEDEVELOPER GIT SERVER ARTIFACT REPOSITORY
OPENSHIFT CI/CD PIPELINE (JENKINS)
IMAGE BUILD & DEPLOY
OPENSHIFTIMAGEREGISTRY
OPENSHIFTCLUSTER
GOLIVE?
PROMOTETO TEST
PROMOTETO UAT
RELEASE MANAGER
NON-PROD PROD
☒
DEV TEST UAT
OPENSHIFT TECHNICAL OVERVIEW
OPENSHIFTIMAGE
REGISTRY
OPENSHIFTCLUSTER
142
CONTINUOUS DELIVERY PIPELINEGIT SERVER ARTIFACT REPOSITORY
OPENSHIFT CI/CD PIPELINE (JENKINS)
IMAGE BUILD & DEPLOY
OPENSHIFTIMAGEREGISTRY
OPENSHIFTCLUSTER
GOLIVE?
PROMOTETO TEST
PROMOTETO UAT
PROMOTETO PROD
RELEASE MANAGER
NON-PROD PRODDEV TEST UAT
☒
DEVELOPER
OPENSHIFT TECHNICAL OVERVIEW144
WHAT IF THERE ARE EXISTING DELIVERY PROCESSES?
BUILD APP BINARY
RUN TESTS
PROMOTE APPBINARY
BUILD CONTAINER IMAGE
RUN TESTS
PROMOTE CONTAINER
IMAGESOURCEVERSION CONTROL
ENTERPRISEBINARY REPO
ENTERPRISEIMAGE REGISTRY
OPENSHIFT TECHNICAL OVERVIEW145
WHAT IF THERE ARE EXISTING DELIVERY PROCESSES?
BUILD APP BINARY
RUN TESTS
PROMOTE APPBINARY
BUILD CONTAINER IMAGE
RUN TESTS
PROMOTE CONTAINER
IMAGESOURCEVERSION CONTROL
ENTERPRISEBINARY REPO
AWS ECR
ENTERPRISEIMAGE REGISTRY
OPENSHIFT TECHNICAL OVERVIEW146
ENRICHING EXISTING DELIVERY PROCESSES WITH OPENSHIFT
OPENSHIFTCLUSTER
EXISTINGDELIVERYPROCESS
DEPLOY DEPLOY DEPLOY
OPENSHIFT TECHNICAL OVERVIEW147
ENRICHING EXISTING DELIVERY PROCESSES WITH OPENSHIFT
OPENSHIFTIMAGE
REGISTRY
OPENSHIFTCLUSTER
OPENSHIFTIMAGEREGISTRY
OPENSHIFTCLUSTER
NON-PROD PRODDEV TEST UAT
EXISTINGDELIVERYPROCESS
ENTERPRISEIMAGEREGISTRY
OPENSHIFT TECHNICAL OVERVIEW149
CONTINUOUSDELIVERYPIPELINE
HYBRID APPLICATION AUTOMATIONWITH OPENSHIFT AND ANSIBLE
VIRTUAL MACHINE
VIRTUAL MACHINE
AWS Azure Google CloudOpenStackVMware RHEVHyper V
DEV PROD - REGION A PROD - REGION B
OPENSHIFT TECHNICAL OVERVIEW151
LOCAL DEVELOPMENT WORKFLOW
DevelopLocal
Deploy Verify Git Push PipelineBootstrap
OPENSHIFT TECHNICAL OVERVIEW
BOOTSTRAP
● Pick your programming language and application runtime of choice● Create the project skeleton from scratch or use a generator such as
○ Maven archetypes○ Quickstarts and Templates○ OpenShift Generator○ Spring Initializr
152
LOCAL DEVELOPMENT WORKFLOW
DevelopLocal
Deploy Verify Git Push PipelineBootstrap
OPENSHIFT TECHNICAL OVERVIEW153
DEVELOP
● Pick your framework of choice such as Java EE, Spring, Ruby on Rails, Django, Express, ...● Develop your application code using your editor or IDE of choice● Build and test your application code locally using your build tools● Create or generate OpenShift templates or Kubernetes objects
LOCAL DEVELOPMENT WORKFLOW
DevelopLocal
Deploy Verify Git Push PipelineBootstrap
OPENSHIFT TECHNICAL OVERVIEW154
LOCAL DEPLOY
● Deploy your code on a local OpenShift cluster○ Red Hat Container Development Kit (CDK), minishift and oc cluster
● Red Hat CDK provides a standard RHEL-based development environment● Use binary deploy, maven or CLI rsync to push code or app binary directly into
containers
LOCAL DEVELOPMENT WORKFLOW
DevelopLocal
Deploy Verify Git Push PipelineBootstrap
OPENSHIFT TECHNICAL OVERVIEW155
VERIFY
● Verify your code is working as expected● Run any type of tests that are required with or without other components (database, etc)● Based on the test results, change code, deploy, verify and repeat
LOCAL DEVELOPMENT WORKFLOW
DevelopLocal
Deploy Verify Git Push PipelineBootstrap
OPENSHIFT TECHNICAL OVERVIEW156
GIT PUSH
● Push the code and configuration to the Git repository● If using Fork & Pull Request workflow, create a Pull Request● If using code review workflow, participate in code review discussions
LOCAL DEVELOPMENT WORKFLOW
DevelopLocal
Deploy Verify Git Push PipelineBootstrap
OPENSHIFT TECHNICAL OVERVIEW
PIPELINE
● Pushing code to the Git repository triggers one or multiple deployment pipelines● Design your pipelines based on your development workflow e.g. test the pull request● Failure in the pipeline? Go back to the code and start again
157
LOCAL DEVELOPMENT WORKFLOW
DevelopLocal
Deploy Verify Git Push PipelineBootstrap
OPENSHIFT TECHNICAL OVERVIEW159
A PLATFORM THAT GROWS WITH YOUR BUSINESS
Data Virtualization
Real Time Decision
IntelligentProcess
Integration Messaging Data Grid
Java EE Application
WebApplication
SingleSign-On MobileAPI
Management
Micro services
OPENSHIFT TECHNICAL OVERVIEW
CrunchyData
GitLab
Iron.io
Couchbase
Sonatype
EnterpriseDB
NuoDB
Fujitsuand many more
160
...and virtually any docker
image out there!
TRUE POLYGLOT PLATFORM
PHPPythonJava NodeJS Perl Ruby.NETCore
ApacheHTTPServer
MySQL Redis
nginx TomcatVarnish
JBossEAP
JBossA-MQ
JBossFuse
JBossBRMS
JBossBPMS
JBossData Grid
JBossData Virt
RH Mobile
RH SSO3SCALE
API mgmt
JBossWeb
Server
SpringBoot
Wildfly Swarm
Vert.x
PostgreSQL MongoDB
Phusion Passenger
Third-partyLanguage Runtimes
Third-partyDatabases
Third-partyApp
Runtimes
Third-partyMiddleware
Third-partyMiddleware
LANGUAGES
DATABASES
WEB SERVERS
MIDDLEWARE
OPENSHIFT TECHNICAL OVERVIEW161
Modern, Cloud-Native Application Runtimes and an Opinionated Developer Experience
OPENSHIFT
SUPPORTED RUNTIMES
Eclipse Vert.x WildFly Swarm Node.js
LAUNCH
Spring Boot JBoss EAP
OPENSHIFT TECHNICAL OVERVIEW163
WHAT DO YOU NEED FOR MICROSERVICES?
Visibility & Reporting
Resilience & Fault Tolerance
Routing & Traffic Control
Identity & Security
Policy Enforcement
OPENSHIFT TECHNICAL OVERVIEW164
WHAT YOU NEED FOR MICROSERVICES?
Visibility & Reporting
Resilience & Fault Tolerance
Routing & Traffic Control
Identity & Security
Policy Enforcement
Infrastructure
Microservice
Service Discovery Load Balancing
Circuit Breaker Traffic Control
Monitoring Tracing
Business Logic
Netflix OSSConfig Server Security Policies
Service Registry Traffic Control
Monitoring Tracing
API Magenement Smart Routing
OPENSHIFT TECHNICAL OVERVIEW165
MICROSERVICES EVOLUTION
Platform
Microservice
Netflix OSS
Netflix OSS
Business Logic
Container Platform
Microservice
Business Logic
OPENSHIFT TECHNICAL OVERVIEW166
WHAT YOU NEED FOR MICROSERVICES?
Visibility & Reporting
Resilience & Fault Tolerance
Routing & Traffic Control
Identity & Security
Policy Enforcement
Istio
OPENSHIFT TECHNICAL OVERVIEW
Control Plane
167
WHAT IS ISTIO?a service mesh to connect, manage, and secure microservices
Pilot Mixer Auth
Data Plane
Pod
Envoy
App
Pod
Envoy
App
Pod
Envoy
App
Pod
Envoy
App
TECH PREVIEW OCP 3.10
OPENSHIFT TECHNICAL OVERVIEW168
Platform
Microservice
Service Discovery Load Balancing
Circuit Breaker Traffic Control
Monitoring Tracing
Business Logic
Netflix OSSConfig Server Security Policies
Service Registry Traffic Control
Monitoring Tracing
API Magenement Smart Routing
MicroserviceBusiness Logic
OpenShift + IstioConfig Server Load Balancing
Service Registry Traffic Control
Monitoring Tracing
API Magenement Smart Routing
Microservices App
Microservices App
NETFLIX OSS VS ISTIO
OPENSHIFT TECHNICAL OVERVIEW170
IMMUTABLE INFRASTRUCTURE WITH RED HAT COREOS
● Minimal Linux distribution
● Optimized for running containers
● Decreased attack surface
● Over-the-air automated updates
● Immutable foundation for OpenShift
● Bare-metal and cloud host configuration
OPENSHIFT TECHNICAL OVERVIEW171
AUTOMATED OPERATIONS
Infra provisioning
Embedded OS
Full-stack deployment
On-premises and cloud
Unified experience
Secure defaults
Network isolation
Signing and policies
Audit and logs
Multi-cluster aware
Monitoring and alerts
Zero downtime upgrades
Full-stack patch & upgrade
Vulnerability scanning
INSTALL HARDENDEPLOY OPERATE
AUTOMATED OPERATIONS
Fully automated day-1 and day-2 operations for Kubernetes