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
Gestion des certificats SSL/TLS avec Let's Encrypt et ACME
Apprenez à automatiser la génération et le renouvellement de vos certificats SSL/TLS avec Let's E...
HAProxy dans Kubernetes : L'Ingress Controller Haute Performance
Découvrez en profondeur l'intégration de HAProxy dans Kubernetes. Architecture Direct-to-Pod, opt...
Les plugins Traefik : l'exemple de CrowdSec pour bloquer les attaques
Étendre Traefik avec des plugins (catalogue officiel, interpréteur Yaegi), puis protéger ses appl...
Traefik : les logs (journaux applicatifs et access logs)
Configurer les deux journaux de Traefik : le journal de fonctionnement (niveaux, format) et les a...
Traefik : le tracing distribué avec OpenTelemetry
Activer le tracing de Traefik v3 avec OpenTelemetry (OTLP), propager le contexte W3C vers les app...
Kubernetes : Pods, ReplicaSets et Deployments (déployer et mettre à jour)
Maîtriser les workloads Kubernetes : anatomie d'un pod, ReplicaSet, Deployment, stratégies Rollin...
HAProxy comme Ingress Controller Kubernetes : Le Guide de Production
Découvrez comment utiliser HAProxy comme Ingress Controller dans Kubernetes. Architecture Direct-...
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'...