Vous êtes sur la page 1sur 54
OpenShift en production 7 pièges à éviter Eloïse Faure Senior Consultant @faure_eloise Akram Ben Aissi

OpenShift en production

7 pièges à éviter

Eloïse Faure Senior Consultant @faure_eloise

Akram Ben Aissi Cloud Architect @akrambenaissi

Akram Ben Aissi

Architecte Cloud @ Red Hat

OpenShifteur depuis le début Aide les clients à mettre en place OpenShift Conseil sur les choix d'architecture blog.akrambenaissi.com

à mettre en place OpenShift Conseil sur les choix d'architecture blog.akrambenaissi.com 2 PARIS CONTAINER DAY 2017

Eloïse Faure

Consultante Senior @ Red Hat

OpenShifteuse Spécialisée dans la mise en place de cluster à coup de marteau ! Férue d’Intégration Continue Développeuse Java repentie

de cluster à coup de marteau ! Férue d’Intégration Continue Développeuse Java repentie 3 PARIS CONTAINER

Pourquoi ce talk ?

Vous éviter d’essuyer les plâtres

Anticiper les problématiques d'architecture Disposer de ressources suffisantes Réfléchir à l'exploitation Monitorer

Disposer de ressources suffisantes Réfléchir à l'exploitation Monitorer 4 PARIS CONTAINER DAY 2017

Sous-estimer l'architecture

Sous-estimer l'architecture

C’est quoi OpenShift ?

Solution de PaaS S'appuie sur Docker et Kubernetes et ajoute

Une couche de routage

Un outillage d'intégration continue pour containers

Un ensemble de template de projets Open Source

d'intégration continue pour containers ● Un ensemble de template de projets Open Source RED HAT CONSULTING
d'intégration continue pour containers ● Un ensemble de template de projets Open Source RED HAT CONSULTING
d'intégration continue pour containers ● Un ensemble de template de projets Open Source RED HAT CONSULTING

En théorie

7 PARIS CONTAINER DAY 2017
7
PARIS CONTAINER DAY 2017
En théorie 7 PARIS CONTAINER DAY 2017

En super-théorie

En super-théorie 8 PARIS CONTAINER DAY 2017
En super-théorie 8 PARIS CONTAINER DAY 2017

8

PARIS CONTAINER DAY 2017

En super-théorie 8 PARIS CONTAINER DAY 2017

En pratique

En pratique Quelques gotchas: ● Scalabilité de la plate-forme ● VIP ● DMZ (flux SDN bloqués)
En pratique Quelques gotchas: ● Scalabilité de la plate-forme ● VIP ● DMZ (flux SDN bloqués)
En pratique Quelques gotchas: ● Scalabilité de la plate-forme ● VIP ● DMZ (flux SDN bloqués)

Quelques gotchas:

Scalabilité de la plate-forme

VIP

DMZ (flux SDN bloqués)

Multi-routeur (par zone)

Multi-datacenter (minimum 3)

Scalabilité etcd

La règle de 3

Minimum pour la HA : 3

Nombre impair

Sur 2 Data Center :

1 DC avec 2 etcd actif

1 DC avec 1 etcd actif et 1 passif

1 procédure de DRP

DC avec 2 etcd actif ● 1 DC avec 1 etcd actif et 1 passif ●

Quelques anecdotes

Problèmes récurrents avec les VIP

ils ne veulent en faire qu'à leur tête

Ils bloquent parfois le trafic derrière eux

Deux exemples réels: Stonegate et Azure LB

Contournements:

/etc/hosts

Policy Based Routing

Stonegate et Azure LB Contournements: ● /etc/hosts ● Policy Based Routing 1 1 PARIS CONTAINER DAY
Quelques anecdotes Multi cluster
Quelques anecdotes Multi cluster

Quelques anecdotes

Quelques anecdotes Multi cluster

Multi cluster

Multi cluster
Quelques anecdotes Multi cluster
Quelques anecdotes Multi cluster
Quelques anecdotes Multi cluster
Cluster OpenShift
Cluster OpenShift
Quelques anecdotes Multi cluster Cluster Internet
Quelques anecdotes
Multi cluster
Cluster Internet
Cluster Extranet
Cluster Extranet
Cluster Extranet

Cluster Extranet

Cluster Extranet
Cluster Extranet
Cluster Extranet
Cluster Extranet
Cluster Extranet
Cluster Intranet
Cluster Intranet
Cluster Intranet

Cluster Intranet

