Publicité
Publicité

Contenu connexe

Similaire à Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue(20)

Publicité
Publicité

Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue

  1. Docker – pour quoi faire ? Cédric & Cédric
  2. www.azug.fr © 2017 AZUG FR. All Rights Reserved. 2 Meet the Team Cédric Leblond Consultant DevOps – MVP ALM Je conçois l’architecture d’applications web et mobiles dans le cloud. J’accompagne mes clients dans la mise en oeuvre d’architecture micro-services. Cédric Derue Solution Architect – MVP Azure @leblond_c @cderue Je développe des applications en .NET. Et j’accompagne mon client dans son voyage vers les pratiques modernes du Software Craftmanship, Agile, DevOps.
  3. Introduction : Défis rencontrés par les développeurs et admins Créer les applications prêtes pour la production Distribuer et tester les applications à la demande Exécuter les applications avec un service optimal
  4. Docker – de quoi s’agit-il ? DOCKER EST UNE PLATEFORME DE LOGICIELS CONTENEURISÉS
  5. La vision de la plateforme Docker http://docker.com/Enterprise
  6. Paquet standard pour le logiciel http://docker.com/what-docker
  7. Démo : Hello World • docker run -d -t --name myhello docker/whalesay bash • docker exec -it myhello cowsay "Hello à tous" • docker exec -it myhello ps • -d : lancer en mode detaché • -i : lancer en interactif • -t : créer un pseudo tty
  8. Qu'est ce qu'un conteneur?
  9. Qu'est ce qu'un conteneur? machines virtuelles traditionnelles = virtualisation hardware VM VM VM
  10. Qu'est ce qu'un conteneur? machines virtuelles traditionnelles = virtualisation hardware VM VM VM
  11. Qu'est ce qu'un conteneur? VM VM VM machines virtuelles traditionnelles = virtualisation hardware
  12. Qu'est ce qu'un conteneur? VM VM VM conteneurs = virtualisation système d'exploitation (OS) Applications Kernel machines virtuelles traditionnelles = virtualisation hardware
  13. Qu'est ce qu'un conteneur? VM VM VM conteneurs = virtualisation système d'exploitation (OS) Applications Kernel machines virtuelles traditionnelles = virtualisation hardware CONTAINER CONTAINER CONTAINER
  14. Qu'est ce qu'un conteneur? VM VM VM conteneurs = virtualisation système d'exploitation (OS) Applications Kernel machines virtuelles traditionnelles = virtualisation hardware CONTAINER CONTAINER CONTAINER
  15. Qu'est ce qu'un conteneur? VM VM VM conteneurs = virtualisation système d'exploitation (OS) Applications Kernel machines virtuelles traditionnelles = virtualisation hardware CONTAINER CONTAINER CONTAINER Windows Server Containers vitesse et densité maximales CONTAINER CONTAINER CONTAINER
  16. Qu'est ce qu'un conteneur? VM VM VM conteneurs = virtualisation système d'exploitation (OS) Applications Kernel machines virtuelles traditionnelles = virtualisation hardware CONTAINER CONTAINER CONTAINER Windows Server Containers vitesse et densité maximales CONTAINER CONTAINER CONTAINER Hyper-V Containers Isolation et performance Kernel CONTAINER Kernel CONTAINER Kernel CONTAINER
  17. Utiliser des logiciels directement INSTALLER ET MAINTENIR SON POSTE DE DÉVELOPPEMENT
  18. Un peu de vocabulaire sur les conteneurs Docker Image La base d’un conteneur Docker. Représente une application complète. Docker Container L’unité standard dans laquelle l’application réside et s’exécute. Docker Engine Créer, livrer et exécuter les conteneurs Docker sur un hôte physique ou virtuel. Docker Ensemble de projets open source pour créer, gérer et distribuer les conteneurs. Registry Service (Docker Hub or Docker Trusted Registry) Cloud ou serveur base du service de stockage et distribution de nos images. Docker Compose Fichier de définition et d’exécution d’une application multi-conteneurs.
  19. Docker for Windows Docker Engine installé et configuré automatiquement pour Windows Desktop Il existe aussi Docker for MAC Docker for Linux
  20. Démo : POC MongoDB et Python • Contexte : nous avions un accès dégradé à notre base. Son origine était la lecture d’objets très complexes de transactions • But : vérifier rapidement l’utilisation d’un cache persisté avec MongoDB • docker run --name my-mongo -d mongo • docker run --link my-mongo:mongo -d app-utilisant-mongo • --link : lien réseau vers un conteneur
  21. Utiliser Visual Studio CONSTRUIRE ET DÉBOGUER L’APPLICATION SUR SON POSTE DE DÉVELOPPEMENT
  22. Dockerfile – le fichier de build de l’image
  23. Quelques instructions du Dockerfile à la loupe • FROM : Définit l’image de base • RUN : Exécute une commande sur l’image de base • EXPOSE : Définit le(s) port(s) d’écoute du container • VOLUME : Définit un point de montage sur l’hôte ou sur un autre container • ENTRYPOINT : Configure un container comme un exécutable
  24. docker-compose files – les fichiers de création de mon environnement
  25. Démo : TODOList API et MongoDB • L’API enregistre une liste de taches dans la base MongoDB • L’application Angular permet de les gérer avec une interface graphique • docker-compose –f ./api/docker-compose.yml up
  26. CI/CD avec Docker DÉPLOYER EN CONTINUE LES CORRECTIONS ET NOUVELLES FONCTIONNALITÉS
  27. Les patterns du Continuous Delivery • Automatiser la chaine de construction, tests et déploiement ◦ Construire une seule fois les paquets ◦ Déployer de la même manière sur tous les environnements ◦ Tester les déploiements avec des tests de fumée ◦ Conserver des environnements similaires • Limiter le risque par des release incrémentales • Découpler le déploiement et la version (blue-green deployment, canary releasing, dark launch, feature toggle) • Réduire la taille du déploiement • Optimiser pour la résilience
  28. API DB Create images (docker build) Deploy containers WebWeb Web API API DB Docker Registry Docker Hub/ Repository Pull images Publish Web DBAPI Web • docker pull • docker login • docker push
  29. Un exemple usine logicielle de démo 34 ASP.NET Core Visual Studio Docker VSTS BUILD Compiler, tester, publier le site Créer images ASP.NET Déclencher la build Azure Container Service Mesos / Marathon Déployer les conteneurs Déclencher le déploiement Docker Hub Tirer les images (docker build) Publier les images (docker publish) Machines Linux, Windows, ARM Créer images (docker build) GitHub punlimitlab Tirer les sources Publier les changements VSTS Release Management Déclencher la release Créer images du site Démarrer le site
  30. Exécuter les applications avec un service optimal SURVEILLER LES SERVICES ET AGIR RAPIDEMENT
  31. Orchestrateurs • Mesosphere DC/OS • Docker Swarm • Kubernetes • L’offre est variée et l’hébergement des orchestrateurs large : ◦ Amazon EC2 Container Services (ECS) ◦ Azure Container Services (DC/OS, Swarm, Kubernetes) ◦ Docker for Azure, Docker for AWS (Swarm) ◦ Rancher (Mesos, Swarm, Kubernetes)
  32. Docker dans Microsoft Azure • Machines virtuelles Azure avec l’extension Docker • Azure Container Service • Docker for Azure
  33. Azure Container Service – DC/OS
  34. Les services avec DC/OS
  35. Vamp
  36. Pourquoi utiliser Vamp ? Comment gérer le cycle de vie des conteneurs ? • Blue/Green Deployment • A/B testing • Monitoring • Scaling temps réel
  37. VAMP DSL
  38. Démo DC/OS, VAMP
  39. Premier blueprint
  40. Déploiement et monitoring
  41. Version initiale
  42. Blue Green Deployment Cluster
  43. Canary releasing Cluster
  44. Auto-scaling
  45. Passage à la nouvelle version
  46. Et la suite ? • Serverless ◦ Azure Functions ◦ AWS Lambda • DevSecOps • NoOps
  47. www.azug.fr © 2017 AZUG FR. All Rights Reserved. 61 Merci à nos sponsors PLATINUM LOCAUX PARTENAIRES MEDIA
  48. www.azug.fr © 2017 AZUG FR. All Rights Reserved. 62 Sponsors internationaux
  49. www.azug.fr © 2017 AZUG FR. All Rights Reserved. 63 Nous suivre Facebook facebook.com/groups/azugfr Twitter twitter.com/AZUGFR Meetup meetup.com/AZUG-FR/ Web www.azug.fr Twitter twitter.com/MugLyon Web https://muglyon.github.io Meetup meetup.com/MugLyon
  50. Merci d’être venus A bientôt !

Notes de l'éditeur

  1. Docker délivre des outils ouverts pour aider les développeurs et administrateurs Docker enables developers and IT admins to build, ship and run any application, anywhere Build, Ship, Run Docker aims to deliver open tools to help developers build applications with open APIs to help sysadmins better manage these applications http://docker.com/company
  2. principalement le fameux : But It works on my PC ! Mais tentons d’être un peu plus précis Installer et maintenir son poste de développement Nombreux outils de développements Plusieurs versions de ces outils Certains outils utilisés rarement Certains complexes à installer Construire et déboguer l’application sur son poste de développement Application a des dépendances vers la base de données, d’autres services Déboguer, c’est à dire, reproduire le bogue sur son poste Créer un environnement complet pour tester, ou la production En créer un similaire que ce soit pour les tests d’un BA, de l’utilisateur Infra As Code, Configuration As Code Déployer en continue les corrections et nouvelles fonctionnalités Automatiser la chaine de construction, tests et déploiement Limiter le risque par des release incrémentales Découpler le déploiement et la version (blue-green, canary, dark launch, feature toggle) Réduire la taille du déploiement Optimiser pour la résilience (dans l’iso 9126 le plus proche semble  Fiabilité (Reliability) / La tolérance aux fautes (Fault Tolerance) Assurer la sécurité des applications Vulnérabilités, Surface d’exposition Surveiller les services et agir rapidement Le monitoring des machines, infrastructure, des services Les logs pour comprendre … Ajuster la capacité des applications aux charges Gagner en productivité En automatisant tout ce qui peut l’être pour surtout éviter les erreurs (et un peu de temps) Utiliser des outils commun
  3. http://docker.com/what-docker
  4. L’idée est bien d’avoir une seule plateforme d’outils pour tout. -> simplicité -> standard ouvert -> plateforme CAAS : Container As A Service Dès la première annonce partenariat avec Microsoft cette idée de 1 docker est très présente https://news.microsoft.com/2014/10/15/dockerpr “Developers and organizations that want to create container applications using Docker will be able to use either Windows Server or Linux with the same growing Docker ecosystem of users, applications and tools.”
  5. Le conteneurs docker enveloppent dans un système de fichier tout les outils, logiciels, code, librairies systèmes nécessaires pour exécuter une application. Ils sont dans un package de binaires : une image. Ces images, on les réutilisent pour en construire une nouvelle. Cela garantie que le logiciel qui s’éxécute sera toujours le même , quelque soit l’environnement . (pas qu’il va toujours fonctionner)
  6. Le conteneur contient l’application et tous les librairies dépendants. Mais partage le même noyau avec les autres conteneurs. Il s’éxécute dans l’espace utilisateur du système, dans des process isolés. (l’espace utilisateur est surtout une notion Linux mais cette isolation est aussi recrée côté Windows). Ils peuvent s’éxécuter sur un ordinateur et sur toute infra (on reviendra dessus avec les orchestrateurs)  peuvent être très petits. Gain en densité et en performance de démarrage par rapport à la VM. La machine virtuelle inclut l’application, les librairies, et l’intégralité de l’OS.  donc des Go
  7. Plus de densité Plus rapide à démarrer Presentation à Ignite 2016 Microsoft and the container ecosystem : http://microsoft.com/containers Windows Container Doc’s : http://aka.ms/windowscontainers Community Link’s: http://aka.ms/windowscontainers/community
  8. L’installation peut être compliqué, demander des heures de recherche La gestion des dépendances entre les versions d’outils est parfois compliqué Docker permet d’installer d’une seule manière, tous les outils Docker permet de construire sur les outils existants, sur une version spécifique si besoin
  9. http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
  10. Fichier compose d’une application utilisant mongo
  11. foundations (fondamentaux) comprehensive configuration management continuous integration continuous testing https://continuousdelivery.com/foundations/ les patterns (reusable and proven strategy) : deployment pipeline Only build packages once Deploy the same way to every environment Smoke test your deployments Keep your environments similar Low-risk Releases are Incremental (circuit breaker, release change independently) Decouple Deployment and Release (blue-green, canary, dark launch,feature toggle) Focus on Reducing Batch Size Optimize for Resilience (dans l’iso 9126 le plus proche semble  Fiabilité (Reliability) / La tolérance aux fautes (Fault Tolerance) https://continuousdelivery.com/implementing/patterns
  12. Notre démo principale est de faire tourner le site ASP.NET Core "PartsUnlimited" sur un Raspberry PI 2 au sein d'un conteneur Docker Linux. Du pure Geek, personne n'a encore fait cela à notre connaissance ;) Le Rasperry PI 2 est un objet connecté. Nous enverrons ces données de télémétrie vers IOT Azure. Nous allons aussi mettre en place un pipeline de build et déploiement avec VSTS, et pousserons les sources modifiées automatiquement vers GitHub. (et pourquoi pas créer une pull request vers le repo d'origine)
  13. Github  Base ASPNET conteneur// appli Build 
  14. Exécuter les applications avec un service optimal
  15. Les orchestrateurs peuvent être des
  16. Après le déploiements de l’environnement test
  17. To create a blueprint for describing the (micro)services, connections and dependencies between them, gateways, environment variables or the properties for scaling these services, Vamp provides its own domain-specific language (DSL) in a YAML format.
Publicité