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

Tadx - Présentation Conteneurisation

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Chargement dans…3
×

Consultez-les par la suite

1 sur 63 Publicité

Plus De Contenu Connexe

Diaporamas pour vous (20)

Similaire à Tadx - Présentation Conteneurisation (20)

Publicité

Tadx - Présentation Conteneurisation

  1. 1. Introduction à la conteneurisation avec Docker et Kubernetes Sébastien Laporte @seb__laporte
  2. 2. Qu’est ce que la conteneurisation ?
  3. 3. Evolution vers la conteneurisation 1 application / 1 serveur 1 application / 1 VM Conteneurisation Serveur Système d’exploitation Dépendances Application A ● Serveur dédié à 1 seule application ● Difficile à scaler ● Difficile à faire évoluer ● Forte adhérence à l’infrastructure Serveur Système d’exploitation Dépendances Application B
  4. 4. 1 application / 1 serveur 1 application / 1 VM Conteneurisation Evolution vers la conteneurisation Serveur Système d’exploitation Hyperviseur Système d’exploitation Dépendances Application A Avantages ● Meilleur utilisation des ressources physiques ● Plus facile à scaler ● Ouverture vers le Cloud Limitations / inconvénients ● Chaque VM supplémentaire consomme des ressources physiques avec son OS ● Portabilité de l’application non garantie Système d’exploitation Dépendances Application A
  5. 5. 1 application / 1 serveur 1 application / 1 VM Conteneurisation Evolution vers la conteneurisation Serveur Système d’exploitation Dépendances Application A Dépendances Application B Avantages ● Augmentation de la densité de déploiement ● Démarrage accéléré du service ● Standardisation du packaging de l’application Bénéfices ● Portabilité de l’application ● Déploiement simplifié ● Permet d’augmenter la fréquence de livraison Docker
  6. 6. Serveur OS hôte Hyperviseur OS invité OS invité Dépendances Application A Dépendances Application B Serveur OS hôte Dépendances Application A Dépendances Application B Virtualisation Conteneurisation Docker
  7. 7. Virtualisation Conteneurisation ● S’appuie sur un hyperviseur pour l’accès au ressources physiques ● Chaque machine virtuelle contient un système d’exploitation complet Avantage ● Très bonne isolation Inconvénients ● Boot d’un système complet au démarrage ● Volumineux ● Potentiel coût de licence ● Partage du noyau du système hôte ● Utilise les cgroups pour isoler et limiter l’accès aux ressources physiques ● Utilise les namespaces pour isoler les conteneurs entre eux Avantages ● Démarrage immédiat ● Portabilité ● Augmente la densité de déploiement Inconvénient ● Isolation dépendante du système hôte
  8. 8. Pourquoi la conteneurisation ?
  9. 9. Cas d’usages de la conteneurisation ● Pour le développeur ○ Création de l’environnement simplifié ○ Environnement reproductible ○ Mise en oeuvre d’une stack complexe rapidement et simplement ○ Evite le “ça marche sur mon poste” ● Pour l’opérationnel ○ Montée de version et retour arrière simplifié ○ Montée en charge simplifiée ○ Orienté micro-service ○ Déploiement simplifié
  10. 10. Que faut il savoir pour utiliser Docker ?
  11. 11. Le Dockerfile : la recette ● Fichier texte ● Semblable à un script d’installation
  12. 12. L’image Docker : le packaging unique ● Construite à partir du Dockerfile ● N’embarque pas un système d’exploitation complet ● Contient l’application ● Construit couche par couche (layers) ● Portable ● Utilise un mécanisme de gestion de version
  13. 13. Le conteneur : l’unité de déploiement ● Fait tourner l’application ● Immuable ● Pas de stockage persistent
  14. 14. ConteneurConteneur Création d’un conteneur BuildDockerfile 1 Image 2 Instanciation Conteneur 3
  15. 15. Comment automatiser un déploiement avec Docker ?
  16. 16. Docker Compose ● Permet d’automatiser la création de conteneurs ● Permet de construire des applications multi-conteneur simplement ● S’appui sur un fichier texte qui décrit le déploiement ● Permet de gérer une architecture complexe comme une seule entité Limitations ● Se limite à l’automatisation du déploiement ● N’est pas orienté pour une infrastructure distribuée ● Pas de gestion des droits
  17. 17. Quelle solution pour palier à ces limitations ?
  18. 18. Kubernetes Qu’est ce que Kubernetes ? Qu’est ce que ça fait ? Quelle valeur ajoutée ? Points de vigilance ? ● Une plate-forme de conteneurs ● Projet Open Source initié par Google ● Gère une flotte de serveurs ● Permet de déclarer l’état attendu d’une application
  19. 19. Kubernetes Qu’est ce que Kubernetes ? Qu’est ce que ça fait ? Quelle valeur ajoutée ? Points de vigilance ? ● Met à disposition les ressources d’une flotte de serveurs ● S’assure de la bonne santé des applications déployées ● Permet de s’abstraire des spécificités d’une infrastructure
  20. 20. Kubernetes Qu’est ce que Kubernetes ? Qu’est ce que ça fait ? Quelle valeur ajoutée ? Points de vigilance ? ● Gain de temps pour les opérationnels ○ Surveillance de l’état de santé des applications ○ S’adapte aux changements de l’infrastructure ● Contribue à réduire les coûts d’exploitation ○ Optimisation des ressources des serveurs ○ Ajustement des applications en fonction de la charge
  21. 21. Kubernetes Qu’est ce que Kubernetes ? Qu’est ce que ça fait ? Quelle valeur ajoutée ? Points de vigilance ? ● Installation / configuration / administration complexe ● Privilégier une solution commerciale on-premise ou Cloud ● Accompagnement recommandé des équipes
  22. 22. Docker en pratique
  23. 23. Le Dockerfile Application Java Spring Boot FROM openjdk:8-jdk-slim COPY target/*.jar /opt/app.jar WORKDIR /opt EXPOSE 8080 CMD [ "java", "-jar", "app.jar" ] Exemples Les instructions Bonnes pratiques Application Spring Boot OpenJDK 8 Exposition du port TCP 8080 Position du répertoire de travail Commande de démarrage
  24. 24. Le Dockerfile Exemples Les instructions Bonnes pratiques Site web FROM alpine:3.9 RUN apk --update add nginx RUN mkdir /run/nginx && touch /run/nginx/nginx.pid COPY nginx.conf /etc/nginx/nginx.conf ADD www /www CMD [ "nginx" ]
  25. 25. Le Dockerfile Exemples Les instructions Bonnes pratiques FROM Défini l’image de base à utiliser RUN Exécute des commandes bash / sh CMD Défini la commande à exécuter au démarrage ADD / COPY Copie des fichier dans l’image EXPOSE Informe d’un port réseau exposés par le conteneur ENV Permet de définir des variables d’environnement VOLUME Informe d’un répertoire persistent du conteneur
  26. 26. Le Dockerfile Exemples Les instructions Bonnes pratiques ● Privilégier des images de base minimalistes (Alpine) ● 1 seul processus par conteneur ● Démarrer l’application / processus au premier plan ● Logs de l’application sur la sortie standard ● Installer uniquement ce qui est nécessaire ● Limiter le nombre de layers ● Organiser les layers en fonction du build ● Utiliser si besoin le build multi-stage ● Éviter l’usage de l’utilisateur root
  27. 27. Utilisation de Docker CLI Gestion des images Gestion des conteneurs Gestion des réseaux Gestion des volumes docker images Liste les images docker build Crée une image à partir d’un Dockerfile docker pull Télécharge une image depuis le Docker hub docker commit Crée une image à partir d’un conteneur docker save Permet de sauvegarder une image docker load Permet de charger une image depuis une archive
  28. 28. Utilisation de Docker CLI Gestion des images Gestion des conteneurs Gestion des réseaux Gestion des volumes docker create Crée un conteneur sans le démarrer docker run Crée et démarre le conteneur docker rm Supprime un conteneur docker stop Arrête un conteneur docker start Démarre un conteneur docker restart Redémarre un conteneur docker ps Liste les conteneur actifs docker logs Retourne les logs d’un conteneur docker inspect Affiche les propriétés d’un conteneur docker exec Exécute une commande dans un conteneur
  29. 29. Utilisation de Docker CLI Gestion des images Gestion des conteneurs Gestion des réseaux Gestion des volumes docker network create Crée un nouveau réseau docker network rm Supprime un réseau docker network ls Liste les réseaux docker network inspect Affiche les informations sur un réseau
  30. 30. Utilisation de Docker CLI Gestion des images Gestion des conteneurs Gestion des réseaux Gestion des volumes docker volume create Crée un nouveau volume docker volume rm Supprime un volume docker volume ls Liste les volumes docker volume inspect Affiche les informations sur un volume
  31. 31. Démo Docker et Docker-Compose
  32. 32. Déploiement d’un site web Site web statique HTML / CSS Image Docker : alpine 3.9 Serveur web : Nginx Image Docker Serveur Nginx Site web
  33. 33. Kubernetes en pratique
  34. 34. Les ressources Kubernetes Node Ingress controller Persistent volume Master Scheduler API Node Kubelet Node Kubelet Node Kubelet Met à disposition des ressources en CPU et mémoire
  35. 35. Les ressources Kubernetes Node Ingress controller Persistent volume ● Met à disposition un service de reverse-proxy ● Nombreuse implémentations ○ Nginx ○ HAproxy ○ Istio ○ Traefik ● Possibilité d’utiliser plusieurs implémentations (classes) Node Kubelet Ingress controller
  36. 36. Les ressources Kubernetes Node Ingress controller Persistent volume ● Met à disposition du stockage persistent ● Nombreuse implémentations ○ AWS Elastic Block Store ○ Azure File / Azure Disk ○ Vsphere Volume ○ Ceph FS ○ iSCSI ○ NFS ● Possibilité d’utiliser plusieurs implémentations (classes)
  37. 37. Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim ● Unité de déploiement ● Contient un groupe de conteneurs ● Partagent le stockage ● Partagent la même interface réseau (même IP) ● Ordonnancés ensembles (co-scheduled) ● Déployés sur le même node ● Ephémère Pod Conteneur Conteneur Conteneur nginx application redis / cache
  38. 38. Replica Set Replicas : nombre de pods Template : définition du pod ● Défini le nombre de pods à déployer ● S’assure du nombre de réplicas Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  39. 39. Replica Set Replicas : 3 Template : définition du pod Pod A Conteneur Conteneur Conteneur Pod B Conteneur Conteneur Conteneur Pod C Conteneur Conteneur Conteneur Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  40. 40. Pod A Conteneur Conteneur Conteneur Replica Set Replicas : 3 Template : définition du pod Pod B Conteneur Conteneur Conteneur Pod C Conteneur Conteneur Conteneur Pod C indisponible Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  41. 41. Pod A Conteneur Conteneur Conteneur Replica Set Replicas : 3 Template : définition du pod Pod B Conteneur Conteneur Conteneur Destruction du pod C Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  42. 42. Pod A Conteneur Conteneur Conteneur Replica Set Replicas : 3 Template : définition du pod Pod B Conteneur Conteneur Conteneur Pod D Conteneur Conteneur Conteneur Création d’un nouveau Pod Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  43. 43. Deployment Replica Set Replicas : nombre de pods Template : définition du pod ● Gère les transitions du Replica Set ● Garde l’historique des modifications ● Gère les modifications du template ● Permet le retour arrière Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  44. 44. Deployment Replica Set Replicas : 2 Template : définition du pod Deployment A Replica Set Replicas : 2 Pod A Conteneur Conteneur Pod A Conteneur Conteneur Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  45. 45. Deployment Replica Set Replicas : 1 Template : définition du pod Deployment A Replica Set Replicas : 2 Pod A Conteneur Conteneur Pod A Conteneur Conteneur Modification de la configuration Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  46. 46. Deployment Replica Set Replicas : 1 Template : définition du pod Deployment A Replica Set Replicas : 2 Pod A Conteneur Conteneur Pod B Conteneur Conteneur Deployment B Replica Set Replicas : 1 Pod A Conteneur Conteneur Application de la nouvelle configuration Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  47. 47. Deployment Replica Set Replicas : 1 Template : définition du pod Deployment B Replica Set Replicas : 1 Pod A Conteneur Conteneur Suppression de l’ancien déploiement Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  48. 48. Deployment Replica Set Replicas : 2 Template : définition du pod Deployment B Replica Set Replicas : 1 Pod A Conteneur Conteneur Retour arrière sur la configuration Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  49. 49. Deployment Replica Set Replicas : 2 Template : définition du pod Deployment A Replica Set Replicas : 2 Pod A Conteneur Conteneur Pod A Conteneur Conteneur Deployment B Replica Set Replicas : 1 Pod A Conteneur Conteneur Roll-back de la configuration de déploiement Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  50. 50. Deployment Replica Set Replicas : 2 Template : définition du pod Deployment A Replica Set Replicas : 2 Pod A Conteneur Conteneur Pod A Conteneur Conteneur Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  51. 51. Pod A Conteneur Conteneur Pod B Conteneur Conteneur Pod C Conteneur Conteneur 10.0.85.10 10.0.85.11 10.0.85.12 Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  52. 52. Pod A Conteneur Conteneur Pod B Conteneur Conteneur Pod C Conteneur Conteneur 10.0.85.10 10.0.85.11 10.0.85.12 Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  53. 53. Pod A Conteneur Conteneur Pod C Conteneur Conteneur Pod B Conteneur Conteneur Service Permet d’accéder aux pods depuis l'intérieur du cluster Accède au service par son nom DNS interne Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  54. 54. Service Pod C Conteneur Conteneur Pod C indisponible Pod A Conteneur Conteneur Pod B Conteneur Conteneur Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  55. 55. Service Suppression du pod en erreur sans interruption de service Pod A Conteneur Conteneur Pod B Conteneur Conteneur Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  56. 56. Pod A Conteneur Conteneur Pod D Conteneur Conteneur Pod B Conteneur Conteneur Service Création d’un nouveau pod Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  57. 57. Pod A Conteneur Conteneur Pod D Conteneur Conteneur Pod B Conteneur Conteneur Service Rattachement du pod au service Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  58. 58. ● Permet de stocker des informations sensibles ● Exploitables via des volumes sur des conteneurs ● Encodé en base64 ● Sous forme de fichier ● Sous forme de clé - valeur Pod Conteneur Conteneur Volume Secret Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  59. 59. ● Permet de stocker de la configuration ● Exploitables via des volumes sur des conteneurs ● Sous forme de fichier ● Sous forme de clé - valeur Pod Conteneur Conteneur Volume Config Map Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  60. 60. Pod A Conteneur Conteneur Pod C Conteneur Conteneur Pod B Conteneur Conteneur ServiceIngress Permet d’accéder à un service depuis l’extérieur du cluster Accède au service en fonction d’un nom DNS et d’un path d’url Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  61. 61. ● Permet l’obtention d’un espace de stockage ● Défini la quantité de stockage ● Défini la politiques d’accès : lecture seule, écriture Pod Conteneur Conteneur Volume Persistent Volume Claim Les objets Kubernetes Pod Replica set Deployment Service Secret Config map Ingress Persistent volume claim
  62. 62. Démo Kubernetes
  63. 63. Merci Avez-vous des questions ? http://bit.ly/seblaporte-tadx-container @seb__laporte

×