Cluster Intranet
Cluster Intranet
Cluster Intranet
Cluster Intranet
Cluster Intranet
Quelques anecdotes Multi cluster Cluster Internet
Quelques anecdotes
Multi cluster
Cluster Internet

Cluster Extranet RH

Cluster Intranet RH
Cluster Intranet RH
Cluster Intranet RH

Cluster Intranet RH

Cluster Intranet RH
Cluster Intranet RH
Cluster Intranet RH
Cluster Intranet RH
Cluster Intranet RH
Cluster Extranet Finance
Cluster Extranet Finance
Cluster Extranet Finance

Cluster Extranet Finance

Cluster Extranet Finance
Cluster Extranet Finance
Cluster Extranet Finance
Cluster Extranet Finance
Cluster Extranet Finance
Cluster Intranet Finance
Cluster Intranet Finance
Cluster Intranet Finance

Cluster Intranet Finance

Cluster Intranet Finance
Cluster Intranet Finance
Cluster Intranet Finance
Cluster Intranet Finance
Cluster Intranet Finance
Cluster Extranet Support
Cluster Extranet Support
Cluster Extranet Support

Cluster Extranet Support

Cluster Extranet Support
Cluster Extranet Support
Cluster Extranet Support
Cluster Extranet Support
Cluster Extranet Support

Cluster Intranet Support

Quelques anecdotes Multi cluster Cluster Internet
Quelques anecdotes
Multi cluster
Cluster Internet

Cluster Extranet RH - C2

Cluster Extranet RH - C1
Cluster Extranet RH - C1
Cluster Extranet RH - C1

Cluster Extranet RH - C1

Cluster Extranet RH - C1
Cluster Extranet RH - C1
Cluster Extranet RH - C1
Cluster Extranet RH - C1
Cluster Extranet RH - C1
Cluster Intranet RH
Cluster Intranet RH
Cluster Intranet RH

Cluster Intranet RH

Cluster Intranet RH
Cluster Intranet RH
Cluster Intranet RH
Cluster Intranet RH
Cluster Intranet RH
Cluster Extranet Finance - C2
Cluster Extranet Finance - C2
Cluster Extranet Finance - C2

Cluster Extranet Finance - C2

Cluster Extranet Finance - C2
Cluster Extranet Finance - C2
Cluster Extranet Finance - C2
Cluster Extranet Finance - C2
Cluster Extranet Finance - C2
Cluster Extranet Finance - C1
Cluster Extranet Finance - C1
Cluster Extranet Finance - C1

Cluster Extranet Finance - C1

Cluster Extranet Finance - C1
Cluster Extranet Finance - C1
Cluster Extranet Finance - C1
Cluster Extranet Finance - C1
Cluster Extranet Finance - C1
Cluster Intranet Finance
Cluster Intranet Finance
Cluster Intranet Finance

Cluster Intranet Finance

Cluster Intranet Finance
Cluster Intranet Finance
Cluster Intranet Finance
Cluster Intranet Finance
Cluster Intranet Finance
Cluster Extranet Support - C2
Cluster Extranet Support - C2
Cluster Extranet Support - C2

Cluster Extranet Support - C2

Cluster Extranet Support - C2
Cluster Extranet Support - C2
Cluster Extranet Support - C2
Cluster Extranet Support - C2
Cluster Extranet Support - C2
Cluster Extranet Support - C 1
Cluster Extranet Support - C 1
Cluster Extranet Support - C 1

Cluster Extranet Support - C 1

Cluster Extranet Support - C 1
Cluster Extranet Support - C 1
Cluster Extranet Support - C 1
Cluster Extranet Support - C 1
Cluster Extranet Support - C 1

Cluster Intranet Support

Ne pas prévoir le bon stockage

Ne pas prévoir le bon stockage

Drivers de stockage pour Docker

Stockage supporté pour OpenShift : device mapper+thinpool Device mapper + loopback (défaut sur docker) et
Stockage supporté pour OpenShift : device
mapper+thinpool
Device mapper + loopback (défaut sur docker) et
AUFS peu performants et non supportés
Overlay FS dans le futur
● Meilleures performances: Cache Page
Sharing
● Pas encore de support SELinux

Stockage docker

Séparer les partitions

/var/lib/docker

/var/lib/origin

Séparer les partitions ● /var/lib/docker ● /var/lib/origin

Délaisser l'exploitation et le run

Délaisser l'exploitation et le run

Les fluuuuux !

Anticiper les demandes

Automatiser la validation

Les fluuuuux ! Anticiper les demandes Automatiser la validation 2 0 PARIS CONTAINER DAY 2017

