SlideShare une entreprise Scribd logo
1  sur  53
Télécharger pour lire hors ligne
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Retour d’expérience sur la mise en
place d’OpenShift
à La Poste
Guillaume Membré - Zenika
Pascal Dufourd - La Poste
1
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Plan
• Objectifs fixés
• Mise en œuvre de conteneurs Docker avec OpenShift
• Intégration continue / Livraison continue
• Exploitation
• Finalement, où en est-on ?
2
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Objectifs
3
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Les enjeux pour la DSI La Poste
Simplification des MEP
• Automatisation des MEP
• Moins de documentation
• Rapidité d’installation
• MEP plus légères et plus
fréquentes
• Reproductibilité
Réduction des coûts
Amélioration des performances
Facilitation de l’agilité
• Scalabilité des applications
• Optimisation des ressources
• Dimensionnement évolutif de
la plateforme
• Visualisation en direct de la
montée en charge
• Moins d’acteurs de MEP
• Moins d’erreurs de MEP
• Moins de retours arrière
• Moins d’incidents
• Adéquation du mode de
déploiement avec les projets
AGILE
• Facilite l’expérimentation
(instanciation rapide d’env
de dev ou test)
• Solution adaptée aux projets
pilotés par les délais
4
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Organisation du projet
• Projet en mode Agile et DevOps
• Méthode SCRUM adaptée
• 2 Scrum masters
• 2 Product Owners (Logiciel et Infra)
• Equipe pluridisciplinaire
• Projet en mode plateau physique (complété en virtuel)
• Conduite du changement
• Présentation des concepts du PaaS aux MOE
• Tutorat des équipes des projets pilotes
• Collaboration avec la DSI du Courrier
• Instances de coordination
• Participation croisée (échanges techniques, études, démo)
• Convergence des solutions techniques
5
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Des profils hétéroclites
6
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
3 applications sur le pilote
3 candidats basés sur différentes technos :
7
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Système
Orchestration
Solution mise en oeuvre
Conteneurs
Services
Outils
8
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Mise en œuvre de
conteneurs Docker
avec OpenShift
9
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Vue
Utilisateur
ROUTES
NODE
NODE
NODE
Utilisateur
10
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Vue
développeur
ROUTES
MASTER NODE
NODE NODE STOCKAGE
SOURCES
NODE
SERVICES
Développeur
MASTER
AUTHENT / API
DATA STORE
MULTI TENANCY
ORCHESTRATION
REPLICATION
SCALING
SCHEDULING
PIC
Utilisateur
REGISTRY
PUITS DE LOGS
11
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Workflow de Delivery
Expert MW Développeur
Base image
(Sydney)
Middleware
image
Image
Applicative
Exploitant
Supervision
(conf)
Intégrateur /
Administrateur
Projet OCP &
egress policy
Supervision
applicative
Monitoring
des jobs
Ordonnancements
(conf)
Paramétrage
applicatif
12
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Hiérarchie des images middleware
13
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Organisation des MW dans GitLab
• Un groupe pour la filière Sydney des middlewares
• un repo par middleware
• une branche par version de middleware
• un tag par version d’image
⇒ Spécifique au contexte client
14
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Images de base : RHEL & Sydney
• openshift/rhel7.2
• Maintenue par Red Hat
• Doit être la base de toutes les images s’exécutant dans OCP
• Minimum vital : rpm / yum (couplé à un satellite)
• ~ 200 Mo
• sydney/base
• Hérite de l’image RHEL
• Mère de toutes les images des middlewares La Poste
• Inclut quelques outils supplémentaires (curl, tar, bz2, unzip...)
• Positionne des variables d’environnement
15
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Construction des images middleware
Images MW qui héritent de
sydney/base (ou de sydney/java
pour Tomcat)
• sources compilées
par nos soins
httpd, php
• binaires universels
Linux
JDK, MySQL
16
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Construction des images applicatives
17
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Dockerfile de sydney/apache
Extrait :FROM <registry_url>/openshift/sydney-base:1.0-6
ENV HTTPD_VERSION=2.4.10 
HTTPD_HOME=/opt/apache 
MW_CONFIG_PATH=/opt/apache/conf 
APP_PATH=/var/www/static-content
LABEL MW_Version_HTTPD=${HTTPD_VERSION} 
io.openshift.expose-services=8080:httpd 
io.k8s.display-name="Apache Sydney" 
io.openshift.tags="engine,apache,apache2.4"
18
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Attention à yum
• Installation des dépendances RPM avec yum
Ne pas écrire :
Mais :
yum install -y tar bz2
INSTALL_PKGS="tar bz2" && 
yum install -y --setopt=tsflags=nodocs ${INSTALL_PKGS} && 
rpm -V ${INSTALL_PKGS} && 
yum clean all
19
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Descripteur de déploiement
• Template OpenShift au format JSON
• Décrit :
• Route / Service / DeploymentConfig / Secret
• Mapping de port
• Image à utiliser
• Scripts de liveness / readiness
• Volumes persistants
• Variables d’environnement
• …
• A fournir en même temps que les images Docker
20
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Secrets
Chaque middleware propose un modèle de secret que les développeurs peuvent
utiliser pour stocker les informations sensibles (ex : user:passwd)
Modèle au format JSON stockant des couples
clés/valeurs
Le secret sera monté sous la forme de volume dans le
conteneur cible dans un chemin dédié
En production : c’est l’admin qui saisit les valeurs
sensibles et lui-seul en a la connaissance
{
"kind": "Secret",
"apiVersion": "v1",
"metadata": {
"name": "secrets-pwd",
"creationTimestamp":
null
},
"data": {
"key-1": "value-1"
},
"type": "Opaque"
}
21
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Packaging des applis
• Exemple : httpd / php-fpm
• Séparation de la partie statique et dynamique
• 1 repo git par module applicatif :
• ccx-apache
• ccx-php
• Conf middleware par défaut modifiable par les MOE
• Conf applicative gérée par les MOE
FROM <registry_url>/openshift/sydney-apache:2.4-15
COPY www/web/ ${APP_PATH}
COPY conf/httpd-vhost-php.conf ${MW_CONFIG_PATH}/conf.d/ccx
├── conf
│ └── httpd-vhost-php.conf
├── Dockerfile
├── README
└── www
├── static-content
├── css
├── images
└── js
22
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Variables d’environnements
• déclarées dans les images middleware
• standardisent les chemins à utiliser dans les Dockerfile applicatifs
MW_APP_DIR=/tools/app/
CATALINA_HOME=/opt/tomcat/
MW_CONFIG_PATH=/opt/tomcat/conf
APP_PATH=/var/www/j2ee/
APP_CONFIG_PATH=/var/www/conf
APP_CONTEXT_PATH=/var/www/context
...
23
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Bootstrap des applis
• La configuration applicative est modifiée par un script maison en fonction de
l’env
• Recherche / remplace des motifs dans les fichiers de configuration
• Lancé au démarrage du conteneur (CMD)
# Instanciation de la conf applicative
configFileList=${MW_APP_DIR}/configfilelist.json
if [ -f $configFileList ]
then
echo -e "Traitement des fichiers applicatifs"
${MW_SCRIPTS_DIR}/applyConfMethod.sh $configFileList
else
echo -e "L'instanciation de la configuration n'a pu être réalisée car le
fichier $configFileList est introuvable"
fi
echo -e "n--------------------------"
echo -e "Démarrage d'Apachen"
exec ${HTTPD_HOME}/bin/httpd -DFOREGROUND
24
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Deux filières applicatives
Par défaut : les applications entrent dans une filière standard :
• Dockerfile simplifié
• Templates middleware
• Middleware au catalogue
Si les développeurs le souhaitent, en fonction de leur connaissance du PaaS, ils
pourront dans un deuxième temps :
• d’embarquer des Dockerfiles plus complexes
• de proposer des templates applicatifs
• de tester des middlewares alternatifs à des fins d’expérimentation
25
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Déploiement par OpenShift
Toute nouvelle publication d’une image existante dans la registry OpenShift
déclenchera la suppression du pod existant et la création d’un nouveau
oc new-app --template=sydney-apache-2.4-3 -p IMAGE_NAME=u1-apache
-p IMAGE_VERSION=2.5-SNAPSHOT -p APACHE_SERVICE_NAME=vu-rec-apache
-p PHP_FPM_SERVICE_NAME=vu_rec-php
26
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Certificats SSL
• Initialement inclus dans l’image
• Complexes à gérer et mettre à jour
• Désormais, ils sont portés par HA Proxy
• Pros : facilite la maintenance
• Cons : un seul certificat pour toute la plateforme, wildcard DNS étendu
27
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Environnement de dev local
•Rendre les phases de développement ISO plateforme DEV/REC/PROD
•Tester la construction d’image applicative …
• Sans le push sur GitLab
• Pour expérimentation technique
•Avoir les outils adaptés à chaque …
• Technologie de développement
• Solution d’hébergement
•Poste de travail du développeur
• Windows 7 Entreprise SP1
• Intel(R) Core(TM)I5
• 8Go de RAM
• Disque SSD
Postedetravail
28
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Outils de dev local
•Docker Toolbox 1.10 :
• Virtual Box 5.0.16
• Docker 1.10.3
• Version du Linux : Alpine
•Babun (terminal SSH)
•WinPTY (nécessaire pour conserver le terminal Unix lors d'une connexion à un
conteneur depuis un environnement Windows)
•OpenShift Client 1.3.3
29
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Intégration continue
/
Livraison continue
30
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Continuous deployment
31
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Déploiement en dev
# git clone
Poste de
développeur
GitLab
Slave Jenkins
Master Jenkins
ordonne
Code
Déploie pour
MaJ site de
DEV
REGISTRY
NODE
NODE
NODE
notifie
Build
image
32
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Appel du slave Jenkins
33
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Construction de l’image applicative
34
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Déploiement en prod
Poste de
développeur
Slave Jenkins
Master Jenkins
Ordonne
Déploie pour
MaJ site de
PROD
REGISTRY
NODE
NODE
NODE
Lancement manuel
Copie image
(Skopeo)
Via PF DEV
REGISTRY
35
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Pipeline Jenkins
Build QA Approbation Release Deploy
• Jenkinsfile
• DSL groovy d’enchaînement des étapes de constructions
• Versionnable avec les sources du projet
• Reporting visuel
• Rapport d’exécution des TU
36
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Pipeline Jenkins
• Exemple d’exécution d’un job de construction applicative
37
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Job Jenkins de déploiement en Prod
• Le déploiement en prod requiert des credentials spécifiques
• Tous les développeurs ne doivent pas avoir accès à ces informations
• Utilisation de dossiers Jenkins avec des droits différents
● PFA : les devs ont tous les droits
● PROD : les devs n’ont que le droit de build
38
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Tests unitaires sur les middlewares
• Vérification du bon fonctionnement de l’image avant de la publier
• Java est il bien dans le $PATH
$JAVA_HOME est il bien valorisé ?
• Apache httpd démarre t-il ?
• Le user root de MySQL est-il bien désactivé ?
• Rapport dans Jenkins à l’aide du plugin “Tap”
39
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Exploitation
40
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Architecture de la plateforme
41
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Dimensionnement de la plateforme
• 3 VM pour les Master OpenShift
• 1 VIP Alteon pour la répartition de charge
• 1 VM d’infrastructure utilisée pour les installations & migrations OpenShift via
Ansible, surveillance par Centreon, ordonnancement par VTOM
• 2 DELL R730 composés chacun de 2xE5-2630v4 (40 cœurs logiques), 128 Go
de RAM, connectivité réseau 10 Gbps cuivre, connectivité SAN 2x8 Gbps
• Connexion réseau actuellement en 1 Gbps
• 1 seul serveur physique en qualification
• 1 VIP Alteon pour la répartition de charge pour les pods router
42
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Gestion des logs
• Prendre en compte cette problématique dès le départ
• Rappel : je risque d’avoir un grand nombre de conteneurs...
• Plusieurs drivers Docker/Kubernetes dédiés aux logs :
• Json-file (default)
• Syslog (UDP, TCP, TCP+TLS, Unix socker), Journald
• Awslog (AWS), Stackdriver (Google)
• Gelf (Graylog ou Logstash pour ELK)
• Fluentd
• Splunk
• ...
43
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Mes logs près de mes containers
• Utilisation de volumes persistants (un répertoire du host)
• Attention : à l’UID du user d’écriture des logs
• Attention : les logs du conteneur ne sont pas administrés par défaut
(activer la rotation)
• Attention : les conteneurs ne sont pas attachés à un
hôte en particulier
44
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Centralisation des logs
• L’application écrit sur la sortie standard (stdout / stderr)
voir the Twelve-Factor App : http://12factor.net
• Aucune log n’est stockée dans le conteneur
• ⇒ Centralisation des logs dans un puits de données
• Facilite le diagnostic
• Aide la corrélation des traces inter-conteneur
45
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
ELK - Elastic Stack (v5+)
Logstash
/ Fluentd
Elasticsearch
Kibana
46
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Kibana
• IHM de consultation des traces
• Exploration des données via filtre / recherche
• Reporting via différents dashboards
47
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Finalement, où en est-on ?
48
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
3 applications déployées en prod
Aujourd’hui :
3 applis en prod ouvertes aux
utilisateurs
Mises à jour qualifiées de non-
événement par les
développeurs
Bons retours des utilisateurs
(pas de changement perçu
autre qu’une meilleure
réactivité des applis :) )
49
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
REX de l’appli Forum
•Application hébergée en production sur le PaaS
• Réduction des coûts : gain par MEP de 2 jours
• Simplification des MEP : gain en délai de 3 à 7 jours
• Amélioration des performances : à chaque pallier de 20 000 sessions un pod PHP se crée
permettant de répondre facilement aux demandes utilisateur.
0
20000
40000
60000
80000
100000
120000
140000
160000
1 2 3 4 5 6 7
Nombredesession
Nombre de pod
Hors PAAS Avec PAAS
MCO
Charge
DEV
MOE
Exploit
Charge
DEV
MOE
Exploit
Déploiement en rec (3 en moyenne) 1 0 0,06 0
Réalisation de la documentation 0,25 0 0 0
Déploiement en production 0,25 0,25 0,02 0
Incident lié à la MEP 0,25 0,1 0 0
Sous Total 1,75 0,35 0,08 0
Total 2,1 0,08
50
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Le mot L’image de la fin
La théorie
51
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Le mot L’image de la fin
La vraie vie
52
Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017
Biblio
• Continuous intégration :
https://www.martinfowler.com/articles/continuousIntegration.html
• Label Docker, image métadata : https://blog.codeship.com/container-image-
immutability-power-metadata/
• TU OpenShift Mysql : https://github.com/sclorg/mysql-
container/blob/master/5.7/test/run
53

