Progressive Delivery Home Lab
low
kubernetes ready
local lab
make validate
Use the guide first.
The full learning guide is on this page. Open the repository files only when a step asks you to inspect code, fork the project, or download raw assets.
Project Guide
Section titled “Project Guide”
Local Kubernetes lab for learning canary releases and automated rollback with Argo Rollouts.
What You Learn
Section titled “What You Learn”- Why progressive delivery is safer than all-at-once deploys
- How canary steps work
- How service selectors route traffic during rollout
- How to pause, promote, and abort a rollout
Architecture
Section titled “Architecture”flowchart LR Student["Student changes image tag"] --> Manifest["rollouts/rollout.yaml"] Manifest --> Controller["Argo Rollouts controller"] Controller --> Canary["Canary ReplicaSet"] Controller --> Stable["Stable ReplicaSet"] Service["Kubernetes Service"] --> Canary Service --> StablePrerequisites
Section titled “Prerequisites”- Docker
- Kind for the one-command workflow, or Minikube if you prefer manual setup
kubectl- Argo Rollouts kubectl plugin, optional but recommended
One-Command Local Workflow
Section titled “One-Command Local Workflow”make validatemake upmake logsmake downmake up creates a local Kind cluster named rollout-lab, installs Argo Rollouts, and applies the sample rollout.
Manual Quick Start
Section titled “Manual Quick Start”kind create cluster --name rollout-labkubectl create namespace argo-rolloutskubectl apply -n argo-rollouts -f https://github.com/argoproj/argo-rollouts/releases/latest/download/install.yamlkubectl wait --for=condition=available --timeout=180s deployment/argo-rollouts -n argo-rolloutskubectl apply -f rollouts/kubectl argo rollouts get rollout demo-rollout -n progressive-delivery --watchChange the image tag in rollouts/rollout.yaml, apply it again, and watch the canary steps.
Validation
Section titled “Validation”make validateThis parses the namespace, service, and rollout YAML locally, so it works before a cluster or Argo Rollouts CRD exists.
Troubleshooting
Section titled “Troubleshooting”no matches for kind "Rollout": install Argo Rollouts before applying the manifest to a cluster;make validateis only a local YAML check.- Rollout never progresses: check pod readiness with
make logs, then inspect the image tag inrollouts/rollout.yaml. - Argo Rollouts plugin missing: use
kubectl get rollout -n progressive-deliveryfor a basic status view. - Kind cluster already exists: run
make down, or useCLUSTER=my-rollout-lab make up.
Cleanup
Section titled “Cleanup”make downFor Minikube users:
minikube deleteStudent Exercises
Section titled “Student Exercises”- Add an analysis template.
- Introduce a bad image tag and abort the rollout.
- Change canary weights.
- Compare this with a normal Kubernetes Deployment.