This article is available in French.
1. Le principe #
Le canary sans intervention humaine.
Fonctionnement #
Flagger est un opérateur Kubernetes de progressive delivery. À partir d'un Deployment, il crée une version primary (stable) et une version canary, puis pilote un TraefikService pondéré. À chaque nouvelle image, il augmente progressivement la part de trafic du canary tant que les métriques restent bonnes, puis le promeut ; sinon il revient en arrière.
2. Installation et ressource Canary #
Flagger avec le provider Traefik.
Installation #
helm repo add flagger https://flagger.app
helm upgrade --install flagger flagger/flagger -n traefik \
--set meshProvider=traefik \
--set metricsServer=http://prometheus.monitoring:9090Canary #
apiVersion: flagger.app/v1beta1
kind: Canary
metadata: { name: app, namespace: app }
spec:
provider: traefik
targetRef: { apiVersion: apps/v1, kind: Deployment, name: app }
service: { port: 80, targetPort: 8080 }
analysis:
interval: 1m
threshold: 5 # 5 analyses en échec = retour arrière
maxWeight: 50
stepWeight: 10
metrics:
- name: request-success-rate
thresholdRange: { min: 99 }
interval: 1m
- name: request-duration
thresholdRange: { max: 500 } # millisecondes
interval: 1m
webhooks:
- name: tests-de-fumee
type: pre-rollout
url: http://flagger-loadtester.app/
metadata: { cmd: "curl -sf http://app-canary.app/healthz" }3. Suivre et déclencher #
Au quotidien.
Commandes #
kubectl -n app set image deploy/app app=registre/app:2.1.0 # déclenche une analyse
kubectl -n app get canary app -w # Progressing, Succeeded, Failed
kubectl -n app describe canary app # événements : poids, métriques, décisions
kubectl -n app get traefikservice- Générez du trafic pendant l'analyse (loadtester) : sans requêtes, les métriques sont vides et l'analyse échoue.
- Choisissez des seuils alignés sur vos SLO.
- Envoyez les événements de Flagger dans le canal de l'équipe (alerting Slack ou Teams).
Bonne Pratique : Commencez sur un service peu critique et observez plusieurs déploiements avant de généraliser.
My progress
Sign in to track your progress and take notes. Sign in
Recommended Articles
Stratégies de déploiement avec Traefik : blue/green, canary et rolling
Mettre en œuvre les stratégies de déploiement avec Traefik : rolling update par l'orchestrateur, ...
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 : les métriques avec Prometheus et OpenTelemetry
Exposer les métriques de Traefik (Prometheus ou OTLP), comprendre les séries par entrypoint, rout...
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...
Bonnes pratiques Traefik : sécurité, haute disponibilité et observabilité
Bonnes pratiques Traefik : sécurisation du dashboard et du socket Docker, TLS moderne, middleware...
Protocole ACME : serveur ACME, challenges http-01 et dns-01, automatisation TLS
Comprendre le protocole ACME : rôle du serveur ACME (Let's Encrypt, ZeroSSL, step-ca), challenges...
Traefik : les providers (Docker, Kubernetes, Nomad, Consul, fichiers, clés-valeurs)
Les providers alimentent la configuration dynamique de Traefik : découverte des services Docker, ...
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 : vue d'ensemble, architecture et premier déploiement
Découvrir Traefik : reverse proxy et load balancer cloud-native, entrypoints, routers, services, ...