SlideShare une entreprise Scribd logo
1  sur  39
Comment arriver
jusqu’en production?
Comment arriver en production ?
• Après avoir travaillé en « local », le passage en production
n’est pas si simple,
• Vous allez devoir prendre des décisions structurantes sur
– l’organisation
– le workflow de travail
– l’architecture
– l’outillage
– …
Quelle organisation ?
Une équipe pluridisciplinaire
 Formez une équipe pluridisciplinaire
 Ne pas attendre d’avoir finalisé vos premières images avant d’aller voir les Ops
 Privilégier le « fail fast » dans la communication et dans les tests
 Les choix structurants doivent être discutés dès le départ entre les différentes
personnes de l’équipe
La Dream Team
 Le sponsor qui a suffisamment de poids pour appuyer les décisions ou arbitrer
certains blocages
 L’architecte qui garantira la cohérence applicative
 L’ingénieur système chargé des aspects installations de produits (docker,
registry…) et OS (choix de l’OS, configuration des Fileystem…)
 Le développeur va construire et mettre à disposition l’image applicative
 L’intégrateur est garant du paramétrage et du déploiement sur les
environnements de tests, recette
 L’exploitant va intégrer le paramétrage de production, brancher ses menus
d’exploitation, brancher la supervision, collecter les logs…
 L’expert Docker intervient de manière ponctuelle pour aider au lancement ou
pour débloquer une situation particulière
Quel workflow ?
Le workflow – Une évolution pas une révolution
• Pas de grand changement dans la façon d’interagir entre les équipes
• Seul le livrable change
• Certaines questions remonterons plus vite (où écrire les logs ? quel
user d’exécution ?...)
• Cela implique plus de proximité/dialogue/discussion entre les
équipes
Le Workflow de delivery
Ingénieur SysIngénieur Sys DéveloppeurDéveloppeur
Base image (OS)Base image (OS)
Librarie image
(so)
Librarie image
(so)
Image
Applicative
Image
Applicative
IntégrateurIntégrateur
Product image
(Tomcat, Weblogic,
ActiveMQ…)
Product image
(Tomcat, Weblogic,
ActiveMQ…)
Paramétrage
Applicatif
Paramétrage
Applicatif
ExploitantExploitant
Orchestration
Mechanism
Orchestration
Mechanism
Paramétrage
Applicatif
Paramétrage
Applicatif
Orchestration
Mechanism
Orchestration
Mechanism
Expert DockerExpert Docker
ArchitecteArchitecte
TopologieTopologie TopologieTopologie
Quelle architecture
physique ?
Quel OS ?
 Quel OS ?
 Linux 64 bits
 Kernel récent (3.10) pour bénéficier de toutes les fonctionnalités de Docker
 Attention au compatibilité d’OS et aux versions Docker supportées :
 RedHat/CentOS 6.5 minimum
 RedHat/CentOS 6.7 pour Docker 1.7.1 maximum
 RedHat/CentOS 7.x pour toutes les versions de Docker
 Ubuntu 12.04, 14.04, 15.10
 Debian 7.7, 8
 Une distribution dédiée à Docker ?
 RancherOS
 CoreOS
Serveur physique ou virtuel ?
 Docker fonctionne sur les deux architectures (bare metal ou virtuel)
 Dépend de la typologie de vos applications (besoin de performance I/O)
 Avez-vous un programme de sortie de la virtualisation ?
 Avez-vous besoin d’optimiser au mieux vos serveurs ?
 Faites vous de l’hébergement multi-tenant ?
Que mettre dans mon
image ?
Quelle image de base ?
 Est-ce que je peux utiliser une image du Hub ?
 Dois-je reconstruire une image avec mon OS complet ?
 Préférez des images légères ne contenant que ce qui est nécessaire
 Plus facile à faire évoluer
 Plus léger, donc portable
 Moins de surface à couvrir pour les failles de sécurité
Que mettre dans mon image ?
• Mon application
– Stateless : application Front ou middle
– Statefull : oui mais dépend de la partie statefull. Nécessitera peut-être un
storage driver particulier.
• Ma configuration d’application
– Non et Oui
• Non pour ne pas avoir des images environnement dépendant
• Oui dans le cadre de l’utilisation de data volume (confd FTW!)
• Base de données
– Oui pour la partie développement
– Non pour la partie production
Comment découper mes images
• Une image doit correspondre à un module de votre application (un WS, une
IHM, un broker…)
• Permet de découpler le cycle de vie
• Permet de scaler plus facilement le module
Découper mon application en images
LBLB
IHMIHM
LoadBalancerLoadBalancer
IHMIHM
Web serviceWeb service
CacheCache
BDDBDD
IHMIHM
WSWS WSWS WSWS
CacheCache CacheCache
BDDBDD
Où stocker ses images ?
Mettre en place sa registry
 Le Hub en public ou privé via abonnement
 La Docker Trusted Registry
 Une Registry privée en SaaS (Quay.io, Aws, ...)
 Une registry v2 selfhosted
