Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

REX Openshift à la Poste

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité

Consultez-les par la suite

1 sur 53 Publicité

REX Openshift à la Poste

Télécharger pour lire hors ligne

Présentation au Docker Meetup de Nantes le 27 juin 2017

Dans une démarche DevOps, La Poste a choisi de mettre en place l'orchestrateur de conteneur Openshift, basé sur Kubernetes. Nous détaillerons les changements opérés (techniques et humains) pour une mise en place et une adoption réussie d'un Paas. Du POC à la MEP, quelles sont les étapes ?

Conférence donnée au Docker Meetup Nantes, juin 2017

Présentation au Docker Meetup de Nantes le 27 juin 2017

Dans une démarche DevOps, La Poste a choisi de mettre en place l'orchestrateur de conteneur Openshift, basé sur Kubernetes. Nous détaillerons les changements opérés (techniques et humains) pour une mise en place et une adoption réussie d'un Paas. Du POC à la MEP, quelles sont les étapes ?

Conférence donnée au Docker Meetup Nantes, juin 2017

Publicité
Publicité

Plus De Contenu Connexe

Diaporamas pour vous (20)

Similaire à REX Openshift à la Poste (20)

Publicité

REX Openshift à la Poste

  1. 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. 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. 3. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Objectifs 3
  4. 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. 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. 6. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Des profils hétéroclites 6
  7. 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. 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. 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. 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. 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. 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. 13. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Hiérarchie des images middleware 13
  14. 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. 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. 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. 17. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Construction des images applicatives 17
  18. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 30. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Intégration continue / Livraison continue 30
  31. 31. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Continuous deployment 31
  32. 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. 33. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Appel du slave Jenkins 33
  34. 34. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Construction de l’image applicative 34
  35. 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. 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. 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. 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. 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. 40. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Exploitation 40
  41. 41. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Architecture de la plateforme 41
  42. 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. 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. 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. 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. 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. 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. 48. Retour d'expérience sur la mise en place d'OpenShift à La Poste - 27/06/2017 Finalement, où en est-on ? 48
  49. 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. 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. 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. 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. 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

×