Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
pmamonto@redhat.com
5/08/2019
GENERAL DISTRIBUTION
ПРОБЛЕМА
Приложения требуют
сложной установки и
интеграции при каждом
развертывании
GENERAL DISTRIBUTION
РЕШЕНИЕ
Принятие стратегии
контейнеризации
приложений позволяет
легко доставлять и
развертывать
приложения
GENERAL DISTRIBUTION
ЧТО ТАКОЕ КОНТЕЙНЕРЫ?
INFRASTRUCTURE APPLICATIONS
4 GENERAL DISTRIBUTION
ВИРТУАЛЬНЫЕ МАШИНЫ И КОНТЕЙНЕРЫ
GENERAL DISTRIBUTION
ВИРТУАЛЬНЫЕ МАШИНЫ И КОНТЕЙНЕРЫ
GENERAL DISTRIBUTION
ПРОБЛЕМА
GENERAL DISTRIBUTION
РЕШЕНИЕ
Контейнеры
Практики
DevOps
GENERAL DISTRIBUTION
РЕШЕНИЕ
Container
Зона
App ответственности
Dev
Operating System
GENERAL DISTRIBUTION
physical
DEVOPS
virtual
private cloud
public cloud
GENERAL DISTRIBUTION
Как развернуть на несколько серверов,
центров обработки данных?
?
Как контейнеры поставляются в вашу инфраструктуру?
Как и где хранить образы контейнеров, чтобы они были доступны всем хостам?
Какой контейнер должен быть развернут на каком хосте?
У какого хоста больше аппаратных возможностей?
Как контролировать состояние здоровья контейнеров? Что делать, если они отказывают?
Как их масштабировать?
GENERAL DISTRIBUTION
Как развернуть сложное приложение
на несколько серверов, центров обработки данных?
?
Какие контейнеры должны быть развернуты вместе?
Какие контейнеры могут обращаться друг к другу?
Как ограничить доступ к определенным контейнерам?
Как управлять тем, что работает внутри контейнера? Как бороться с уязвимостями?
Как контейнеры будут находить и видеть друг друга?
Как масштабировать контейнер: отдельные хосты, ЦОДы, регионы?
Что делать с постоянным хранилищем, если это stateful контейнер, база данных, например?
GENERAL DISTRIBUTION
НАМ НУЖНО БОЛЬШЕ, ЧЕМ ПРОСТО
КОНТЕЙНЕРЫ
Scheduling Security
Где развернуть контейнеры Назначать кто что может сделать и
обеспечить безопасность в целом
Discovery Persistence
Сетевое обнаружение контейнеров Сохранность данных, независимо от жизни
контейнера
Monitoring Aggregation
Прозрачность происходящего Собирать сложные приложения из множества
контейнеров
13 GENERAL DISTRIBUTION
Kubernetes - это система с
открытым исходным кодом для
автоматизации развертывания,
взаимодействия и
масштабирования
контейнеризованных
приложений на множестве хостов
kubernetes
GENERAL DISTRIBUTION
kubernetes
GENERAL DISTRIBUTION
НЕДОСТАТОЧНО, НУЖНО БОЛЬШЕ!
Multi-tenancy Teams and Collaboration
GENERAL DISTRIBUTION
ПЛАТФОРМА OPENSHIFT
Платформа для сборки,
развертывания и
эксплуатации
контейнерезированных
приложений, основанная на
Kubernetes, решающая
задачи CI/CD любых
масштабов
GENERAL DISTRIBUTION
OPENSHIFT - ЭТО KUBERNETES
ГОТОВЫЙ ДЛЯ ПРОМЫШЛЕННОГО ИСПОЛЬЗОВАНИЯ
Kubernetes OpenShift
Release 1-3 месяца Release
исправлений и улучшений
Исправления безопасности
Сотни патчей и фиксов
200+ проверенных интеграций
Интеграции с промежуточным ПО
(container images, storage, networking, cloud services, etc)
Девятилетний жизненный цикл поддержки
Сертифицированный Kubernetes
GENERAL DISTRIBUTION
РЕФЕРЕНСНАЯ АРХИТЕКТУРА
KUBERNETES ДЛЯ ИСПОЛЬЗОВАНИЯ НА ПРЕДПРИЯТИИ
Automated Operations*
Kubernetes
*coming soon
General Distribution
ТЕХНОЛОГИЧЕСКИЙ СТЕК
RED HAT OPENSHIFT
Container Container Container Container Container
Self-service
Logs &
Networking Storage Registry Security
Metrics
Linux
21 GENERAL DISTRIBUTION
КАК OPENSHIFT ПОМОГАЕТ
РАЗРАБОТЧИКАМ БЫТЬ ЭФФЕКТИВНЕЙ
BUILD TEST DEPLOY
LINUX WINDOWS*
* coming soon
GENERAL DISTRIBUTION
АВТОМАТИЗИРОВАННАЯ КОНТЕЙНЕРНАЯ
ИНФРАСТРУКТУРА
AUTOMATED OPERATIONS
Infra provisioning Full-stack deployment Secure defaults Multi-cluster aware
Vulnerability scanning
GENERAL DISTRIBUTION
НАДЕЖНАЯ ПЛАТФОРМА ДЛЯ
КОНТЕЙНЕРЕЗИРОВАННЫХ ПРИЛОЖЕНИЙ
GENERAL DISTRIBUTION
КОНТЕЙНЕРНАЯ БЕЗОПАСНОСТЬ
GENERAL DISTRIBUTION
OPENSHIFT: ОСНОВЫ
контейнер - это самая маленькая
вычислительная единица
CONTAINER
CONTAINER
CONTAINER
IMAGE
BINARY RUNTIME
IMAGE REGISTRY
CONTAINER
IMAGE REGISTRY
myregistry/frontend myregistry/mongo
frontend:latest mongo:latest
frontend:2.0 mongo:3.7
frontend:1.1 CONTAINER mongo:3.6 CONTAINER
frontend:1.0 IMAGE
mongo:3.4 IMAGE
POD POD
DEPLOYMENT
BACKEND SERVICE
172.30.170.110
role: backend
role: backend
ROUTE
app-prod.mycompany.com
> curl http://app-prod.mycompany.com
BACKEND SERVICE
Container
C Cc
Image
C C C
C C C C
Pod C
C C
c
C C C
C C C C
RED HAT
ENTERPRISE LINUX
RHEL RHEL RHEL
API/AUTHENTICATION
RED HAT
ENTERPRISE LINUX
RHEL RHEL RHEL
API/AUTHENTICATION
DATA STORE
RHEL RHEL RHEL
RED HAT
ENTERPRISE LINUX
RHEL RHEL RHEL
PHYSICAL
PHYSICAL
VIRTUALVIRTUAL
PRIVATEPRIVATEPUBLIC PUBLICHYBRID HYBRID
API/AUTHENTICATION
DATA STORE
RHEL RHEL RHEL
RED HAT
ENTERPRISE LINUX
RHEL RHEL RHEL
API/AUTHENTICATION
DATA STORE
RHEL RHEL RHEL
RED HAT
ENTERPRISE LINUX
RHEL RHEL RHEL
C C
DATA STORE
RHEL RHEL RHEL
RED HAT
ENTERPRISE LINUX
RHEL RHEL RHEL
C C
DATA STORE
RHEL RHEL RHEL
HEALTH/SCALING
RED HAT
ENTERPRISE LINUX
RHEL RHEL RHEL
SERVICE LAYER
C C C
DATA STORE
RHEL RHEL RHEL
HEALTH/SCALING C C C C
C
RED HAT
ENTERPRISE LINUX
RHEL RHEL RHEL
SERVICE LAYER
C C C
DATA STORE
RHEL RHEL RHEL
HEALTH/SCALING C C C C
C
RED HAT
ENTERPRISE LINUX
RHEL RHEL RHEL
SERVICE LAYER
C C C
DATA STORE
RHEL RHEL RHEL
HEALTH/SCALING C C C C
C
RED HAT
ENTERPRISE LINUX
RHEL RHEL RHEL
SERVICE LAYER
C C C
CI/CD DATA STORE
RHEL RHEL RHEL
EXISTING C C C C
HEALTH/SCALING
AUTOMATION
TOOLSETS
C
RED HAT
ENTERPRISE LINUX
RHEL RHEL RHEL
MASTER INFRA
Dev and Ops Application
User Traffic
NODE NODE
Application
Traffic
ENTERPRISE LOAD-BALANCER
Application
Dev and Ops Traffic
User
API/AUTHENTICATION
C C C
DATA STORE
RHEL RHEL RHEL
C C
HEALTH/SCALING c
RED HAT
ENTERPRISE LINUX RHEL RHEL RHEL
API/AUTHENTICATION
C C C
DATA STORE
RHEL RHEL RHEL
C C
HEALTH/SCALING c
RED HAT
ENTERPRISE LINUX RHEL RHEL RHEL
API/AUTHENTICATION
C C C
DATA STORE
RHEL RHEL RHEL
C C
HEALTH/SCALING c
RED HAT
ENTERPRISE LINUX RHEL RHEL RHEL
API/AUTHENTICATION
C C C
DATA STORE
RHEL RHEL RHEL
C C
HEALTH/SCALING c
RED HAT
ENTERPRISE LINUX RHEL RHEL RHEL
c c
API/AUTHENTICATION
C C C
DATA STORE
RHEL RHEL RHEL
C C
HEALTH/SCALING
RED HAT
ENTERPRISE LINUX RHEL RHEL
ROUTER
INTERNAL TRAFFIC
SERVICE
Canary Deployments
PROJECT B
POD
✓
NODE 1
IP 1
EXTERNAL
POD SERVICE
Whitelist: IP1
NODE 2
POD
IP 2
PROJECT A
PROJECT B
NODE 1
POD
IP 1 *
EGRESS
✓
EGRESS
POD SERVICE ROUTER
INT-IP IP 3 EXTERNAL
NODE 2 SERVICE
IP 2
Whitelist: IP 3
POD
**
PROJECT A
PROJECT B PROJECT A
Failover to
NODE 1 EGRESS standby
POD ROUTER egress
IP 1 * IP 3 router
EGRESS
✓
EGRESS
ROUTER
POD SERVICE
INT-IP IP1 EXTERNAL
NODE 2 SERVICE
IP 2
Whitelist: IP 3
POD
**
PROJECT A
NODE 1 IP 1
POD
IP 1
POD EXTERNAL
HANDLER
EGRESS
SERVICE
✓
NODE 2 IP 4
IP 4
IP 2
Whitelist:
POD IP 4, IP 5
PROJECT A
Egress IP:
IP 4 (Node 2)
IP 5 (Node 3)
HANDLER
NODE 3
IP 3
POD
✓ EGRESS
IP 5
NODE 1 IP 1
POD
IP 1
POD EXTERNAL
HANDLER
EGRESS
NODE 2 SERVICE
IP 4
IP 2
IP 4 Whitelist:
POD failed! IP 4, IP 5
PROJECT A
Egress IP:
IP 4 (Node 2)
IP 5 (Node 3)
HANDLER
✓ EGRESS
✓
NODE 3 IP 5
IP 5
POD
IP 3
NODE 1 IP 1
POD
IP 1
POD EXTERNAL
HANDLER
EGRESS
NODE 2 SERVICE
IP 2
POD
✓ IP 4
failed!
Whitelist:
IP 4
PROJECT A
Egress IP:
IP 4 (Node 2)
IP 5 (Node 3)
HANDLER
✓ EGRESS
✓
NODE 3 IP 4
POD
IP 3
* coming soon
OPENSHIFT
KUBERNETES CNI
NODE NODE
172.16.1.10 172.16.1.20
IP Network
MULTI-TENANT NETWORK
NODE NODE
●
●
Project-level network isolation
Multicast support
POD POD
✓ POD POD
NETWORK POLICY
✓ ✓ matchLabels:
color: purple
POD POD ingress:
- ports:
- protocol: tcp
port: 8080
NODE
veth0
POD 1
10.1.15.2/24
br0
vxlan0 eth0
10.1.15.1/24
192.168.0.100
veth1
POD 2
10.1.15.3/24
NODE 1
NODE 2
veth0 br0
POD 2 vxlan0 eth0
10.1.20.2/24 10.1.20.1/24
192.168.0.200
Container
NODE 1 to Container on Different Hosts
POD 1
veth0 br0
tun0 eth0
External
10.1.15.2/24 10.1.15.1/24 Host
192.168.0.100
etcd
NODE 2 flanneld
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
● Access control
○ Cluster administrators can view all logs
○ Users can only view logs for their projects
NODE
ADMIN
NODE
RHEL
POD POD APPLICATION LOGS
POD POD
FLUENTD
ELASTIC ELASTIC
ELASTIC ELASTIC
RHEL ELASTICSEARCH KIBANA
POD POD
USER
RHEL
NODE
RED HAT
POD POD CLOUDFORMS
CONTAINER METRICS
FLUENTD
NODE
POD POD API OPENSHIFT
HEAPSTER HAWKULAR
WEB CONSOLE
POD POD
FLUENTD
NODE
RHEL USER
POD POD CUSTOM
DASHBOARDS
POD POD ELASTIC
CADVISOR
ELASTIC
CASSANDRA
RHEL
POD POD
RHEL
CERTIFICATE CHECKS
● master and nodes
● etcd certificates
Container Storage
NetApp Trident*
Interface (CSI)**
* Shipped and supported by NetApp via TSANet
** Tech Preview
register PV Ceph
iSCSI GlusterFS NFSP NFSP NFSP
RBD
PV PV V V V
PV
Admin
create claim
Slow Azure
Azure-Disk Provisioner
provision
Admin Fastest NetApp
PV
NetApp-Flash Provisioner
Pod
RHGS RHGS POD POD RHGS POD POD POD POD POD
☑ Open ticket
☑ Wait for allocation
☑ Receive credentials
☑ Add to app
☑ Deploy app
SERVICE SERVICE
CONSUMER PROVIDER
AWS AWS
Service AWS
Broker Services
apiVersion: servicecatalog.k8s.io/v1alpha1
kind: Broker
metadata:
name: asb-broker
spec:
url: https://asb-1338-ansible-service-broker.10.2.2.15.nip.io
create binding
OpenShift Registry
Docker Hub
Red Hat
Container Catalog
mediawiki-apb
postgresql-apb
Discover and list
OpenShift
APBs from the
Service Catalog configured image
registries
OpenShift
Ansible Broker
OpenShift Registry
Docker Hub
Red Hat
Container Catalog
run it with the broker
mediawiki-apb
action as a parameter
postgresql-apb
OpenShift
Service Catalog
APB
OpenShift
Container
Ansible Broker (postgresql)
OpenShift Registry
Docker Hub
Red Hat
Container Catalog
provision.yaml
mediawiki-apb
playbook to create a
postgresql-apb
PostgreSQL container
OpenShift
Service Catalog
APB Postgre
OpenShift
Ansible SQL
Container
Service Broker
Ansible (postgresql) Container
OpenShift Registry
Docker Hub
Red Hat
Container Catalog
bind.yaml
mediawiki-apb
playbook to create
postgresql-apb
database user
OpenShift
Service Catalog
APB Postgre
OpenShift SQL
Container
Ansible Broker (postgresql) Container
MediaWiki
Container
OpenShift Registry
Docker Hub
Red Hat
Container Catalog
a secret for the binding,
mediawiki-apb
containing the database
postgresql-apb
credentials
OpenShift
Service Catalog
Postgre
OpenShift SQL
Ansible Broker Container
MediaWiki
Container
mount binding secret
OpenShift Registry
Docker Hub
Red Hat
Container Catalog
away and Service Broker
mediawiki-apb
creates a binding for
postgresql-apb
the PostgreSQL service
OpenShift
Service Catalog
Postgre
OpenShift SQL
Ansible Broker Container
MediaWiki
create binding Container
MediaWiki container
OpenShift Registry
Docker Hub
Red Hat
Container Catalog
uses the credentials in
mediawiki-apb
the secret to connect
postgresql-apb
to the PostgreSQL
OpenShift
Service Catalog
database
Postgre
OpenShift SQL
Ansible Broker Container
MediaWiki
Container
mount binding secret
OpenShift on Microsoft Azure Business Process Management with JBoss BPMS on OpenShift
OpenShift on Red Hat Virtualization Build and Deployment of Java Applications on OpenShift
OpenShift on HPE Servers with Ansible Tower Building Microservices on OpenShift with Fuse Integration...
OpenShift on VMware vCenter 6 with Gluster JFrog Artifactory on OpenShift Container Platform
Deploying an OpenShift Distributed Architecture Spring Boot Microservices on Red Hat OpenShift
OpenShift Architecture and Deployment Guide API Management with Red Hat 3scale on OpenShift
OpenShift Scaling, Performance, and Capacity Planning App CI/CD on OCP with Jenkins
(OpenShift)
Developer
Source-to-Image
BUILD IMAGE (S2I)
DEPLOY Application
Container
deploy
(OpenShift)
Source-to-Image
BUILD IMAGE (S2I)
DEPLOY Application
Container
deploy
(OpenShift)
Image
PUSH Registry
(Build Infra)
DEPLOY Application
Container
deploy
(Openshift)
BUILD STAGE 1
BUILD STAGE 3
BUILD STAGE 2
Use Source-to-Image to build app binaries and deploy on lean vanilla runtimes
Use your choice of build tool like Gradle and deploy to official images like the JDK image
Custom
Scratch
Go S2I
Image
Builder Image
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
physical
virtual
private cloud
dev source CI/CD container
repository engine
public cloud
OPENSHIFT
EXISTING
S2I
run job CI/CD INFRA build Build
APP APP
APPLICATION
IMAGE
OPENSHIFT
CI/CD PIPELINE
(JENKINS)
IMAGE BUILD
& DEPLOY
OPENSHIFT OPENSHIFT
IMAGE IMAGE
REGISTRY REGISTRY
OPENSHIFT OPENSHIFT
CLUSTER CLUSTER
OPENSHIFT
CI/CD PIPELINE
(JENKINS)
IMAGE BUILD PROMOTE
& DEPLOY TO TEST
OPENSHIFT OPENSHIFT
IMAGE IMAGE
REGISTRY REGISTRY
OPENSHIFT OPENSHIFT
CLUSTER CLUSTER
OPENSHIFT
CI/CD PIPELINE
(JENKINS)
IMAGE BUILD PROMOTE PROMOTE
& DEPLOY TO TEST TO UAT
OPENSHIFT OPENSHIFT
IMAGE IMAGE
REGISTRY REGISTRY
OPENSHIFT OPENSHIFT
CLUSTER CLUSTER
☒
OPENSHIFT
CI/CD PIPELINE
(JENKINS)
☑
IMAGE BUILD PROMOTE PROMOTE
& DEPLOY TO TEST TO UAT
OPENSHIFT OPENSHIFT
IMAGE IMAGE
REGISTRY REGISTRY
OPENSHIFT OPENSHIFT
CLUSTER CLUSTER
GO
LIVE?
☒
OPENSHIFT
☑
CI/CD PIPELINE
(JENKINS)
IMAGE BUILD PROMOTE PROMOTE PROMOTE
& DEPLOY TO TEST TO UAT TO PROD
OPENSHIFT OPENSHIFT
IMAGE IMAGE
REGISTRY REGISTRY
OPENSHIFT OPENSHIFT
CLUSTER CLUSTER
BUILD APP RUN PROMOTE APP BUILD CONTAINER RUN PROMOTE CONTAINER
BINARY TESTS BINARY IMAGE TESTS IMAGE
SOURCE
VERSION
CONTROL
ENTERPRISE ENTERPRISE
BINARY REPO IMAGE REGISTRY
BUILD APP RUN PROMOTE APP BUILD CONTAINER RUN PROMOTE CONTAINER
BINARY TESTS BINARY IMAGE TESTS IMAGE
SOURCE
VERSION
CONTROL
ENTERPRISE ENTERPRISE
BINARY REPO IMAGE REGISTRY
AWS ECR
EXISTING
DELIVERY
PROCESS
OPENSHIFT
CLUSTER
ENTERPRISE
IMAGE
REGISTRY
OPENSHIFT OPENSHIFT
IMAGE IMAGE
REGISTRY REGISTRY
OPENSHIFT OPENSHIFT
CLUSTER CLUSTER
VIRTUAL VIRTUAL
MACHINE MACHINE
Local
Bootstrap Develop Verify Git Push Pipeline
Deploy
Local
Bootstrap Develop Verify Git Push Pipeline
Deploy
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
Local
Bootstrap Develop Verify Git Push Pipeline
Deploy
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
Bootstrap Develop Verify Git Push Pipeline
Deploy
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
Bootstrap Develop Verify Git Push Pipeline
Deploy
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
Bootstrap Develop Verify Git Push Pipeline
Deploy
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
Bootstrap Develop Verify Git Push Pipeline
Deploy
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
Real Time
Integration Messaging Data Grid
Decision
SUPPORTED RUNTIMES
OPENSHIFT
AUTOMATED OPERATIONS
Infra provisioning Full-stack deployment Secure defaults Multi-cluster aware
Vulnerability scanning
linkedin.com/company/red-hat twitter.com/RedHatNews
youtube.com/user/RedHatVideos
MICROSERVICES
INFRASTRUCTURE:
ISTIO SERVICE MESH
WHAT DO YOU NEED FOR MICROSERVICES?
Policy Enforcement
Microservice
Visibility & Reporting Business Logic
Monitoring Tracing
Monitoring Tracing
Infrastructure
Microservice
Business Logic
Microservice
Netflix OSS
Business Logic
Platform
Data
Plane
App App App App
Microservice
Business Logic
Monitoring Tracing
Microservices Microservice Microservices
App Business Logic App
Netflix OSS
Config Server Security Policies
OpenShift + Istio
Service Registry Traffic Control
Config Server Load Balancing
Monitoring Tracing
Service Registry Traffic Control
API Magenement Smart Routing
Monitoring Tracing
POD
EGRESS
EXTERNAL
POD EGRESS SERVICE ROUTER SERVICE
INTERNAL-IP:8080
POD
IP1 Whitelist: IP1
NODE
IP1
POD