Voer Canary-Deployments uit met Argo Rollouts
Categories:
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.
Container | Naam | Namespace | Soort | Type | Doel |
---|---|---|---|---|---|
Argo Rollouts Controller | argo-rollouts-**********-***** | argo-rollouts | Pod | Pod(s) waar de Argo Rollouts Controller draait | |
Demo Rollout | rollouts-demo | argo-rollouts-demo | Rollout | Definieert hoe de rollout beheerd moet worden, bijvoorbeeld met een canary-strategie. | |
Stabiele / Canary Demo Pods | rollouts-demo-**********-***** | argo-rollouts-demo | Pod | Pods met de Argo Rollouts Demo-app argoproj/rollouts-demo | |
Demo Service | rollouts-demo | argo-rollouts-demo | Service | LoadBalancer | Definieert een service die toegang biedt via http://1.1.4.25 |
Randvoorwaarden
- Installeer en Beheer Argo CD met Ansible: Zet een Kubernetes-cluster op, installeer Argo CD en beheer beide met behulp van de Ansible-rollen van het C2 Platform voor Linux en Kubernetes.
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
Feedback
Was deze pagina nuttig?
Fijn om te horen! Vertel ons alstublieft hoe we kunnen verbeteren.
Jammer om dat te horen. Vertel ons alstublieft hoe we kunnen verbeteren.