Registry v2 Self Hosted
 Se baser sur l’image du Hub
 Attention à la configuration par défaut
 Prévoir un espace de stockage pour les images
 Monitorer l’espace disponible
 Prévoir des namespaces différents pour les équipes et/ou les images
production ready
Registry v2 Self Hosted
 Nécessité d’outiller la registry
 Pas d’IHM (possibilité d’utiliser des images du hub)
 Pas d’outil de nettoyage (purge des images)
 Peu de sécurité
 Pas d’alerting…
Construire les images ?
Construire vos images
• Le processus de construction automatique d’une image est
très simple
• L’intégrer dans vos outil d’intégration continue
• Utiliser le mécanisme de tag pour versionner vos images
• N’ajouter que ce qui est nécessaire
Construire vos images
• Garder en tête les bonnes pratiques de création d’images
• Attention au nombre de layer créés
• Attention à la taille du répertoire de construction d’image
(utilisez le .dockerignore) pour ne pas saturer le daemon
docker
• Attention à l’utilisation du cache local
The maven effect !
The maven effect ! Ne téléchargez pas tout Internet
• Attention à l’utilisation de la bande passante
– Une image fait entre 4Mo et 1Go sur le Hub
• Mettre en place un proxy (fonctionnalité de la registry v2)
• Mettre à disposition un catalogue d’entreprise (Rancher,
Registry v2, DTR)
Ou la gestion de mes logs
Où écrire mes logs ?
• Prendre en compte cette problématique dès le départ
• Plusieurs log drivers disponibles
– Json-file (default)
– Syslog (UDP, TCP, TCP+TLS, Unix socker)
– Awslog (AWS)
– Gelf (Graylog ou Logstask pour ELK)
– Fluentd
– journald
– splunk
Mes logs près de mes containers
• Utilisation du volume disk (un répertoire du host)
• Attention au UID du user d’écriture des logs
• Attention les logs du container ne sont pas gérés par défaut
(activer la rotation)
La collecte des logs
• L’application publie dans la sortie standard
• Aucun logs ne reste stocké sur le container
• Utilisation du driver GELF pour envoi vers ELK
• Facilite le diagnostic et la remontée d’erreur
Faire parler des
containers entre eux
Docker et la gestion du Réseau
• Le daemon Docker attribut une adresse IP au container à sa création,
cette IP est locale à la machine (pénurie IPv4)
• Possibilité de publier le port du container sur le port du Host
– Ex : Tomcat : 80 sur Host et 8080 dans le container
• Deux containers sur des machines différentes ne pourront pas
communiquer naturellement (utilisation de port publiés)
• Gestion du network overlay avec Swarm, Rancher, Flannel, Calico ou
Weave
Jusqu’ici tout va bien
• Je travaille dans un environnement maîtrisé
– Nombre de containers connus à l’avance
– Utilisation des ports connus
– Tous les containers tournent sur une même machine
– Pas ou peu d’évolution de l’architecture
• L’utilisation de Docker Compose peut suffire
– Description de mon application via un fichier yml
– Possibilité de scaler facilement une partie de l’application
Architecture distribuée et maitrisée
• La machines sont typées (front, middle, cache…)
• Des containers répartis sur des machines différentes
• Nécessité de publier des ports sur les hosts
• Configuration statique entre container
Comment gérer le load balancing ?
• Gestion statique/à la main des loadbalancer
• Découverte de service (etcd, consul, zookeeper, fleet…)
• Traefik un reverse proxy intelligent
– Rechargement à chaud et via API
– Supporte plusieurs backend (Docker, Consul, etcd, Zookeeper,
Mesos/Marathon, file…)
– Ajoute ou supprime un container sur la base de label et du
backend choisi
L’utilité d’un orchestrateur
• Je ne veux pas redévelopper un système de répartition de mes
containers
• Mon architecture est changeante
• Je ne veux pas devoir me poser la question de où lancer mes
containers
• Je veux injecter des contraintes
• Je veux m’abstraire de la communication entre containers
Quels orchestrateurs ?
+
Vos interlocuteurs
Youcef Yekhlef
Architecture
&
Culture Devops
@youcef_yekhlef
youcef.yekhlef@zenika.com
Christophe Furmaniak
Architecture
&
Culture Devops
@looztra
christophe.furmaniak@zenika.com
Contactez-nous
• info@zenika.com
• Tél : 01 45 26 19 15
• Notre site web :
• www.zenika.com
•
• Notre blog technique :
• blog.zenika.com
•
•
• Twitter : @ZenikaIT

Contenu connexe

Tendances

Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Jérôme Petazzoni
 
Docker du mythe à la réalité
Docker du mythe à la réalitéDocker du mythe à la réalité
Docker du mythe à la réalitéZenika
 
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
 
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é
 
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
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation ConteneurisationTADx
 
Introduction à Docker et Gaudi
Introduction à Docker et GaudiIntroduction à Docker et Gaudi
Introduction à Docker et GaudiEmmanuel Quentin
 
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
 
Déploiements avec Docker
Déploiements avec DockerDéploiements avec Docker
Déploiements avec DockerLuis Lopez
 
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...Christophe Furmaniak
 
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSupport formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSmartnSkilled
 
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
 
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
 
Midi technique - présentation docker
Midi technique - présentation dockerMidi technique - présentation docker
Midi technique - présentation dockerOlivier Eeckhoutte
 

Tendances (20)

Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
 
Docker du mythe à la réalité
Docker du mythe à la réalitéDocker du mythe à la réalité
Docker du mythe à la réalité
 
kubernetes, pourquoi et comment
kubernetes, pourquoi et commentkubernetes, pourquoi et comment
kubernetes, pourquoi et comment
 
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
 
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...
 
Livre blanc docker
Livre blanc docker Livre blanc docker
Livre blanc docker
 
Docker - YaJUG
Docker  - YaJUGDocker  - YaJUG
Docker - YaJUG
 
Intro docker
Intro dockerIntro docker
Intro docker
 
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 ...
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation Conteneurisation
 
Introduction à Docker et Gaudi
Introduction à Docker et GaudiIntroduction à Docker et Gaudi
Introduction à Docker et Gaudi
 
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 !
 
Déploiements avec Docker
Déploiements avec DockerDéploiements avec Docker
Déploiements avec Docker
 
REX Devops Docker
REX Devops DockerREX Devops Docker
REX Devops Docker
 
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
 
Devoxx France : GruntJs In Action
Devoxx France : GruntJs In ActionDevoxx France : GruntJs In Action
Devoxx France : GruntJs In Action
 
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSupport formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
 
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
 
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 ?
 
Midi technique - présentation docker
Midi technique - présentation dockerMidi technique - présentation docker
Midi technique - présentation docker
 

Similaire à Rex docker en production meeutp-docker-nantes

709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptxAbdellahELMAMOUN
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxAnisSalhi3
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
Mdl ocsinventory 20100330
Mdl ocsinventory 20100330Mdl ocsinventory 20100330
Mdl ocsinventory 20100330robertpluss
 
Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2tikok974
 
Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2tikok974
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...Jasmine Conseil
 
Road map to DevOps engineering - Elie Sirius
Road map to DevOps engineering -  Elie SiriusRoad map to DevOps engineering -  Elie Sirius
Road map to DevOps engineering - Elie SiriusGDG Bujumbura
 
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)Publicis Sapient Engineering
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdfJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdfqsdqsd4
 
Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...
Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...
Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...TelecomValley
 
Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?pprem
 
alphorm.com - Formation proxmoxVE 3
alphorm.com - Formation proxmoxVE 3alphorm.com - Formation proxmoxVE 3
alphorm.com - Formation proxmoxVE 3Alphorm
 
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueGab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueAZUG FR
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsJulien Wittouck
 

Similaire à Rex docker en production meeutp-docker-nantes (20)

709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
What is Docker
What is Docker What is Docker
What is Docker
 
Mdl ocsinventory 20100330
Mdl ocsinventory 20100330Mdl ocsinventory 20100330
Mdl ocsinventory 20100330
 
Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2
 
Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
 
Road map to DevOps engineering - Elie Sirius
Road map to DevOps engineering -  Elie SiriusRoad map to DevOps engineering -  Elie Sirius
Road map to DevOps engineering - Elie Sirius
 
Octo Maven.pdf
Octo Maven.pdfOcto Maven.pdf
Octo Maven.pdf
 
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdfJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
 
Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...
Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...
Soirée du Test Logiciel - Mise en place d’une plateforme de test automatisé a...
 
Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?
 
alphorm.com - Formation proxmoxVE 3
alphorm.com - Formation proxmoxVE 3alphorm.com - Formation proxmoxVE 3
alphorm.com - Formation proxmoxVE 3
 
REX Ansible
REX AnsibleREX Ansible
REX Ansible
 
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueGab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
 
Présentation eZ publish
Présentation eZ publishPrésentation eZ publish
Présentation eZ publish
 

Rex docker en production meeutp-docker-nantes

  • 1.
  • 3. Comment arriver en production ? • Après avoir travaillé en « local », le passage en production n’est pas si simple, • Vous allez devoir prendre des décisions structurantes sur – l’organisation – le workflow de travail – l’architecture – l’outillage – …
  • 5. Une équipe pluridisciplinaire  Formez une équipe pluridisciplinaire  Ne pas attendre d’avoir finalisé vos premières images avant d’aller voir les Ops  Privilégier le « fail fast » dans la communication et dans les tests  Les choix structurants doivent être discutés dès le départ entre les différentes personnes de l’équipe
  • 6. La Dream Team  Le sponsor qui a suffisamment de poids pour appuyer les décisions ou arbitrer certains blocages  L’architecte qui garantira la cohérence applicative  L’ingénieur système chargé des aspects installations de produits (docker, registry…) et OS (choix de l’OS, configuration des Fileystem…)  Le développeur va construire et mettre à disposition l’image applicative  L’intégrateur est garant du paramétrage et du déploiement sur les environnements de tests, recette  L’exploitant va intégrer le paramétrage de production, brancher ses menus d’exploitation, brancher la supervision, collecter les logs…  L’expert Docker intervient de manière ponctuelle pour aider au lancement ou pour débloquer une situation particulière
  • 8. Le workflow – Une évolution pas une révolution • Pas de grand changement dans la façon d’interagir entre les équipes • Seul le livrable change • Certaines questions remonterons plus vite (où écrire les logs ? quel user d’exécution ?...) • Cela implique plus de proximité/dialogue/discussion entre les équipes
  • 9. Le Workflow de delivery Ingénieur SysIngénieur Sys DéveloppeurDéveloppeur Base image (OS)Base image (OS) Librarie image (so) Librarie image (so) Image Applicative Image Applicative IntégrateurIntégrateur Product image (Tomcat, Weblogic, ActiveMQ…) Product image (Tomcat, Weblogic, ActiveMQ…) Paramétrage Applicatif Paramétrage Applicatif ExploitantExploitant Orchestration Mechanism Orchestration Mechanism Paramétrage Applicatif Paramétrage Applicatif Orchestration Mechanism Orchestration Mechanism Expert DockerExpert Docker ArchitecteArchitecte TopologieTopologie TopologieTopologie
  • 11. Quel OS ?  Quel OS ?  Linux 64 bits  Kernel récent (3.10) pour bénéficier de toutes les fonctionnalités de Docker  Attention au compatibilité d’OS et aux versions Docker supportées :  RedHat/CentOS 6.5 minimum  RedHat/CentOS 6.7 pour Docker 1.7.1 maximum  RedHat/CentOS 7.x pour toutes les versions de Docker  Ubuntu 12.04, 14.04, 15.10  Debian 7.7, 8  Une distribution dédiée à Docker ?  RancherOS  CoreOS
  • 12. Serveur physique ou virtuel ?  Docker fonctionne sur les deux architectures (bare metal ou virtuel)  Dépend de la typologie de vos applications (besoin de performance I/O)  Avez-vous un programme de sortie de la virtualisation ?  Avez-vous besoin d’optimiser au mieux vos serveurs ?  Faites vous de l’hébergement multi-tenant ?
  • 13. Que mettre dans mon image ?
  • 14. Quelle image de base ?  Est-ce que je peux utiliser une image du Hub ?  Dois-je reconstruire une image avec mon OS complet ?  Préférez des images légères ne contenant que ce qui est nécessaire  Plus facile à faire évoluer  Plus léger, donc portable  Moins de surface à couvrir pour les failles de sécurité
  • 15. Que mettre dans mon image ? • Mon application – Stateless : application Front ou middle – Statefull : oui mais dépend de la partie statefull. Nécessitera peut-être un storage driver particulier. • Ma configuration d’application – Non et Oui • Non pour ne pas avoir des images environnement dépendant • Oui dans le cadre de l’utilisation de data volume (confd FTW!) • Base de données – Oui pour la partie développement – Non pour la partie production
  • 16. Comment découper mes images • Une image doit correspondre à un module de votre application (un WS, une IHM, un broker…) • Permet de découpler le cycle de vie • Permet de scaler plus facilement le module
  • 17. Découper mon application en images LBLB IHMIHM LoadBalancerLoadBalancer IHMIHM Web serviceWeb service CacheCache BDDBDD IHMIHM WSWS WSWS WSWS CacheCache CacheCache BDDBDD
  • 18. Où stocker ses images ?
  • 19. Mettre en place sa registry  Le Hub en public ou privé via abonnement  La Docker Trusted Registry  Une Registry privée en SaaS (Quay.io, Aws, ...)  Une registry v2 selfhosted
  • 20. Registry v2 Self Hosted  Se baser sur l’image du Hub  Attention à la configuration par défaut  Prévoir un espace de stockage pour les images  Monitorer l’espace disponible  Prévoir des namespaces différents pour les équipes et/ou les images production ready
  • 21. Registry v2 Self Hosted  Nécessité d’outiller la registry  Pas d’IHM (possibilité d’utiliser des images du hub)  Pas d’outil de nettoyage (purge des images)  Peu de sécurité  Pas d’alerting…
  • 23. Construire vos images • Le processus de construction automatique d’une image est très simple • L’intégrer dans vos outil d’intégration continue • Utiliser le mécanisme de tag pour versionner vos images • N’ajouter que ce qui est nécessaire
  • 24. Construire vos images • Garder en tête les bonnes pratiques de création d’images • Attention au nombre de layer créés • Attention à la taille du répertoire de construction d’image (utilisez le .dockerignore) pour ne pas saturer le daemon docker • Attention à l’utilisation du cache local
  • 26. The maven effect ! Ne téléchargez pas tout Internet • Attention à l’utilisation de la bande passante – Une image fait entre 4Mo et 1Go sur le Hub • Mettre en place un proxy (fonctionnalité de la registry v2) • Mettre à disposition un catalogue d’entreprise (Rancher, Registry v2, DTR)
  • 27. Ou la gestion de mes logs
  • 28. Où écrire mes logs ? • Prendre en compte cette problématique dès le départ • Plusieurs log drivers disponibles – Json-file (default) – Syslog (UDP, TCP, TCP+TLS, Unix socker) – Awslog (AWS) – Gelf (Graylog ou Logstask pour ELK) – Fluentd – journald – splunk
  • 29. Mes logs près de mes containers • Utilisation du volume disk (un répertoire du host) • Attention au UID du user d’écriture des logs • Attention les logs du container ne sont pas gérés par défaut (activer la rotation)
  • 30. La collecte des logs • L’application publie dans la sortie standard • Aucun logs ne reste stocké sur le container • Utilisation du driver GELF pour envoi vers ELK • Facilite le diagnostic et la remontée d’erreur
  • 32. Docker et la gestion du Réseau • Le daemon Docker attribut une adresse IP au container à sa création, cette IP est locale à la machine (pénurie IPv4) • Possibilité de publier le port du container sur le port du Host – Ex : Tomcat : 80 sur Host et 8080 dans le container • Deux containers sur des machines différentes ne pourront pas communiquer naturellement (utilisation de port publiés) • Gestion du network overlay avec Swarm, Rancher, Flannel, Calico ou Weave
  • 33. Jusqu’ici tout va bien • Je travaille dans un environnement maîtrisé – Nombre de containers connus à l’avance – Utilisation des ports connus – Tous les containers tournent sur une même machine – Pas ou peu d’évolution de l’architecture • L’utilisation de Docker Compose peut suffire – Description de mon application via un fichier yml – Possibilité de scaler facilement une partie de l’application
  • 34. Architecture distribuée et maitrisée • La machines sont typées (front, middle, cache…) • Des containers répartis sur des machines différentes • Nécessité de publier des ports sur les hosts • Configuration statique entre container
  • 35. Comment gérer le load balancing ? • Gestion statique/à la main des loadbalancer • Découverte de service (etcd, consul, zookeeper, fleet…) • Traefik un reverse proxy intelligent – Rechargement à chaud et via API – Supporte plusieurs backend (Docker, Consul, etcd, Zookeeper, Mesos/Marathon, file…) – Ajoute ou supprime un container sur la base de label et du backend choisi
  • 36. L’utilité d’un orchestrateur • Je ne veux pas redévelopper un système de répartition de mes containers • Mon architecture est changeante • Je ne veux pas devoir me poser la question de où lancer mes containers • Je veux injecter des contraintes • Je veux m’abstraire de la communication entre containers
  • 38. Vos interlocuteurs Youcef Yekhlef Architecture & Culture Devops @youcef_yekhlef youcef.yekhlef@zenika.com Christophe Furmaniak Architecture & Culture Devops @looztra christophe.furmaniak@zenika.com
  • 39. Contactez-nous • info@zenika.com • Tél : 01 45 26 19 15 • Notre site web : • www.zenika.com • • Notre blog technique : • blog.zenika.com • • • Twitter : @ZenikaIT