Amazon EKS — Blue/Green & Canary Deployments
Blue/Green & Canary Deployments
Rolling updates are good, but sometimes you need more control: instant rollback (blue/green) or gradual traffic shifting (canary).
Blue/Green Deployment
Blue/Green Strategy
┌─────────────────────────────────────────────────┐
│ │
│ Service (selector: version=blue) │
│ │ │
│ ┌────▼────┐ ┌─────────┐ │
│ │ Blue v1 │ │ Green v2│ ← Green deployed │
│ │ (live) │ │ (idle) │ but no traffic │
│ └─────────┘ └─────────┘ │
│ │
│ Test Green → Switch Service selector → Done │
│ │ │
│ ┌─────────┐ ┌────▼────┐ │
│ │ Blue v1 │ │ Green v2│ ← Instant switch │
│ │ (idle) │ │ (live) │ by changing selector│
│ └─────────┘ └─────────┘ │
│ │
│ Rollback: Switch selector back to blue │
└─────────────────────────────────────────────────┘
Blue/Green with Services
# Blue deployment (current)
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-blue
spec:
replicas: 3
selector:
matchLabels:
app: web
version: blue
template:
metadata:
labels:
app: web
version: blue
spec:
containers:
- name: web
image: myapp:v1
---
# Green deployment (new)
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-green
spec:
replicas: 3
selector:
matchLabels:
app: web
version: green
template:
metadata:
labels:
app: web
version: green
spec:
containers:
- name: web
image: myapp:v2
---
# Service — switch selector to cutover
apiVersion: v1
kind: Service
metadata:
name: web
spec:
selector:
app: web
version: blue # Change to "green" to switch
ports:
- port: 80
# Switch traffic from blue to green
$ kubectl patch service web -p '{"spec":{"selector":{"version":"green"}}}'
# Rollback
$ kubectl patch service web -p '{"spec":{"selector":{"version":"blue"}}}'
Canary Deployment
Send a small percentage of traffic to the new version:
Canary Strategy
─────────────────
Step 1: 95% v1, 5% v2 ← Deploy 1 canary pod
Step 2: Monitor errors, latency
Step 3: 75% v1, 25% v2 ← If OK, increase
Step 4: 50% v1, 50% v2
Step 5: 0% v1, 100% v2 ← Full rollout
With ALB Ingress annotations you can set exact traffic weights.
Strategy Comparison
| Strategy | Rollback Speed | Resource Cost | Risk |
|---|---|---|---|
| Rolling Update | Slow (undo) | 1x + surge | Medium |
| Blue/Green | Instant | 2x | Low |
| Canary | Fast | 1x + canary | Lowest |
What’s Next?
Package apps: Helm Deployments.