OpenShift en production - Akram Ben Assi & Eloïse Faure
1. OpenShift en production
7pièges à éviter
Eloïse Faure
Senior Consultant
@faure_eloise
Akram Ben Aissi
Cloud Architect
@akrambenaissi
2. PARIS CONTAINER DAY 20172
OpenShifteur depuis le début
Aide les clients à mettre en place OpenShift
Conseil sur les choix d'architecture
blog.akrambenaissi.com
Akram Ben Aissi
Architecte Cloud @ Red Hat
3. PARIS CONTAINER DAY 20173
OpenShifteuse
Spécialisée dans la mise en place de cluster
à coup de marteau !
Férue d’Intégration Continue
Développeuse Java repentie
Eloïse Faure
Consultante Senior @ Red Hat
4. PARIS CONTAINER DAY 20174
Anticiper les problématiques d'architecture
Disposer de ressources suffisantes
Réfléchir à l'exploitation
Monitorer
Pourquoi ce talk ?
Vous éviter d’essuyer les plâtres
6. RED HAT CONSULTING
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
6
C’est quoi OpenShift ?
9. PARIS CONTAINER DAY 20179
En pratique
Quelques gotchas:
● Scalabilité de la plate-forme
● VIP
● DMZ (flux SDN bloqués)
● Multi-routeur (par zone)
● Multi-datacenter (minimum 3)
10. PARIS CONTAINER DAY 2017
1
0
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
11. PARIS CONTAINER DAY 2017
1
1
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
12. PARIS CONTAINER DAY 2017
1
2
Quelques anecdotes
Multi cluster
Cluster OpenShift
13. PARIS CONTAINER DAY 2017
1
3
Quelques anecdotes
Cluster Intranet
Cluster Internet
Cluster Extranet
Multi cluster
14. PARIS CONTAINER DAY 2017
1
4
Quelques anecdotes
Cluster Extranet
Finance
Cluster Intranet
Finance
Cluster Internet
Cluster Extranet
RH
Cluster Extranet
Support
Cluster Intranet
Support
Cluster Intranet
RH
Multi cluster
15. PARIS CONTAINER DAY 2017
1
5
Quelques anecdotes
Cluster Extranet
Finance - C2
Cluster Intranet
Finance
Cluster Internet
Cluster Extranet
RH - C2
Cluster Extranet
Support - C2
Cluster Intranet
Support
Cluster Intranet
RH
Cluster Extranet
RH - C1
Cluster Extranet
Support - C 1
Cluster Extranet
Finance - C1
Multi cluster
17. PARIS CONTAINER DAY 2017
1
7
Drivers de stockage pour Docker
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
18. PARIS CONTAINER DAY 2017
1
8
Stockage docker
Séparer les partitions
● /var/lib/docker
● /var/lib/origin
20. PARIS CONTAINER DAY 2017
2
0
Les fluuuuux !
Anticiper les demandes
Automatiser la validation
21. PARIS CONTAINER DAY 2017
2
1
Savoir tout reconstruire
Savoir rebuilder et le faire
Un playbook chapeau :
● Pré-installation
● Post-installation
22. PARIS CONTAINER DAY 2017
2
2
Faut pas casser la prod !
Sand box iso prod
Pour :
● L’installation
● Les upgrades
● Monter en compétences
● Les changements de configuration
Une sandbox !
23. PARIS CONTAINER DAY 2017
2
3
Backup… et restauration
Perte du / des datacenter
Retour à un état précédent
Perte du stockage des données applicatives
Restauration sur un autre cluster pour analyse
Les raisons
24. PARIS CONTAINER DAY 2017
2
4
Certificats applicatifs
Peut retarder une MEP !
DNS wildcard = certificates wildcard
Un seul niveau aux certificats wildcard
25. PARIS CONTAINER DAY 2017
2
5
Certificats plateforme
Certificats auto-signés par défaut
Délégation de CA
Sinon, listes exhaustives des certificats…
● Master, etcd, Nodes, Router, Registry
26. PARIS CONTAINER DAY 2017
2
6
Garbage collection
Nettoyage des container mort
Nettoyages des images sur les nodes
Nettoyages des images de la registry
Nettoyage des volumes orphelins
Pour éviter de noyer docker
28. PARIS CONTAINER DAY 2017
2
8
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
● https://github.com/akram/openshift-prometheus-grafana
29. PARIS CONTAINER DAY 2017
2
9
HAProxy
Solution de Reverse Proxy utilisée dans OpenShift
OpenShift router instancié avec un
sidecar-container prometheus
haproxy-exporter
31. PARIS CONTAINER DAY 2017
3
1
Sizer la plateforme
Au déla du minimum
Dev, build, CI
Monitoring, metrics, registry, etc
Stockage docker
● Local sur chaques nodes
● Pour la registry
32. PARIS CONTAINER DAY 2017
3
2
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
33. PARIS CONTAINER DAY 2017
3
3
Quota / limites
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
34. PARIS CONTAINER DAY 2017
3
4
Focus JAVA
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
36. PARIS CONTAINER DAY 2017
3
6
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
37. PARIS CONTAINER DAY 2017
3
7
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 ?
38. PARIS CONTAINER DAY 2017
3
8
OpenvSwitch multi-tenant
Fonction SDN de OpenShift: Plugins évolutifs
● Flat network
● Multi tenant
● Egress policy
Activer le bon: Généralement ovs-multitenant
39. PARIS CONTAINER DAY 2017
3
9
Routeur et protocoles
HTTP / HTTPS (ou autre supportant SNI)
Sinon, port-forward…
Service node port
Ingress IP
Et pourquoi pas une app pour exposer la BDD ?
... autres que HTTP et HTTPS ?
41. PARIS CONTAINER DAY 2017
4
1
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
[1] https://people.redhat.com/duffy/selinux/selinux-coloring-book_A4-Stapled.pdf
42. PARIS CONTAINER DAY 2017
4
2
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”
44. PARIS CONTAINER DAY 2017
4
4
A retenir
Anticipez !
Les flux, les certificats, le sizing
Simplifiez !
L’architecture
Contrôlez !
Quota, limites, sécurité
Monitorez !
Prometheus, grafana, HA Proxy
45. Links
● SELinux Color Book
● JVM Stop World Pause with CFS
● Linux Control Groups Uncontrolled
● Java Memory Accounting in Containers
● OpenShift Router
● AUFS Storage Driver
● Docker Image Layering
● How The OverlayFS Driver Works
51. PARIS CONTAINER DAY 2017
5
1
Backup… et restauration
Sauvegarde ETCD
Sauvegarde des données :
● Registry
● Données applicatives
● Intégration continue
● Logging
Synchronisation des sauvegardes
Les moyens
52. PARIS CONTAINER DAY 2017
5
2
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
53. PARIS CONTAINER DAY 2017
5
3
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
54. PARIS CONTAINER DAY 2017
5
4
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