Points clés
- ✓Canary deployment route 5-10% du trafic vers la nouvelle version avant rollout complet
- ✓Flagger automatise l'analyse et le rollback avec des seuils de succès configurables (error rate < 1%, latence P99)
Le canary deployment Kubernetes stratégie permet à tout ingénieur infrastructure Kubernetes de déployer de nouvelles versions en limitant l'exposition aux risques. Cette technique de déploiement progressif Kubernetes route un faible pourcentage du trafic vers la nouvelle version avant un rollout complet. Avec 82% des utilisateurs de containers exécutant Kubernetes en production, maîtriser cette stratégie devient indispensable.
TL;DR : Le canary deployment expose progressivement 5-10% du trafic à une nouvelle version, permet de valider les métriques en conditions réelles, puis augmente graduellement jusqu'à 100% ou rollback automatique.
Pour maîtriser ces compétences, découvrez la formation LFS458 Administration Kubernetes.
Qu'est-ce que le canary deployment pour l'ingénieur infrastructure Kubernetes ?
Le canary deployment est une stratégie de déploiement qui introduit une nouvelle version d'application auprès d'un sous-ensemble d'utilisateurs avant de l'étendre à l'ensemble du trafic. Le terme provient des canaris utilisés dans les mines pour détecter les gaz toxiques.
Cette approche se distingue du rolling update standard par son contrôle granulaire du trafic. Là où un rolling update remplace progressivement tous les pods, le canary maintient deux versions simultanément avec une répartition de trafic configurable.
À retenir : Le canary deployment valide une version en production réelle avec un blast radius minimal.
Si vous utilisez Kubernetes, le canary deployment représente une pratique essentielle pour minimiser les risques de déploiement.
Le guide déploiement et mise en production Kubernetes couvre les fondamentaux à connaître avant d'implémenter cette stratégie.
Comment fonctionne le déploiement progressif Kubernetes natif ?
Architecture de base avec deux Deployments
La méthode native utilise deux Deployments distincts pointant vers le même Service :
# deployment-stable.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-stable
spec:
replicas: 9
selector:
matchLabels:
app: myapp
version: stable
template:
metadata:
labels:
app: myapp
version: stable
spec:
containers:
- name: myapp
image: myapp:1.0.0
---
# deployment-canary.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-canary
spec:
replicas: 1
selector:
matchLabels:
app: myapp
version: canary
template:
metadata:
labels:
app: myapp
version: canary
spec:
containers:
- name: myapp
image: myapp:1.1.0
Service unifié
Le Service sélectionne les pods des deux Deployments via le label commun :
apiVersion: v1
kind: Service
metadata:
name: myapp
spec:
selector:
app: myapp # Sélectionne stable ET canary
ports:
- port: 80
targetPort: 8080
Avec 9 replicas stable et 1 replica canary, environ 10% du trafic atteint la nouvelle version.
Limitations de l'approche native
Cette méthode présente des contraintes :
- Granularité limitée : la répartition dépend du ratio de pods
- Pas de routage intelligent : impossible de cibler des utilisateurs spécifiques
- Rollback manuel : nécessite une intervention pour supprimer le canary
Les stratégies de déploiement Kubernetes comparent cette approche aux alternatives.
Comment l'ingénieur infrastructure Kubernetes implémente le progressive delivery avec Istio ?
Configuration du traffic splitting
Istio permet un contrôle précis du routage via VirtualService :
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: myapp
spec:
hosts:
- myapp
http:
- route:
- destination:
host: myapp
subset: stable
weight: 95
- destination:
host: myapp
subset: canary
weight: 5
DestinationRule pour les subsets
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
name: myapp
spec:
host: myapp
subsets:
- name: stable
labels:
version: stable
- name: canary
labels:
version: canary
Routage basé sur les headers
Ciblez des utilisateurs spécifiques pour le testing :
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: myapp
spec:
hosts:
- myapp
http:
- match:
- headers:
x-canary:
exact: "true"
route:
- destination:
host: myapp
subset: canary
- route:
- destination:
host: myapp
subset: stable
À retenir : Le progressive delivery Kubernetes Istio offre un contrôle granulaire impossible avec les Deployments natifs.
Le guide GitOps et Kubernetes explique comment automatiser ces configurations.
Automatiser le canary deployment avec Flagger
Installation et configuration
Flagger automatise l'analyse et la promotion des canary deployments :
apiVersion: flagger.app/v1beta1
kind: Canary
metadata:
name: myapp
spec:
targetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp
service:
port: 80
analysis:
interval: 1m
threshold: 5
maxWeight: 50
stepWeight: 10
metrics:
- name: request-success-rate
thresholdRange:
min: 99
interval: 1m
- name: request-duration
thresholdRange:
max: 500
interval: 1m
Workflow automatisé
Flagger exécute ce workflow :
- Détection : nouvelle image dans le Deployment
- Création : déploiement du canary avec 0% de trafic
- Analyse : incrémentation progressive (10% → 20% → ... → 50%)
- Validation : vérification des métriques à chaque étape
- Promotion : passage à 100% si succès, rollback si échec
Intégration Prometheus
Configurez les métriques personnalisées :
metrics:
- name: error-rate
templateRef:
name: error-rate
namespace: flagger-system
thresholdRange:
max: 1
interval: 1m
Le pipeline CI/CD pour Kubernetes détaille l'intégration de Flagger dans votre chaîne de déploiement.
Comparaison canary vs autres stratégies de déploiement
| Critère | Canary | Rolling Update | Blue-Green |
|---|---|---|---|
| Risque d'exposition | Minimal (5-10%) | Progressif (par pod) | Total (50% min) |
| Rollback | Instantané | Progressif | Instantané |
| Ressources requises | +10-20% | 0% supplémentaire | +100% |
| Complexité | Élevée | Faible | Moyenne |
| Validation en prod | Oui | Limitée | Oui (après switch) |
| Routing granulaire | Oui (avec service mesh) | Non | Non |
Helm vs Kustomize compare les outils pour gérer ces configurations.
Quelles métriques surveiller pendant un canary deployment ?
Métriques de performance
- Latence P99 : temps de réponse du 99e percentile
- Throughput : requêtes par seconde traitées
- Error rate : pourcentage d'erreurs 5xx
Métriques business
- Conversion rate : impact sur les KPIs métier
- Bounce rate : taux d'abandon utilisateur
- Revenue per request : pour les applications e-commerce
Métriques d'infrastructure
- CPU/Memory utilisation : consommation des ressources
- Pod restarts : stabilité des containers
- Network errors : problèmes de connectivité
# Requête Prometheus pour le taux d'erreur par version
sum(rate(http_requests_total{status=~"5.*", app="myapp"}[5m])) by (version)
/
sum(rate(http_requests_total{app="myapp"}[5m])) by (version)
À retenir : Définissez vos critères de succès avant le déploiement. Un canary sans métriques est un rollout aveugle.
Les tutoriels et guides pratiques Kubernetes proposent des exercices hands-on sur le monitoring.
Bonnes pratiques pour réussir votre canary deployment Kubernetes stratégie
1. Commencer petit
Démarrez avec 1-5% du trafic. Augmentez par paliers de 10% maximum.
2. Définir des critères d'échec clairs
Automatisez le rollback si :
- Taux d'erreur > 1%
- Latence P99 > 2x baseline
- Alertes critiques déclenchées
3. Tester en conditions réelles
Le canary doit recevoir du trafic représentatif :
- Heures de pointe incluses
- Tous les types de requêtes
- Durée suffisante (minimum 30 minutes)
4. Préparer le rollback
# Rollback immédiat avec kubectl
kubectl rollout undo deployment/myapp-canary
# Avec Flagger, supprimer simplement l'image canary
kubectl set image deployment/myapp myapp=myapp:1.0.0
L'autoscaling Kubernetes garantit que votre canary scale correctement sous charge.
Cas d'usage réels du déploiement progressif Kubernetes
Migration de base de données
Validez les changements de schéma avec un canary limité avant la migration complète.
Refactoring majeur
Testez une réécriture de service avec un faible pourcentage de trafic réel.
Feature flags
Combinez canary deployment et feature flags pour un contrôle maximal.
Selon le rapport CNCF 2025, 104 000 personnes ont passé l'examen CKA avec une croissance de 49% par an. La maîtrise du canary deployment fait partie des compétences attendues.
Passez à l'action avec une formation certifiante
La formation LFS458 Administration Kubernetes couvre les stratégies de déploiement avancées sur 4 jours. Pour les développeurs, la formation LFD459 Kubernetes pour les développeurs de 3 jours prépare au CKAD.
Consultez le calendrier des prochaines sessions et réservez votre place.