Combining ArgoCD and Argo Rollouts
Summer of K8s: Ship | Week 4 Learning Activities
Understand options for integrating the Argo projects into your workflow
Conduct a rollout of a sample application via the CLI, just YAML, and via Ambassador DCP
Submit answers to weekly challenges by Friday at 5pm PDT to qualify for weekly prize drawings.
- Read the article The pains of GitOps 1.0
- Read the article Practical Canary Releases in Kubernetes with Argo Rollouts
- Read the article Minimize failed deployments with Argo Rollouts and Smoke tests
The goal of this tutorial is to trigger an Argo Rollout of the sample project that Kostis demonstrated in week 3 of the ship module without using kubectl to apply the changes to the Argo Rollout CRD. You will do this by integrating Argo CD into the week 3 demo.
First you will need to combine the cluster configuration from week 2 and 3 of the ship sessions. The goal is to create a Kubernetes cluster with the following installed:
- Argo CD (from week 2)
- Ambassador Edge Stack (from week 2, and referenced in week 3)
- Argo Rollouts (from week 3)
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: https://github.com/kostis-codefresh/summer-of-k8s-app-manifests
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 a 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. Take a screenshot of the Argo Rollouts CLI "watching" the canary (e.g. running 'kubectl argo rollouts get rollout summer-k8s-rollout -n demo -w') at the second step of the canary release process.
Once you've completed the reading and tutorial, answer the following questions: