DevOpsFacile
AccueilParcours de formationCertificationsModulesCheat SheetÀ Propos
DevOpsFacile

Une plateforme d'apprentissage complète pour maîtriser les pratiques DevOps modernes, du débutant à l'expert.

contact@devopsfacile.fr

Formation

  • Parcours de formation
  • Modules

Informations

  • À Propos
  • Conditions d'utilisation
  • Confidentialité
  • Mentions légales

© 2026 DevOps Facile. Tous droits réservés.

Fait avec pour la communauté DevOps

ModulesDécouvrir Kubernetes : pods, services et kubectl05 - Gérer les Deployments

Détails

  • 20 minutes
  • Débutant

Objectifs

  • Écrire un manifest Deployment avec replicas et selector
  • Scaler un Deployment à la hausse et à la baisse
  • Surveiller le rollout avec kubectl rollout status
  • Comprendre la différence entre Pod et Deployment
Module Découvrir Kubernetes : pods, services et kubectl

Exercice 05 : Gérer les Deployments

🎯 Objectifs

À la fin de cet exercice, vous serez capable de :

  • ✅ Créer un Deployment avec un nombre de réplicas défini
  • ✅ Comprendre la relation ReplicaSet → Pod dans un Deployment
  • ✅ Scaler horizontalement avec kubectl scale
  • ✅ Suivre l'état d'un déploiement avec kubectl rollout status

Durée estimée : 20 minutes

Difficulté : ⭐⭐☆☆☆ (Débutant+)

Prérequis : minikube démarré, exercices 01-04 terminés


📖 Contexte

Un Pod simple n'est pas résilient : s'il meurt, il n'est pas recréé. Le Deployment résout ce problème en gérant un ReplicaSet qui maintient le nombre souhaité de réplicas en vie. C'est la ressource de base pour déployer des applications sans état en production.


📋 Énoncé

Vous allez créer un Deployment nginx, le scaler, supprimer un pod manuellement pour observer l'auto-réparation, puis exposer l'ensemble avec un Service.

Résultat attendu :

  • Un Deployment nginx-deploy avec 3 réplicas stables
  • Observation de l'auto-réparation après suppression d'un pod

🧭 Déroulement de l'exercice

Tâche 1 : Créer le Deployment

Appliquez le manifest nginx-deploy.yaml (fourni en solution) et vérifiez que 3 pods sont créés.

Indice : Les pods créés par un Deployment ont un nom généré automatiquement : nginx-deploy-<hash>-<hash>.

Vérification : kubectl get deployment nginx-deploy affiche 3/3 READY.


Tâche 2 : Inspecter la hiérarchie

Listez les ReplicaSets créés par le Deployment, puis observez comment les pods leur appartiennent.

Indice : kubectl get replicasets et kubectl get pods -l app=nginx-deploy

Vérification : Un seul ReplicaSet existe avec 3 DESIRED / 3 READY. Les pods ont le label app=nginx-deploy.


Tâche 3 : Observer l'auto-réparation

Supprimez un pod manuellement et observez immédiatement ce qu'il se passe.

Indice : kubectl delete pod <nom-du-pod> puis kubectl get pods -w pour observer en temps réel.

Vérification : Kubernetes recrée un nouveau pod pour maintenir le nombre de réplicas à 3.


Tâche 4 : Scaler le Deployment

Scalez le Deployment à 5 réplicas, observez les pods créés, puis redescendez à 2.

Indice : kubectl scale deployment nginx-deploy --replicas=5

Vérification : kubectl get deployment nginx-deploy affiche 5/5 puis 2/2 après le changement.


Tâche 5 : Exposer avec un Service

Créez un Service NodePort associé au Deployment via le label app: nginx-deploy, et testez l'accès.

Indice : Le Service sélectionne les pods via leur label, pas via le Deployment directement.

Vérification : minikube service nginx-svc --url retourne une URL fonctionnelle.


🗂️ Mini-Projet : Deployment avec Service complet

Déployez une stack complète avec un Deployment 3 réplicas et un Service NodePort.

yaml
# stack-complete.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: webapp
  labels:
    app: webapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: webapp
  template:
    metadata:
      labels:
        app: webapp
    spec:
      containers:
        - name: nginx
          image: nginx:1.25
          ports:
            - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: webapp-svc
spec:
  type: NodePort
  selector:
    app: webapp
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30090

Checkpoints :

  • kubectl get deployment webapp affiche 3/3 READY
  • kubectl get replicasets montre un RS avec 3 pods
  • kubectl delete pod <un-pod-webapp> → un nouveau pod est recréé automatiquement
  • kubectl scale deployment webapp --replicas=5 → 5/5 READY
  • curl $(minikube service webapp-svc --url) retourne la page nginx

Retour au module

Sur cette page

  • 🎯 Objectifs
  • 📖 Contexte
  • 📋 Énoncé
  • 🧭 Déroulement de l'exercice
  • Tâche 1 : Créer le Deployment
  • Tâche 2 : Inspecter la hiérarchie
  • Tâche 3 : Observer l'auto-réparation
  • Tâche 4 : Scaler le Deployment
  • Tâche 5 : Exposer avec un Service
  • 🗂️ Mini-Projet : Deployment avec Service complet