RousselTMLEARNING

Proxy & réseau

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, blue/green par bascule de routeur, canary par services pondérés (WRR), mirroring, et retour arrière.

1. Choisir une stratégie #

Risque, coût et vitesse de retour arrière.

Comparaison #

Stratégies de déploiement
Traefik porte le blue/green et le canary ; le rolling update relève de l'orchestrateur.
StratégiePrincipeRetour arrièreCoût
RollingLes instances sont remplacées progressivementNouveau déploiement de l'ancienne versionFaible
Blue/greenDeux environnements complets, bascule du traficInstantané (rebasculer)Double capacité pendant la bascule
CanaryUne petite part du trafic sur la nouvelle version, puis augmentationRemettre le poids à 0Faible ; demande de bonnes métriques
MirroringCopie du trafic vers la nouvelle version, réponses ignoréesSans impact utilisateurCharge 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: app

Canary 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.

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 !