Contenu connexe

Tendances

Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Cédric Leblond
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Silicon Comté
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinLudovic Piot
 
Kubernetes Meetup Paris #5 - Metriques applicatives k8s
Kubernetes Meetup Paris #5 - Metriques applicatives k8sKubernetes Meetup Paris #5 - Metriques applicatives k8s
Kubernetes Meetup Paris #5 - Metriques applicatives k8sArnaud MAZIN
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et DockerStephane Manciot
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation ConteneurisationTADx
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?ALTER WAY
 
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016Alexis Ducastel
 
Déploiement et gestion d'un site web avec Rancher
Déploiement et gestion d'un site web avec RancherDéploiement et gestion d'un site web avec Rancher
Déploiement et gestion d'un site web avec RancherAnthony Sigogne
 
Au secours, mon chef m'a demandé de passer au DevOps
Au secours, mon chef m'a demandé de passer au DevOpsAu secours, mon chef m'a demandé de passer au DevOps
Au secours, mon chef m'a demandé de passer au DevOpsantony_guilloteau
 
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Publicis Sapient Engineering
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec dockergcatt
 
Julien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsJulien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsWeb à Québec
 
Déploiements avec Docker
Déploiements avec DockerDéploiements avec Docker
Déploiements avec DockerLuis Lopez
 
