Deploiements avances 20 min de lecture

Rolling Updates et Rollbacks

Rolling Update

Par defaut, Kubernetes met a jour les Pods progressivement sans downtime.

kubectl set image deployment/nginx nginx=nginx:1.22
kubectl rollout status deployment/nginx

Strategie RollingUpdate

spec:
  replicas: 10
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 2        # Max 2 Pods en plus
      maxUnavailable: 1  # Max 1 Pod indisponible

Processus de rolling update

  1. Kubernetes cree de nouveaux Pods avec la nouvelle version
  2. Attend que les nouveaux Pods soient ready
  3. Supprime progressivement les anciens Pods
  4. Repete jusqu'a ce que tous les Pods soient a jour

Historique des revisions

kubectl rollout history deployment/nginx
kubectl rollout history deployment/nginx --revision=2

Rollback

# Revenir a la version precedente
kubectl rollout undo deployment/nginx

# Revenir a une revision specifique
kubectl rollout undo deployment/nginx --to-revision=3

Pause et Resume

# Pause le rollout
kubectl rollout pause deployment/nginx

# Faire plusieurs changements
kubectl set image deployment/nginx nginx=nginx:1.22
kubectl set resources deployment/nginx -c=nginx --limits=cpu=200m

# Resume le rollout
kubectl rollout resume deployment/nginx
Best practice : Testez toujours vos deployments en staging avant production. Utilisez --record pour garder l'historique des commandes.