Progressive Delivery with Argo Rollouts & Flagger
Manage progressive deployments using kubectl-mcp-server's rollout tools (11 tools).
When to Apply
Use this skill when:
-
User mentions: "canary", "blue-green", "progressive delivery", "Argo Rollouts", "Flagger"
-
Operations: rolling out new versions, traffic splitting, automated rollbacks
-
Keywords: "gradual rollout", "traffic shift", "analysis run", "promote", "abort"
Priority Rules
Priority Rule Impact Tools
1 Detect Argo Rollouts installation first CRITICAL rollouts_detect_tool
2 Check rollout status before promoting HIGH rollout_status_tool
3 Monitor analysis runs for failures HIGH analysis_runs_list_tool
4 Abort immediately on critical failures CRITICAL rollout_abort_tool
Quick Reference
Task Tool Example
Detect Argo Rollouts rollouts_detect_tool
rollouts_detect_tool()
List rollouts rollouts_list_tool
rollouts_list_tool(namespace)
Get rollout status rollout_status_tool
rollout_status_tool(name, namespace)
Promote rollout rollout_promote_tool
rollout_promote_tool(name, namespace)
Check Installation
rollouts_detect_tool()
Argo Rollouts
List Rollouts
rollouts_list_tool(namespace="default")
Shows:
- Rollout name
- Strategy (canary/blueGreen)
- Status
- Desired/Ready replicas
Get Rollout Details
rollout_get_tool(name="my-rollout", namespace="default")
Shows:
- Spec (strategy, steps)
- Status (phase, conditions)
- Current step
Check Rollout Status
rollout_status_tool(name="my-rollout", namespace="default")
Returns detailed status with:
- Current step index
- Canary weight
- Stable/canary replicasets
Promote Rollout
Promote to next step
rollout_promote_tool(name="my-rollout", namespace="default")
Full promote (skip remaining steps)
rollout_promote_tool(name="my-rollout", namespace="default", full=True)
Abort Rollout
rollout_abort_tool(name="my-rollout", namespace="default")
Reverts to stable version
Retry Rollout
rollout_retry_tool(name="my-rollout", namespace="default")
Retry failed rollout
Restart Rollout
rollout_restart_tool(name="my-rollout", namespace="default")
Triggers new rollout with same spec
Analysis Runs
List analysis runs
analysis_runs_list_tool(namespace="default")
Analysis runs verify rollout health:
- Prometheus metrics
- Web hooks
- Custom jobs
Create Canary Rollout
kubectl_apply(manifest=""" apiVersion: argoproj.io/v1alpha1 kind: Rollout metadata: name: my-rollout namespace: default spec: replicas: 5 strategy: canary: steps: - setWeight: 20 - pause: {duration: 1m} - setWeight: 40 - pause: {duration: 1m} - setWeight: 60 - pause: {duration: 1m} - setWeight: 80 - pause: {duration: 1m} selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: app image: my-app:v2 ports: - containerPort: 8080 """)
Create Blue-Green Rollout
kubectl_apply(manifest=""" apiVersion: argoproj.io/v1alpha1 kind: Rollout metadata: name: my-rollout namespace: default spec: replicas: 3 strategy: blueGreen: activeService: my-app-active previewService: my-app-preview autoPromotionEnabled: false selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: app image: my-app:v2 """)
Flagger
List Canaries
flagger_canaries_list_tool(namespace="default")
Shows:
- Canary name
- Status (Initialized, Progressing, Succeeded, Failed)
- Weight
Get Canary Details
flagger_canary_get_tool(name="my-canary", namespace="default")
Create Flagger Canary
kubectl_apply(manifest=""" apiVersion: flagger.app/v1beta1 kind: Canary metadata: name: my-canary namespace: default spec: targetRef: apiVersion: apps/v1 kind: Deployment name: my-app service: port: 80 analysis: interval: 30s threshold: 5 maxWeight: 50 stepWeight: 10 metrics: - name: request-success-rate threshold: 99 interval: 1m - name: request-duration threshold: 500 interval: 1m """)
Progressive Delivery Workflows
Canary Deployment
- rollouts_list_tool(namespace)
-
Update image in rollout
- rollout_status_tool(name, namespace) # Monitor progress
- rollout_promote_tool(name, namespace) # Promote when ready
-
Or: rollout_abort_tool(name, namespace) if issues
Blue-Green Deployment
- rollout_get_tool(name, namespace) # Check current state
-
Update image
- rollout_status_tool(name, namespace) # Wait for preview ready
-
Test preview service
- rollout_promote_tool(name, namespace) # Switch traffic
Troubleshooting
Rollout Stuck
- rollout_status_tool(name, namespace) # Check current step
- analysis_runs_list_tool(namespace) # Check analysis
- get_events(namespace) # Check events
-
If analysis failing:
rollout_abort_tool(name, namespace)
Canary Failing Analysis
- analysis_runs_list_tool(namespace)
-
Check metrics source (Prometheus, etc.)
-
Verify threshold configuration
- rollout_retry_tool(name, namespace) # Retry if transient
Related Skills
-
k8s-deploy - Standard deployments
-
k8s-service-mesh - Traffic management with Istio