Progressive Delivery in Kubernetes with Argo Rollouts and ArgoCD
The Deployment That Went Wrong in 30 Seconds
kubectl get pods -n production
# NAME READY STATUS RESTARTS
# api-7f9c4d-xk2lp 0/1 CrashLoopBackOff 3
# api-7f9c4d-m9p3z 0/1 CrashLoopBackOff 3
# api-7f9c4d-q1n8r 0/1 CrashLoopBackOff 3
# (old pods already terminated)
kubectl logs api-7f9c4d-xk2lp
# Error: Cannot read properties of undefined (reading 'config')
# at ServiceBootstrap.init (/app/bootstrap.js:42:23)What is Progressive Delivery?
Why Kubernetes Deployments Aren't Enough
The Ecosystem: How the Tools Fit Together
Installing Argo Rollouts
Install the Controller
Install the kubectl Plugin
Install the ArgoCD Plugin (Optional but Recommended)
Strategy 1: Canary Deployments
The Rollout Resource
Traffic Shifting with Istio
Watching a Canary Rollout Live
Promoting Manually
Aborting (Rolling Back)
Strategy 2: Blue-Green Deployments
Blue-Green Rollout
Blue-Green Flow
Promoting the Blue-Green Rollout
Automated Promotion and Rollback with AnalysisRun
AnalysisTemplate
Wiring Analysis into a Canary Rollout
Background Analysis
Datadog as an Analysis Provider
End-to-End GitOps Flow with Progressive Delivery
Repository Structure
ArgoCD Application Pointing at the Rollout
The Complete Deployment Flow
The CI Piece: Updating the Image Tag
ArgoCD UI Integration
Checking Status and Debugging
Getting Rollout Status
When a Rollout Gets Stuck
Aborting and Retrying
Converting Existing Deployments
What Canary Can't Protect You From
What I Learned Running This in Production
Summary
Further Reading
Last updated