Stratégies de Déploiement Kubernetes – Guide Complet

Bienvenue dans ce guide complet sur les stratégies de déploiement Kubernetes. Que vous soyez DevOps, développeur, ou administrateur système, comprendre comment fonctionne le déploiement dans Kubernetes est crucial pour garantir la disponibilité, la résilience et la scalabilité de vos applications.

Dans cet article, nous allons explorer :

  • Les types de déploiements Kubernetes
  • La différence entre les stratégies Recreate et Rolling Update
  • Des exemples de configuration
  • Les meilleures pratiques et outils CLI

📦 Comprendre le Déploiement dans Kubernetes

🧱 Qu’est-ce qu’un Déploiement ?

Un Deployment Kubernetes est une abstraction qui automatise le lancement, la mise à jour et le monitoring de vos pods. Il s’appuie sur un objet ReplicaSet pour garantir qu’un nombre précis de réplicas soit toujours disponible.

🔁 Pourquoi les Stratégies de Déploiement Sont Importantes

Les stratégies de déploiement permettent de :

  • Contrôler le rythme des mises à jour
  • Réduire les temps d’arrêt
  • Assurer une expérience utilisateur continue

🔄 Les Deux Principales Stratégies de Déploiement Kubernetes

🛑 1. Stratégie “Recreate”

Définition : Arrête toutes les anciennes instances avant de lancer les nouvelles.

✅ Avantages :

  • Simple à implémenter
  • Utile si vous devez faire une réinitialisation complète

❌ Inconvénients :

  • Temps d’arrêt total durant la mise à jour
  • Pas adapté aux applications critiques

🔃 2. Stratégie “Rolling Update”

Définition : Met à jour les pods un par un, sans interrompre le service.

✅ Avantages :

  • Zéro downtime
  • Déploiement contrôlé et progressif

❌ Inconvénients :

  • Configuration plus fine requise
  • Plus complexe en cas de bug dans la version déployée

⚙️ Exemple de Déploiement avec Rolling Update

Voici un exemple de configuration d’un déploiement Kubernetes avec RollingUpdate :

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 10
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 1
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-container
        image: my-image:1.0

🧮 Paramètres importants

  • maxSurge : nombre de pods supplémentaires créés temporairement (ici 25 %)
  • maxUnavailable : nombre de pods maximum non disponibles pendant la mise à jour (ici 1)
Découvrez  Mise à jour de la formation kubernetes, c'est partie !!!

🧪 Supervision et Rollback

👁️‍🗨️ Suivre l’état d’un déploiement

kubectl rollout status deployment/my-app

📜 Consulter l’historique des versions

kubectl rollout history deployment/my-app

↩️ Revenir à une version précédente

kubectl rollout undo deployment/my-app --to-revision=3

✅ Bonnes Pratiques pour un Déploiement Réussi

  • Tester en staging : avant de déployer en production, testez toujours vos modifications.
  • Utiliser les annotations : documentez vos changements avec : kubectl annotate deployment my-app kubernetes.io/change-cause="Upgrade to v1.1"
  • Configurer le progressDeadlineSeconds : progressDeadlineSeconds: 600

📚 FAQ – Déploiement Kubernetes

Quelle est la différence entre Recreate et Rolling Update ? Recreate arrête tout avant de déployer, Rolling Update fait la mise à jour progressivement. Comment surveiller un déploiement ? Utilisez kubectl rollout status et kubectl rollout history. Que signifient maxSurge et maxUnavailable ? maxSurge : pods supplémentaires pendant le déploiement. maxUnavailable : pods temporairement indisponibles. Que faire si un déploiement échoue ? Revenir à une version stable avec kubectl rollout undo

🏁 Conclusion

Maîtriser les stratégies de déploiement Kubernetes est essentiel pour toute équipe DevOps. En comprenant les avantages et les limitations de Recreate et Rolling Update, vous pouvez adapter vos déploiements à vos besoins techniques et métier.

💬 Une question ou un retour d’expérience ? Partagez-le dans les commentaires !

📌 Bonus : Pour Aller Plus Loin