Workshop mesos docker devoxx fr 2016
Workshop mesos docker devoxx fr 2016Workshop mesos docker devoxx fr 2016
Workshop mesos docker devoxx fr 2016Julia Mateo
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+ekino
 

Tendances (20)

Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
 
Présentation Docker
Présentation DockerPrésentation Docker
Présentation Docker
 
REX Devops Docker
REX Devops DockerREX Devops Docker
REX Devops Docker
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Kubernetes Meetup Paris #5 - Metriques applicatives k8s
Kubernetes Meetup Paris #5 - Metriques applicatives k8sKubernetes Meetup Paris #5 - Metriques applicatives k8s
Kubernetes Meetup Paris #5 - Metriques applicatives k8s
 
kubernetes, pourquoi et comment
kubernetes, pourquoi et commentkubernetes, pourquoi et comment
kubernetes, pourquoi et comment
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation Conteneurisation
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
 
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
Docker avec Rancher, du dev à la prod - Makazi au devopsdday 2016
 
Déploiement et gestion d'un site web avec Rancher
Déploiement et gestion d'un site web avec RancherDéploiement et gestion d'un site web avec Rancher
Déploiement et gestion d'un site web avec Rancher
 
Au secours, mon chef m'a demandé de passer au DevOps
Au secours, mon chef m'a demandé de passer au DevOpsAu secours, mon chef m'a demandé de passer au DevOps
Au secours, mon chef m'a demandé de passer au DevOps
 
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec docker
 