Savoir tout reconstruire

Savoir rebuilder et le faire Un playbook chapeau :

Pré-installation

Post-installation

Savoir rebuilder et le faire Un playbook chapeau : ● Pré-installation ● Post-installation

Faut pas casser la prod !

Une sandbox !

Sand box iso prod Pour :

L’installation

Les upgrades

Monter en compétences

Les changements de configuration

● Les upgrades ● Monter en compétences ● Les changements de configuration 2 2 PARIS CONTAINER

Backup… et restauration

Les raisons

Perte du / des datacenter Retour à un état précédent Perte du stockage des données applicatives Restauration sur un autre cluster pour analyse

Certificats applicatifs

Peut retarder une MEP ! DNS wildcard = certificates wildcard Un seul niveau aux certificats wildcard

Certificats plateforme

Certificats auto-signés par défaut Délégation de CA

Sinon, listes exhaustives des certificats…

Master, etcd, Nodes, Router, Registry

Garbage collection Pour éviter de noyer docker
Garbage collection Pour éviter de noyer docker

Garbage collection

Garbage collection Pour éviter de noyer docker

Pour éviter de noyer docker

Pour éviter de noyer docker
Garbage collection Pour éviter de noyer docker
Garbage collection Pour éviter de noyer docker
Garbage collection Pour éviter de noyer docker

Nettoyage des container mort Nettoyages des images sur les nodes Nettoyages des images de la registry Nettoyage des volumes orphelins

Oublier le monitoring

Oublier le monitoring

Prometheus + grafana

Stack originale: Hawkular+Cassandra

Efforts importants dans Prometheus

Ajout de fonctions natives d'alerting

Node exporter : IO, réseau

Dashboard grafana expose les informations de l’api kubernetes et des node exporter

et des node exporter ● https://github.com/akram/openshift-prometheus-grafana 2 8 PARIS CONTAINER DAY 2017

HAProxy

Solution de Reverse Proxy utilisée dans OpenShift

HAProxy Solution de Reverse Proxy utilisée dans OpenShift OpenShift router instancié avec un sidecar-container

OpenShift router instancié avec un sidecar-container prometheus haproxy-exporter

Croire à l’Open Ressource

Croire à l’Open Ressource

Sizer la plateforme

Sizer la plateforme Au déla du minimum Dev, build, CI Monitoring, metrics, registry, etc Stockage docker

Au déla du minimum Dev, build, CI

Monitoring, metrics, registry, etc Stockage docker

Local sur chaques nodes

Pour la registry

Dev, build, CI Monitoring, metrics, registry, etc Stockage docker ● Local sur chaques nodes ● Pour
registry, etc Stockage docker ● Local sur chaques nodes ● Pour la registry 3 1 PARIS

SWAP

Identifié par REX grâce au monitoring

MemoryPressure est pris en compte lors du scheduling

Swap => non identification de la MemoryPressure

Pods schédulés sur des nodes sous pression

Quota / limites

Quota / limites Protéger les applications critiques Laisser de la liberté Les quotas : Se protéger

Protéger les applications critiques Laisser de la liberté Les quotas :

Se protéger des développeurs fous Les limites :

Se protéger des containers fous

des développeurs fous Les limites : ● ● Se protéger des containers fous 3 3 PARIS

Focus JAVA

Focus JAVA Heap : -Xmx < pod limit * 0.5 GC : Peut écrouler le quota

Heap : -Xmx < pod limit * 0.5

GC : Peut écrouler le quota de CPU shares

GC + CFS = STW

Si la latence est importante: refaire des tests de charge

Réduire le nombre de thread du GC (-XX:ParallelGCThreads)

Limiter la densité d'application par node

Négliger le réseau

Négliger le réseau
SDN Comment ce serait dans le monde physique ?
SDN Comment ce serait dans le monde physique ?

SDN

SDN Comment ce serait dans le monde physique ?

Comment ce serait dans le monde physique ?

Comment ce serait dans le monde physique ?
SDN Comment ce serait dans le monde physique ?
SDN Comment ce serait dans le monde physique ?
SDN Comment ce serait dans le monde physique ?

SDN: Software Defined Network Câbler tous les containers prendrait trop de temps Gérer la sécurité La ségrégation des réseaux Instancier un switch différent par projet ou zone

La ségrégation des réseaux Instancier un switch différent par projet ou zone 3 6 PARIS CONTAINER

SDN sur SDN

