This article is available in French.
1. Choisir une stratégie #
Risque, coût et vitesse de retour arrière.
Comparaison #
| Stratégie | Principe | Retour arrière | Coût |
|---|---|---|---|
| Rolling | Les instances sont remplacées progressivement | Nouveau déploiement de l'ancienne version | Faible |
| Blue/green | Deux environnements complets, bascule du trafic | Instantané (rebasculer) | Double capacité pendant la bascule |
| Canary | Une petite part du trafic sur la nouvelle version, puis augmentation | Remettre le poids à 0 | Faible ; demande de bonnes métriques |
| Mirroring | Copie du trafic vers la nouvelle version, réponses ignorées | Sans impact utilisateur | Charge en double |
2. Mise en œuvre #
Services pondérés et bascule.
Canary avec le provider fichier #
http:
services:
app:
weighted:
services:
- name: app-v1@docker
weight: 90
- name: app-v2@docker
weight: 10
sticky:
cookie: { name: version } # un utilisateur reste sur la même version
routers:
app:
rule: Host(`app.exemple.fr`)
service: appCanary dans Kubernetes (TraefikService) #
apiVersion: traefik.io/v1alpha1
kind: TraefikService
metadata: { name: app-canary, namespace: app }
spec:
weighted:
services:
- { name: app-v1, port: 80, weight: 90 }
- { name: app-v2, port: 80, weight: 10 }Blue/green et mirroring #
Pour le blue/green, on change le service ciblé par le routeur (app-blue → app-green) ; avec le provider fichier, la bascule est prise en compte à chaud. Le mirroring copie une part du trafic vers une version de test :
http:
services:
app-miroir:
mirroring:
service: app-v1@docker
mirrors:
- { name: app-v2@docker, percent: 20 }3. Bonnes pratiques #
Déployer sans crainte.
Règles #
- Définir à l'avance les critères de réussite (taux d'erreurs, latence p95) et les surveiller par service.
- Rendre les migrations de base de données compatibles avec les deux versions (expand / contract).
- Automatiser la progression et le retour arrière plutôt que modifier les poids à la main : c'est le rôle de Flagger (article suivant).
- Health checks sur les services pour que Traefik retire automatiquement une instance défaillante.
My progress
Sign in to track your progress and take notes. Sign in
Recommended Articles
Canary automatisé avec Flagger et Traefik sur Kubernetes
Automatiser les déploiements canary avec Flagger et Traefik : ressource Canary, analyse des métri...
Maîtriser les ACLs dans HAProxy : Le Guide Complet
Guide complet sur les ACLs HAProxy : apprenez à configurer le routage intelligent, le contrôle d'...
Maîtriser les ACLs dans HAProxy
Guide complet sur les ACLs HAProxy : apprenez à configurer le routage intelligent, le contrôle d'...
CI/CD de bout en bout (4/5) : stratégies de déploiement et retour arrière
Déployer sans interruption et sans risque : recreate, rolling update, blue/green, canary, feature...
L'API de Traefik : inspecter la configuration et sécuriser le tableau de bord
Utiliser l'API REST de Traefik pour inspecter routeurs, services, middlewares et entrypoints, l'e...
Traefik : vue d'ensemble, architecture et premier déploiement
Découvrir Traefik : reverse proxy et load balancer cloud-native, entrypoints, routers, services, ...
Bonnes pratiques Traefik : sécurité, haute disponibilité et observabilité
Bonnes pratiques Traefik : sécurisation du dashboard et du socket Docker, TLS moderne, middleware...
Traefik : sécuriser et transformer les requêtes avec les middlewares (BasicAuth, ForwardAuth…)
Les middlewares Traefik modifient les requêtes et réponses entre le routeur et le service : authe...
Traefik comme Ingress Controller pour Kubernetes (Helm, IngressRoute, Gateway API)
Installer Traefik dans Kubernetes avec Helm et publier des applications avec Ingress, les CRD Ing...