Deploying services safely and without interruption in a Kubernetes environment is every engineer’s dream. Today, we’re going to deeply explore the core strategies of Argo Rollouts, a powerful tool that turns that dream into reality.
Beyond simple theory, we’ve prepared guidelines on which strategy to choose in practice, so please focus for just 10 minutes! π
While Kubernetes’ basic Deployment resource offers an excellent feature called ‘RollingUpdate’, it has limitations in traffic control and fine-grained validation. Argo Rollouts complements this by providing various strategies that allow for safe deployments even for large-scale services.

1. Blue-Green Deployment: Perfect Transition and Instant Rollback π΅π’
Blue-Green deployment involves running old (Blue) and new (Green) versions simultaneously and switching traffic all at once.
- How it works: Once the new version is fully ready, the Service’s Selector is updated to direct traffic to Green.
- Advantages: Rollback is very fast (just revert the Selector).
- Disadvantages: Resources are temporarily required twice over.
π Blue-Green Practical Code
YAML
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: rollout-bluegreen
spec:
replicas: 4
revisionHistoryLimit: 2
selector:
matchLabels:
app: rollout-bluegreen
template:
metadata:
labels:
app: rollout-bluegreen
spec:
containers:
- name: rollouts-demo
image: argoproj/rollouts-demo:blue
strategy:
blueGreen:
# Service name to be activated before switching traffic to the new version
activeService: rollout-bluegreen-active
# Preview service to be connected when the new version is created
previewService: rollout-bluegreen-preview
# Whether to wait for manual approval after deployment (automation possible)
autoPromotionEnabled: false
2. Canary Deployment: Gradual Deployment Minimizing Risk π€
Canary deployment, like a canary in a coal mine, exposes the new version to a small subset of users first to verify stability, then gradually expands it.
- How it works: Traffic weight is increased incrementally, e.g., 10% -> 30% -> 50% -> 100%.
- Advantages: Prevents potential bugs from affecting all users.
- Disadvantages: The deployment process can be lengthy.
π Canary Practical Code (Basic Step Configuration)
YAML
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: rollout-canary
spec:
replicas: 10
strategy:
canary:
steps:
- setWeight: 10 # Send only 10% of traffic to the new version
- pause: {duration: 1h} # Observe and wait for 1 hour
- setWeight: 30 # If no issues, expand to 30%
- pause: {} # Wait indefinitely until manually approved by the user (Manual Pause)
- setWeight: 70
- pause: {duration: 10m}
3. Advanced Canary: Service Mesh Integration Strategy π
While basic Canary adjusts traffic by ‘replica count’, using Istio, Linkerd, or Nginx Ingress allows for much more precise control.
- Features: Even with just 1 new version pod, you can send exactly 1% of traffic via a Virtual Service.
- Header-based routing: Requests with specific headers (e.g., debug=true) or users from specific regions can be directed to the new version.
π Istio Integration Example
YAML
strategy:
canary:
trafficRouting:
istio:
virtualService:
name: my-vsvc # Istio Virtual Service name
routes:
- primary # Main route configuration
steps:
- setWeight: 5 # Only 5% adjusted at Istio level
- pause: {duration: 10m}
4. Progressive Delivery: Analysis-Based Automated Deployment π
Progressive Delivery is about deciding whether to proceed with deployment based on metrics, rather than just waiting for a set time.
- How it works: Queries Prometheus for error rates; if it exceeds 5%, it automatically rolls back. If normal, it promotes to the next stage.
π Analysis Integration Code
YAML
strategy:
canary:
analysis:
templates:
- templateName: success-rate-check # Reference to a predefined analysis template
startingStep: 1 # Start analysis from the second step (index 1)
steps:
- setWeight: 20
- pause: {duration: 5m}
5. Which Strategy Should You Choose? π―
| Situation | Recommended Strategy | Reason |
| — | — | — |
| Fast rollback is top priority | Blue-Green | Instant recovery by just changing the Selector |
| Minimize user impact | Canary | Exposed to a subset to distribute risk |
| When resources (CPU/MEM) are limited | Canary | Gradual replacement allows for fewer spare resources |
| Data consistency is critical | Blue-Green | No period where two versions receive mixed requests |
| Automated stability verification needed | Progressive | Metric-based automatic rollback ensures safe overnight deployments |
—
π Conclusion
Argo Rollouts elevates Kubernetes deployment from simple ‘replacement’ to ‘strategic operation’. We recommend starting with a simple Canary, then gradually introducing Analysis to build a fully automated, safe deployment system without human intervention.
Which strategy is most appealing for your environment? π οΈ
Leave a Reply