On en trouve à tous les étages (IaaS, Virtu) Attention à l'encapsulation MTU ethernet par défaut 1500, en-tête de 50 Jumbo frames ?

à l'encapsulation MTU ethernet par défaut 1500, en-tête de 50 Jumbo frames ? 3 7 PARIS

OpenvSwitch multi-tenant

Fonction SDN de OpenShift: Plugins évolutifs

Flat network

Multi tenant

Egress policy

Activer le bon: Généralement ovs-multitenant

Plugins évolutifs ● Flat network ● Multi tenant ● Egress policy Activer le bon: Généralement ovs-multitenant
● Multi tenant ● Egress policy Activer le bon: Généralement ovs-multitenant 3 8 PARIS CONTAINER DAY
● Multi tenant ● Egress policy Activer le bon: Généralement ovs-multitenant 3 8 PARIS CONTAINER DAY

3

8

PARIS CONTAINER DAY 2017

● Multi tenant ● Egress policy Activer le bon: Généralement ovs-multitenant 3 8 PARIS CONTAINER DAY

Routeur et protocoles

autres que HTTP et HTTPS ?

Routeur et protocoles autres que HTTP et HTTPS ? HTTP / HTTPS (ou autre supportant SNI)

HTTP / HTTPS (ou autre supportant SNI) Sinon, port-forward… Service node port Ingress IP Et pourquoi pas une app pour exposer la BDD ?

Sécurité

Sécurité

SELinux et SCC

SELinux : Mécanisme de label sur ressources permettant du contrôle d'accès

Policy permettant de définir ces contrôles

Activé sur RHEL par défaut

Désactivé par les admins par défaut (what?) [1]

Dirty Cow: Une des premières failles permettant escalation de privilège SCC: Security Context Constraints

Par défault: restricted

Security Context Constraints ● Par défault: restricted [1]

4

1

PARIS CONTAINER DAY 2017

[1] https://people.redhat.com/duffy/selinux/selinux-coloring-book_A4-Stapled.pdf 4 1 PARIS CONTAINER DAY 2017

Docker dans docker : on s’en passe !

Besoin classique : build, pull et push d’image à partir d’OpenShift Pas de docker dans docker

https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-f

or-ci/ On ne mappe pas la socket ! Utiliser un build OpenShift “Docker strategy”

or-ci/ On ne mappe pas la socket ! Utiliser un build OpenShift “Docker strategy”
or-ci/ On ne mappe pas la socket ! Utiliser un build OpenShift “Docker strategy” 4 2

Take away

Take away

A retenir

Anticipez ! Les flux, les certificats, le sizing

Simplifiez !

L’architecture

Contrôlez !

Quota, limites, sécurité

Monitorez !

Prometheus, grafana, HA Proxy

THANK YOU plus.google.com/+RedHat facebook.com/redhatinc linkedin.com/company/red-hat twitter.com/RedHatNews

THANK YOU

plus.google.com/+RedHat facebook.com/redhatinc

plus.google.com/+RedHat

plus.google.com/+RedHat facebook.com/redhatinc

facebook.com/redhatinc

linkedin.com/company/red-hat twitter.com/RedHatNews

linkedin.com/company/red-hat

linkedin.com/company/red-hat twitter.com/RedHatNews

twitter.com/RedHatNews

youtube.com/user/RedHatVideos  

youtube.com/user/RedHatVideos

 

Parking Slides

Parking Slides
 

Backup… et restauration

Les moyens

 

Sauvegarde ETCD

Sauvegarde des données :

Registry

Données applicatives

Intégration continue

Logging

Synchronisation des sauvegardes

Multi datacenter / Ubernetes

Multi-datacenter : Multi-problèmes

Contraintes sur la latence inter-etcd < 5ms

Quorum résilient nécessite 3 sites

Autres solutions:

2 sites avec un master passif et PRA

Fédération de cluster OpenShift avec Ubernetes

Élève les fonctions de kubernetes au niveau des clusters

Scheduling multi-cluster

Gestion des droits utilisateurs

Tech Preview en 3.6

Stockage applicatif

Pourquoi des volumes ?

Persistance des données importantes

Ecriture des données non importantes en dehors de l'image (emptyDir) Choisir sa solution de stockage Interêt du Read Write Many

Evolutions du SDN

Améliorer les performances et la sécurité

Intégration IaaS/Virtualisation avec éditeurs tiers (Nuage, Cisco, VMWare)

Network policy: Définir des règles de trafic entrant et sortant au niveau containeur

Network policy: Définir des règles de trafic entrant et sortant au niveau containeur 5 4 PARIS