RousselTMLEARNING

Proxy & réseau

Canary automatisé avec Flagger et Traefik sur Kubernetes

Automatiser les déploiements canary avec Flagger et Traefik : ressource Canary, analyse des métriques Prometheus, progression des poids, promotion ou retour arrière automatiques, webhooks de tests.

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.

Analyse canary de Flagger
Les décisions reposent sur des métriques Prometheus, pas sur un opérateur humain.

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:9090

Canary #

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.

Articles liés

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 : authentification …

Traefik : les providers (Docker, Kubernetes, Nomad, Consul, fichiers, clés-valeurs)

Les providers alimentent la configuration dynamique de Traefik : découverte des services Docker, Swarm, Kuber…

Traefik comme Ingress Controller pour Kubernetes (Helm, IngressRoute, Gateway API)

Installer Traefik dans Kubernetes avec Helm et publier des applications avec Ingress, les CRD IngressRoute et…

Pour aller plus loin

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !