Deploiements avances 18 min de lecture

Strategies de deploiement avancees

Strategie Recreate

Supprime tous les Pods avant de creer les nouveaux. Cause un downtime mais utile pour les apps qui ne supportent pas plusieurs versions simultanees.

spec:
  strategy:
    type: Recreate

Blue/Green Deployment

Deployer la nouvelle version (Green) a cote de l'ancienne (Blue), puis basculer le trafic.

# Deploiement Blue (v1)
kubectl create deployment app-blue --image=app:v1 --replicas=3
kubectl expose deployment app-blue --port=80 --name=app-service

# Deploiement Green (v2)
kubectl create deployment app-green --image=app:v2 --replicas=3

# Basculer le Service vers Green
kubectl patch service app-service -p '{
  "spec": {
    "selector": {
      "app": "app-green"
    }
  }
}'

Canary Deployment

Deployer la nouvelle version sur un petit pourcentage de Pods pour tester.

# 90% v1, 10% v2
kubectl scale deployment app-v1 --replicas=9
kubectl create deployment app-v2 --image=app:v2 --replicas=1

# Les deux deployments ont le meme label pour le Service
# Le trafic est reparti proportionnellement

Annotations utiles

metadata:
  annotations:
    kubernetes.io/change-cause: "Update to version 1.22"

Verification avant rollout

kubectl diff -f deployment.yaml
kubectl apply -f deployment.yaml --dry-run=server
Production : Utilisez des outils comme Argo Rollouts ou Flagger pour des strategies avancees (canary progressif, A/B testing).