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).