Full Service Ownership for Developers
GitOps and canary releasing: Joining the dots by combining Argo CD and Rollouts
GitOps & canary releasing
Now that you have a solid understanding of both GitOps and canary releasing and how these techniques can be implemented within Kubernetes, the next step is to combine the approaches to enable a progressive delivery workflow.
Hands-on! Combine ArgoCD and Argo Rollouts for progressive delivery on Kubernetes
The goal of this tutorial is to trigger an Argo Rollout of the sample project from the previous hands-on section of this module without using kubectl to apply the changes to the Argo Rollout CRD.
- First, you will need to combine the cluster configuration from the previous two hands-on sections of the “ship” module. The goal is to create a Kubernetes cluster with the following installed:
Argo CD (from “”)
- Edge Stack API Gateway (from “Hands-on! K8s Continuous Delivery with GitOps and Argo CD”, and referenced in “Hands-on! Canary releases on Kubernetes with Argo Rollouts”)
- Argo Rollouts (from “Hands-on! Canary releases on Kubernetes with Argo Rollouts”)
- You will also need to have both the Argo CD and Argo Rollouts CLI tools installed locally.
- First, clone Kostis' sample manifest repo that he used to deploy his demo app to your own GitHub account
- Next, create an Argo CD project using your forked demo repo as the target. You can do this either through the Argo CD UI or the CLI
- Trigger sync on this project in Argo CD so that your sample app deploys into your cluster. View the /demo/ endpoint of the application via the Edge Stack to verify everything is working
- Now update the “rollout.yaml” file within your forked repo with a new version of the demo app image e.g. “kostiscodefresh/summer-of-k8s-app:v2” and commit this to GitHub.
- Trigger another Argo CD sync to begin the canary. As Kostis showed in the livestream, you will need to use the Argo Rollouts CLI to "promote" your canary several times so that a complete rollout occurs. Take a screenshot of the Argo CD UI during your canary rollout
- Finally, modify the “rollout.yaml” with a new version of the image e.g. “kostiscodefresh/summer-of-k8s-app:v3”, and change the pauses to remove the need for manual promotion and instead add a 30-second pause between each step.