Intro docker
Intro dockerIntro docker
Intro docker
 
Julien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsJulien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printemps
 
Déploiements avec Docker
Déploiements avec DockerDéploiements avec Docker
Déploiements avec Docker
 
Workshop mesos docker devoxx fr 2016
Workshop mesos docker devoxx fr 2016Workshop mesos docker devoxx fr 2016
Workshop mesos docker devoxx fr 2016
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+
 

Similaire à REX Openshift à la Poste

Pyconfr2018 deploy des application python dans un cluster open shift
Pyconfr2018 deploy des application python dans un cluster open shiftPyconfr2018 deploy des application python dans un cluster open shift
Pyconfr2018 deploy des application python dans un cluster open shiftArthur Lutz
 
Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...
Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...
Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...Arthur Lutz
 
Alphorm.com Support de la Formation PromoxVE 4.x
Alphorm.com Support de la Formation PromoxVE 4.xAlphorm.com Support de la Formation PromoxVE 4.x
Alphorm.com Support de la Formation PromoxVE 4.xAlphorm
 
SUSE Expert Days Paris 2018 – CaaSP
SUSE Expert Days Paris 2018 – CaaSPSUSE Expert Days Paris 2018 – CaaSP
SUSE Expert Days Paris 2018 – CaaSPSUSE
 
Openshift 3 & Kubernetes
Openshift 3 & KubernetesOpenshift 3 & Kubernetes
Openshift 3 & KubernetesPerfect Memory
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Antoine Rey
 
Production logicielle, outils et pratiques
Production logicielle, outils et pratiquesProduction logicielle, outils et pratiques
Production logicielle, outils et pratiquesJohan Moreau
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...MSDEVMTL
 
Devoteam REX OpenShift DevOps - Red Hat Roadshow Paris - avril 2018
Devoteam REX OpenShift DevOps - Red Hat Roadshow Paris - avril 2018Devoteam REX OpenShift DevOps - Red Hat Roadshow Paris - avril 2018
Devoteam REX OpenShift DevOps - Red Hat Roadshow Paris - avril 2018Cedric Girard
 
BreizhCamp 2022
BreizhCamp 2022BreizhCamp 2022
BreizhCamp 2022SpikeeLabs
 
Esupdays 19 : Packaging Esup Cas
Esupdays 19 : Packaging Esup Cas Esupdays 19 : Packaging Esup Cas
Esupdays 19 : Packaging Esup Cas Ludovic A
 
Power shell saturday Paris 2017 Omiossec
Power shell saturday  Paris 2017 OmiossecPower shell saturday  Paris 2017 Omiossec
Power shell saturday Paris 2017 OmiossecOlivier Miossec
 
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...Publicis Sapient Engineering
 
PHP dans le cloud
PHP dans le cloudPHP dans le cloud
PHP dans le cloudMicrosoft
 
8 Rex : Mise en place de DevOps sur Azure
8   Rex : Mise en place de DevOps sur Azure8   Rex : Mise en place de DevOps sur Azure
8 Rex : Mise en place de DevOps sur AzureaOS Community
 
Py osv newsletter-042018
Py osv newsletter-042018Py osv newsletter-042018
Py osv newsletter-042018FabMob
 

Similaire à REX Openshift à la Poste (20)

Pyconfr2018 deploy des application python dans un cluster open shift
Pyconfr2018 deploy des application python dans un cluster open shiftPyconfr2018 deploy des application python dans un cluster open shift
Pyconfr2018 deploy des application python dans un cluster open shift
 
Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...
Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...
Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
Alphorm.com Support de la Formation PromoxVE 4.x
Alphorm.com Support de la Formation PromoxVE 4.xAlphorm.com Support de la Formation PromoxVE 4.x
Alphorm.com Support de la Formation PromoxVE 4.x
 
SUSE Expert Days Paris 2018 – CaaSP
SUSE Expert Days Paris 2018 – CaaSPSUSE Expert Days Paris 2018 – CaaSP
SUSE Expert Days Paris 2018 – CaaSP
 
Openshift 3 & Kubernetes
Openshift 3 & KubernetesOpenshift 3 & Kubernetes
Openshift 3 & Kubernetes
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
 
Production logicielle, outils et pratiques
Production logicielle, outils et pratiquesProduction logicielle, outils et pratiques
Production logicielle, outils et pratiques
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
 
Devoteam REX OpenShift DevOps - Red Hat Roadshow Paris - avril 2018
Devoteam REX OpenShift DevOps - Red Hat Roadshow Paris - avril 2018Devoteam REX OpenShift DevOps - Red Hat Roadshow Paris - avril 2018
Devoteam REX OpenShift DevOps - Red Hat Roadshow Paris - avril 2018
 
BreizhCamp 2022
BreizhCamp 2022BreizhCamp 2022
BreizhCamp 2022
 
Esupdays 19 : Packaging Esup Cas
Esupdays 19 : Packaging Esup Cas Esupdays 19 : Packaging Esup Cas
Esupdays 19 : Packaging Esup Cas
 
Automatiser l'ère post-dev
Automatiser l'ère post-devAutomatiser l'ère post-dev
Automatiser l'ère post-dev
 
Power shell saturday Paris 2017 Omiossec
Power shell saturday  Paris 2017 OmiossecPower shell saturday  Paris 2017 Omiossec
Power shell saturday Paris 2017 Omiossec
 
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
 
