Voer Canary-Deployments uit met Argo Rollouts

Leer hoe je canary-deployments implementeert met Argo Rollouts met behulp van de Argo Rollouts demo-applicatie.

Projecten: c2platform/ansible, c2platform.core, c2platform.mw


De installatie stappen die worden beschreven in de documentatie  zijn reeds uitgevoerd door Ansible tijdens de eerste stap van deze handleiding: Installeer en Beheer Argo CD met Ansible . Dit gebeurt wanneer je het commando vagrant up c2d-argocd uitvoert. Het PlantUML-diagram hieronder toont de structuur die is opgezet door Ansible.

ContainerNaamNamespaceSoortTypeDoel
Argo Rollouts Controllerargo-rollouts-**********-*****argo-rolloutsPodPod(s) waar de Argo Rollouts Controller draait
Demo Rolloutrollouts-demoargo-rollouts-demoRolloutDefinieert hoe de rollout beheerd moet worden, bijvoorbeeld met een canary-strategie.
Stabiele / Canary Demo Podsrollouts-demo-**********-*****argo-rollouts-demoPodPods met de Argo Rollouts Demo-app argoproj/rollouts-demo
Demo Servicerollouts-demoargo-rollouts-demoServiceLoadBalancerDefinieert een service die toegang biedt via http://1.1.4.25 

Randvoorwaarden

Rollout Status

Gebruik de c2 alias om naar de projectdirectory te navigeren en activeer de Python virtuele omgeving, SSH vervolgens naar de Argo CD-container c2d-argocd:

c2
vagrant ssh c2d-argocd

Gebruik de Argo Rollouts Kubectl Plugin om de huidige status van de rollout te bekijken.

kubectl argo rollouts get rollout rollouts-demo --watch \
  --namespace argo-rollouts-demo

Dit zal vijf pods tonen, draaiend op basis van de image argoproj/rollouts-demo:blue.

Toegang tot Argo Rollouts Demo UI

Start Firefox met behulp van het geconfigureerde Firefox-profiel (zie Configureer een Firefox-profiel ). Navigeer naar http://1.1.4.25/ , log in als admin met het wachtwoord supersecret. Je zou de Argo Rollouts Demo-applicatie moeten zien. Met alleen “blauwe” pods actief zou de app eruit moeten zien als de afbeelding hieronder, met alleen blauwe vierkanten.

Rollout bijwerken

Gebruik kubectl om de rollout bij te werken naar “geel”:

kubectl argo rollouts set image rollouts-demo \
rollouts-demo=argoproj/rollouts-demo:yellow \
--namespace argo-rollouts-demo

Toon mij

Naam:            rollouts-demo
Namespace:       argo-rollouts-demo
Status:          ॥ Gepauzeerd
Bericht:         CanaryPauseStep
Strategie:       Canary
  Stap:          1/8
  SetWeight:     20
  WerkelijkGewicht:  20
Afbeeldingen:    argoproj/rollouts-demo:blue (stabiel)
                 argoproj/rollouts-demo:yellow (canary)
Replica's:
  Gewenst:       5
  Huidig:        5
  Bijgewerkt:    1
  Klaar:         5
  Beschikbaar:   5

NAAM                                    SOORT       STATUS     LEEFTIJD   INFO
⟳ rollouts-demo                         Rollout     ॥ Gepauzeerd 6u22m
├──# revisie:4
│  └──⧉ rollouts-demo-6cf78c66c5        ReplicaSet  ✔ Gezond   6u4m      canary
│     └──□ rollouts-demo-6cf78c66c5-cmmqb  Pod        ✔ Actief  4m49s     klaar:1/1
└──# revisie:3
  └──⧉ rollouts-demo-687d76d795        ReplicaSet  ✔ Gezond   6u22m     stabiel
      ├──□ rollouts-demo-687d76d795-4cw2p  Pod        ✔ Actief  6u22m     klaar:1/1
      ├──□ rollouts-demo-687d76d795-fm82t  Pod        ✔ Actief  6u22m     klaar:1/1
      ├──□ rollouts-demo-687d76d795-24kbs  Pod        ✔ Actief  6u22m     klaar:1/1
      └──□ rollouts-demo-687d76d795-dg55c  Pod        ✔ Actief  6u22m     klaar:1/1

Volgens de rollout-specificatie wordt de canary-deployment in stappen uitgevoerd. De eerste stappen betreffen het instellen van het gewicht op 20 en vervolgens pauzeren. Zo wordt er een gele canary pod gelanceerd die 20% van het verkeer ontvangt.

Je kunt de rollout-specificatie vinden in group_vars/argocd/argo_rollouts_demo.yml 

  strategie:
    canary:
      stappen:
      - setWeight: 20
      - pause: {}
      - setWeight: 40
      - pause: {duur: 10}
      - setWeight: 60
      - pause: {duur: 10}
      - setWeight: 80
      - pause: {duur: 10}

Wanneer je navigeert naar http://1.1.4.25/ , zou je gele vierkanten moeten zien verschijnen.

Rollout promoten

kubectl argo rollouts promote rollouts-demo \
  --namespace argo-rollouts-demo

Rollout afbreken

Gebruik kubectl om de rollout te wijzigen naar “rood”:

kubectl argo rollouts set image rollouts-demo \
  rollouts-demo=argoproj/rollouts-demo:red \
  --namespace argo-rollouts-demo

Breek de rollout af

kubectl argo rollouts abort rollouts-demo \
  --namespace argo-rollouts-demo

Het afbreken van de rollout zal zijn status wijzigen naar “degraded”. Om het weer te stabiliseren, werk de rollout opnieuw bij naar geel:

kubectl argo rollouts set image rollouts-demo \
  rollouts-demo=argoproj/rollouts-demo:yellow \
  --namespace argo-rollouts-demo

Extra Informatie



Laatst gewijzigd 2025.05.23: argocd C2-664 C2-679 C2-722 (40968af)