Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare une entreprise Scribd logo
Introduction à la
conteneurisation avec
Docker et Kubernetes
Sébastien Laporte @seb__laporte
Qu’est ce que la conteneurisation ?
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
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
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
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
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
Pourquoi la conteneurisation ?
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é
Que faut il savoir pour utiliser Docker ?
Le Dockerfile : la recette
● Fichier texte
● Semblable à un script d’installation
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
Le conteneur : l’unité de déploiement
● Fait tourner l’application
● Immuable
● Pas de stockage persistent
ConteneurConteneur
Création d’un conteneur
BuildDockerfile
1
Image
2
Instanciation
Conteneur
3
Comment automatiser un déploiement
avec Docker ?
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
Quelle solution pour palier à ces
limitations ?
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
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
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
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
Docker en pratique
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
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" ]
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
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
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
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
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
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
Démo
Docker et Docker-Compose
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
Kubernetes en pratique
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
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
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
● 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
● 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
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
● 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
Démo
Kubernetes
Merci
Avez-vous des questions ?
http://bit.ly/seblaporte-tadx-container
@seb__laporte

Contenu connexe

Tadx - Présentation Conteneurisation

  • 1. Introduction à la conteneurisation avec Docker et Kubernetes Sébastien Laporte @seb__laporte
  • 2. Qu’est ce que la conteneurisation ?
  • 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. 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. 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. 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. 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
  • 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. Que faut il savoir pour utiliser Docker ?
  • 11. Le Dockerfile : la recette ● Fichier texte ● Semblable à un script d’installation
  • 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. Le conteneur : l’unité de déploiement ● Fait tourner l’application ● Immuable ● Pas de stockage persistent
  • 15. Comment automatiser un déploiement avec Docker ?
  • 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. Quelle solution pour palier à ces limitations ?
  • 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. 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. 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. 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
  • 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. 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. 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. 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. 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. 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. 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. 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
  • 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
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. ● 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. ● 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. 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. ● 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
  • 63. Merci Avez-vous des questions ? http://bit.ly/seblaporte-tadx-container @seb__laporte