Windows HPC server sur Windows Azure (100
Windows HPC server sur Windows Azure (100Windows HPC server sur Windows Azure (100
Windows HPC server sur Windows Azure (100
 
Php dans le cloud
Php dans le cloudPhp dans le cloud
Php dans le cloud
 
PHP dans le cloud
PHP dans le cloudPHP dans le cloud
PHP dans le cloud
 
8 Rex : Mise en place de DevOps sur Azure
8   Rex : Mise en place de DevOps sur Azure8   Rex : Mise en place de DevOps sur Azure
8 Rex : Mise en place de DevOps sur Azure
 
Py osv newsletter-042018
Py osv newsletter-042018Py osv newsletter-042018
Py osv newsletter-042018
 

Plus de Membré Guillaume

Devenez l’Élu et maitrisez la Matrice AWS 🦸
Devenez l’Élu et maitrisez la Matrice AWS 🦸Devenez l’Élu et maitrisez la Matrice AWS 🦸
Devenez l’Élu et maitrisez la Matrice AWS 🦸Membré Guillaume
 
⌨️ Azerty, Qwerty, peut-on faire mieux ?
⌨️ Azerty, Qwerty, peut-on faire mieux ?⌨️ Azerty, Qwerty, peut-on faire mieux ?
⌨️ Azerty, Qwerty, peut-on faire mieux ?Membré Guillaume
 
Réception d'image satellite 🛰️ avec un Raspberry
Réception d'image satellite 🛰️ avec un RaspberryRéception d'image satellite 🛰️ avec un Raspberry
Réception d'image satellite 🛰️ avec un RaspberryMembré Guillaume
 
AWS : les 10 trucs que j’aurais aimé connaître avant de commencer
AWS : les 10 trucs que j’aurais aimé connaître avant de commencerAWS : les 10 trucs que j’aurais aimé connaître avant de commencer
AWS : les 10 trucs que j’aurais aimé connaître avant de commencerMembré Guillaume
 
La tête dans les nuages avec un Raspberry Pi
La tête dans les nuages avec un Raspberry PiLa tête dans les nuages avec un Raspberry Pi
La tête dans les nuages avec un Raspberry PiMembré Guillaume
 
Suivre les avions des lignes avec un Raspberry Pi
Suivre les avions des lignes avec un Raspberry PiSuivre les avions des lignes avec un Raspberry Pi
Suivre les avions des lignes avec un Raspberry PiMembré Guillaume
 
Suivre les avions des lignes avec un Raspberry Pi
Suivre les avions des lignes avec un Raspberry PiSuivre les avions des lignes avec un Raspberry Pi
Suivre les avions des lignes avec un Raspberry PiMembré Guillaume
 

Plus de Membré Guillaume (7)

Devenez l’Élu et maitrisez la Matrice AWS 🦸
Devenez l’Élu et maitrisez la Matrice AWS 🦸Devenez l’Élu et maitrisez la Matrice AWS 🦸
Devenez l’Élu et maitrisez la Matrice AWS 🦸
 
⌨️ Azerty, Qwerty, peut-on faire mieux ?
⌨️ Azerty, Qwerty, peut-on faire mieux ?⌨️ Azerty, Qwerty, peut-on faire mieux ?
⌨️ Azerty, Qwerty, peut-on faire mieux ?
 
Réception d'image satellite 🛰️ avec un Raspberry
Réception d'image satellite 🛰️ avec un RaspberryRéception d'image satellite 🛰️ avec un Raspberry
Réception d'image satellite 🛰️ avec un Raspberry
 
AWS : les 10 trucs que j’aurais aimé connaître avant de commencer
AWS : les 10 trucs que j’aurais aimé connaître avant de commencerAWS : les 10 trucs que j’aurais aimé connaître avant de commencer
AWS : les 10 trucs que j’aurais aimé connaître avant de commencer
 
La tête dans les nuages avec un Raspberry Pi
La tête dans les nuages avec un Raspberry PiLa tête dans les nuages avec un Raspberry Pi
La tête dans les nuages avec un Raspberry Pi
 
Suivre les avions des lignes avec un Raspberry Pi
Suivre les avions des lignes avec un Raspberry PiSuivre les avions des lignes avec un Raspberry Pi
Suivre les avions des lignes avec un Raspberry Pi
 
Suivre les avions des lignes avec un Raspberry Pi
Suivre les avions des lignes avec un Raspberry PiSuivre les avions des lignes avec un Raspberry Pi
Suivre les avions des lignes avec un Raspberry Pi
 

REX Openshift à la Poste

  • 1. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Retour d’expérience sur la mise en place d’OpenShift à La Poste Guillaume Membré - Zenika Pascal Dufourd - La Poste 1
  • 2. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Plan • Objectifs fixés • Mise en œuvre de conteneurs Docker avec OpenShift • Intégration continue / Livraison continue • Exploitation • Finalement, où en est-on ? 2
  • 3. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Objectifs 3
  • 4. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Les enjeux pour la DSI La Poste Simplification des MEP • Automatisation des MEP • Moins de documentation • Rapidité d’installation • MEP plus légères et plus fréquentes • Reproductibilité Réduction des coûts Amélioration des performances Facilitation de l’agilité • Scalabilité des applications • Optimisation des ressources • Dimensionnement évolutif de la plateforme • Visualisation en direct de la montée en charge • Moins d’acteurs de MEP • Moins d’erreurs de MEP • Moins de retours arrière • Moins d’incidents • Adéquation du mode de déploiement avec les projets AGILE • Facilite l’expérimentation (instanciation rapide d’env de dev ou test) • Solution adaptée aux projets pilotés par les délais 4
  • 5. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Organisation du projet • Projet en mode Agile et DevOps • Méthode SCRUM adaptée • 2 Scrum masters • 2 Product Owners (Logiciel et Infra) • Equipe pluridisciplinaire • Projet en mode plateau physique (complété en virtuel) • Conduite du changement • Présentation des concepts du PaaS aux MOE • Tutorat des équipes des projets pilotes • Collaboration avec la DSI du Courrier • Instances de coordination • Participation croisée (échanges techniques, études, démo) • Convergence des solutions techniques 5
  • 6. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Des profils hétéroclites 6
  • 7. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 3 applications sur le pilote 3 candidats basés sur différentes technos : 7
  • 8. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Système Orchestration Solution mise en oeuvre Conteneurs Services Outils 8
  • 9. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Mise en œuvre de conteneurs Docker avec OpenShift 9
  • 10. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Vue Utilisateur ROUTES NODE NODE NODE Utilisateur 10
  • 11. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Vue développeur ROUTES MASTER NODE NODE NODE STOCKAGE SOURCES NODE SERVICES Développeur MASTER AUTHENT / API DATA STORE MULTI TENANCY ORCHESTRATION REPLICATION SCALING SCHEDULING PIC Utilisateur REGISTRY PUITS DE LOGS 11
  • 12. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Workflow de Delivery Expert MW Développeur Base image (Sydney) Middleware image Image Applicative Exploitant Supervision (conf) Intégrateur / Administrateur Projet OCP & egress policy Supervision applicative Monitoring des jobs Ordonnancements (conf) Paramétrage applicatif 12
  • 13. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Hiérarchie des images middleware 13
  • 14. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Organisation des MW dans GitLab • Un groupe pour la filière Sydney des middlewares • un repo par middleware • une branche par version de middleware • un tag par version d’image ⇒ Spécifique au contexte client 14
  • 15. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Images de base : RHEL & Sydney • openshift/rhel7.2 • Maintenue par Red Hat • Doit être la base de toutes les images s’exécutant dans OCP • Minimum vital : rpm / yum (couplé à un satellite) • ~ 200 Mo • sydney/base • Hérite de l’image RHEL • Mère de toutes les images des middlewares La Poste • Inclut quelques outils supplémentaires (curl, tar, bz2, unzip...) • Positionne des variables d’environnement 15
  • 16. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Construction des images middleware Images MW qui héritent de sydney/base (ou de sydney/java pour Tomcat) • sources compilées par nos soins httpd, php • binaires universels Linux JDK, MySQL 16
  • 17. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Construction des images applicatives 17
  • 18. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Dockerfile de sydney/apache Extrait :FROM <registry_url>/openshift/sydney-base:1.0-6 ENV HTTPD_VERSION=2.4.10 HTTPD_HOME=/opt/apache MW_CONFIG_PATH=/opt/apache/conf APP_PATH=/var/www/static-content LABEL MW_Version_HTTPD=${HTTPD_VERSION} io.openshift.expose-services=8080:httpd io.k8s.display-name="Apache Sydney" io.openshift.tags="engine,apache,apache2.4" 18
  • 19. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Attention à yum • Installation des dépendances RPM avec yum Ne pas écrire : Mais : yum install -y tar bz2 INSTALL_PKGS="tar bz2" && yum install -y --setopt=tsflags=nodocs ${INSTALL_PKGS} && rpm -V ${INSTALL_PKGS} && yum clean all 19
  • 20. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Descripteur de déploiement • Template OpenShift au format JSON • Décrit : • Route / Service / DeploymentConfig / Secret • Mapping de port • Image à utiliser • Scripts de liveness / readiness • Volumes persistants • Variables d’environnement • … • A fournir en même temps que les images Docker 20
  • 21. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Secrets Chaque middleware propose un modèle de secret que les développeurs peuvent utiliser pour stocker les informations sensibles (ex : user:passwd) Modèle au format JSON stockant des couples clés/valeurs Le secret sera monté sous la forme de volume dans le conteneur cible dans un chemin dédié En production : c’est l’admin qui saisit les valeurs sensibles et lui-seul en a la connaissance { "kind": "Secret", "apiVersion": "v1", "metadata": { "name": "secrets-pwd", "creationTimestamp": null }, "data": { "key-1": "value-1" }, "type": "Opaque" } 21
  • 22. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Packaging des applis • Exemple : httpd / php-fpm • Séparation de la partie statique et dynamique • 1 repo git par module applicatif : • ccx-apache • ccx-php • Conf middleware par défaut modifiable par les MOE • Conf applicative gérée par les MOE FROM <registry_url>/openshift/sydney-apache:2.4-15 COPY www/web/ ${APP_PATH} COPY conf/httpd-vhost-php.conf ${MW_CONFIG_PATH}/conf.d/ccx ├── conf │ └── httpd-vhost-php.conf ├── Dockerfile ├── README └── www ├── static-content ├── css ├── images └── js 22
  • 23. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Variables d’environnements • déclarées dans les images middleware • standardisent les chemins à utiliser dans les Dockerfile applicatifs MW_APP_DIR=/tools/app/ CATALINA_HOME=/opt/tomcat/ MW_CONFIG_PATH=/opt/tomcat/conf APP_PATH=/var/www/j2ee/ APP_CONFIG_PATH=/var/www/conf APP_CONTEXT_PATH=/var/www/context ... 23
  • 24. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Bootstrap des applis • La configuration applicative est modifiée par un script maison en fonction de l’env • Recherche / remplace des motifs dans les fichiers de configuration • Lancé au démarrage du conteneur (CMD) # Instanciation de la conf applicative configFileList=${MW_APP_DIR}/configfilelist.json if [ -f $configFileList ] then echo -e "Traitement des fichiers applicatifs" ${MW_SCRIPTS_DIR}/applyConfMethod.sh $configFileList else echo -e "L'instanciation de la configuration n'a pu être réalisée car le fichier $configFileList est introuvable" fi echo -e "n--------------------------" echo -e "Démarrage d'Apachen" exec ${HTTPD_HOME}/bin/httpd -DFOREGROUND 24
  • 25. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Deux filières applicatives Par défaut : les applications entrent dans une filière standard : • Dockerfile simplifié • Templates middleware • Middleware au catalogue Si les développeurs le souhaitent, en fonction de leur connaissance du PaaS, ils pourront dans un deuxième temps : • d’embarquer des Dockerfiles plus complexes • de proposer des templates applicatifs • de tester des middlewares alternatifs à des fins d’expérimentation 25
  • 26. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Déploiement par OpenShift Toute nouvelle publication d’une image existante dans la registry OpenShift déclenchera la suppression du pod existant et la création d’un nouveau oc new-app --template=sydney-apache-2.4-3 -p IMAGE_NAME=u1-apache -p IMAGE_VERSION=2.5-SNAPSHOT -p APACHE_SERVICE_NAME=vu-rec-apache -p PHP_FPM_SERVICE_NAME=vu_rec-php 26
  • 27. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Certificats SSL • Initialement inclus dans l’image • Complexes à gérer et mettre à jour • Désormais, ils sont portés par HA Proxy • Pros : facilite la maintenance • Cons : un seul certificat pour toute la plateforme, wildcard DNS étendu 27
  • 28. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Environnement de dev local •Rendre les phases de développement ISO plateforme DEV/REC/PROD •Tester la construction d’image applicative … • Sans le push sur GitLab • Pour expérimentation technique •Avoir les outils adaptés à chaque … • Technologie de développement • Solution d’hébergement •Poste de travail du développeur • Windows 7 Entreprise SP1 • Intel(R) Core(TM)I5 • 8Go de RAM • Disque SSD Postedetravail 28
  • 29. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Outils de dev local •Docker Toolbox 1.10 : • Virtual Box 5.0.16 • Docker 1.10.3 • Version du Linux : Alpine •Babun (terminal SSH) •WinPTY (nécessaire pour conserver le terminal Unix lors d'une connexion à un conteneur depuis un environnement Windows) •OpenShift Client 1.3.3 29
  • 30. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Intégration continue / Livraison continue 30
  • 31. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Continuous deployment 31
  • 32. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Déploiement en dev # git clone Poste de développeur GitLab Slave Jenkins Master Jenkins ordonne Code Déploie pour MaJ site de DEV REGISTRY NODE NODE NODE notifie Build image 32
  • 33. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Appel du slave Jenkins 33
  • 34. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Construction de l’image applicative 34
  • 35. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Déploiement en prod Poste de développeur Slave Jenkins Master Jenkins Ordonne Déploie pour MaJ site de PROD REGISTRY NODE NODE NODE Lancement manuel Copie image (Skopeo) Via PF DEV REGISTRY 35
  • 36. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Pipeline Jenkins Build QA Approbation Release Deploy • Jenkinsfile • DSL groovy d’enchaînement des étapes de constructions • Versionnable avec les sources du projet • Reporting visuel • Rapport d’exécution des TU 36
  • 37. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Pipeline Jenkins • Exemple d’exécution d’un job de construction applicative 37
  • 38. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Job Jenkins de déploiement en Prod • Le déploiement en prod requiert des credentials spécifiques • Tous les développeurs ne doivent pas avoir accès à ces informations • Utilisation de dossiers Jenkins avec des droits différents ● PFA : les devs ont tous les droits ● PROD : les devs n’ont que le droit de build 38
  • 39. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Tests unitaires sur les middlewares • Vérification du bon fonctionnement de l’image avant de la publier • Java est il bien dans le $PATH $JAVA_HOME est il bien valorisé ? • Apache httpd démarre t-il ? • Le user root de MySQL est-il bien désactivé ? • Rapport dans Jenkins à l’aide du plugin “Tap” 39
  • 40. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Exploitation 40
  • 41. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Architecture de la plateforme 41
  • 42. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Dimensionnement de la plateforme • 3 VM pour les Master OpenShift • 1 VIP Alteon pour la répartition de charge • 1 VM d’infrastructure utilisée pour les installations & migrations OpenShift via Ansible, surveillance par Centreon, ordonnancement par VTOM • 2 DELL R730 composés chacun de 2xE5-2630v4 (40 cœurs logiques), 128 Go de RAM, connectivité réseau 10 Gbps cuivre, connectivité SAN 2x8 Gbps • Connexion réseau actuellement en 1 Gbps • 1 seul serveur physique en qualification • 1 VIP Alteon pour la répartition de charge pour les pods router 42
  • 43. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Gestion des logs • Prendre en compte cette problématique dès le départ • Rappel : je risque d’avoir un grand nombre de conteneurs... • Plusieurs drivers Docker/Kubernetes dédiés aux logs : • Json-file (default) • Syslog (UDP, TCP, TCP+TLS, Unix socker), Journald • Awslog (AWS), Stackdriver (Google) • Gelf (Graylog ou Logstash pour ELK) • Fluentd • Splunk • ... 43
  • 44. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Mes logs près de mes containers • Utilisation de volumes persistants (un répertoire du host) • Attention : à l’UID du user d’écriture des logs • Attention : les logs du conteneur ne sont pas administrés par défaut (activer la rotation) • Attention : les conteneurs ne sont pas attachés à un hôte en particulier 44
  • 45. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Centralisation des logs • L’application écrit sur la sortie standard (stdout / stderr) voir the Twelve-Factor App : http://12factor.net • Aucune log n’est stockée dans le conteneur • ⇒ Centralisation des logs dans un puits de données • Facilite le diagnostic • Aide la corrélation des traces inter-conteneur 45
  • 46. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 ELK - Elastic Stack (v5+) Logstash / Fluentd Elasticsearch Kibana 46
  • 47. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Kibana • IHM de consultation des traces • Exploration des données via filtre / recherche • Reporting via différents dashboards 47
  • 48. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Finalement, où en est-on ? 48
  • 49. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 3 applications déployées en prod Aujourd’hui : 3 applis en prod ouvertes aux utilisateurs Mises à jour qualifiées de non- événement par les développeurs Bons retours des utilisateurs (pas de changement perçu autre qu’une meilleure réactivité des applis :) ) 49
  • 50. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 REX de l’appli Forum •Application hébergée en production sur le PaaS • Réduction des coûts : gain par MEP de 2 jours • Simplification des MEP : gain en délai de 3 à 7 jours • Amélioration des performances : à chaque pallier de 20 000 sessions un pod PHP se crée permettant de répondre facilement aux demandes utilisateur. 0 20000 40000 60000 80000 100000 120000 140000 160000 1 2 3 4 5 6 7 Nombredesession Nombre de pod Hors PAAS Avec PAAS MCO Charge DEV MOE Exploit Charge DEV MOE Exploit Déploiement en rec (3 en moyenne) 1 0 0,06 0 Réalisation de la documentation 0,25 0 0 0 Déploiement en production 0,25 0,25 0,02 0 Incident lié à la MEP 0,25 0,1 0 0 Sous Total 1,75 0,35 0,08 0 Total 2,1 0,08 50
  • 51. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Le mot L’image de la fin La théorie 51
  • 52. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Le mot L’image de la fin La vraie vie 52
  • 53. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Biblio • Continuous intégration : https://www.martinfowler.com/articles/continuousIntegration.html • Label Docker, image métadata : https://blog.codeship.com/container-image- immutability-power-metadata/ • TU OpenShift Mysql : https://github.com/sclorg/mysql- container/blob/master/5.7/test/run 53