kubernetes-skills/claude/k8s-rollouts/SKILL.md
Progressive delivery with Argo Rollouts and Flagger. Use when implementing canary deployments, blue-green deployments, or traffic shifting strategies.
npx skillsauth add rohitg00/kubectl-mcp-server k8s-rolloutsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Manage progressive deployments using kubectl-mcp-server's rollout tools (11 tools).
Use this skill when:
| 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 |
| 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) |
rollouts_detect_tool()
rollouts_list_tool(namespace="default")
# Shows:
# - Rollout name
# - Strategy (canary/blueGreen)
# - Status
# - Desired/Ready replicas
rollout_get_tool(name="my-rollout", namespace="default")
# Shows:
# - Spec (strategy, steps)
# - Status (phase, conditions)
# - Current step
rollout_status_tool(name="my-rollout", namespace="default")
# Returns detailed status with:
# - Current step index
# - Canary weight
# - Stable/canary replicasets
# 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)
rollout_abort_tool(name="my-rollout", namespace="default")
# Reverts to stable version
rollout_retry_tool(name="my-rollout", namespace="default")
# Retry failed rollout
rollout_restart_tool(name="my-rollout", namespace="default")
# Triggers new rollout with same spec
# List analysis runs
analysis_runs_list_tool(namespace="default")
# Analysis runs verify rollout health:
# - Prometheus metrics
# - Web hooks
# - Custom jobs
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
""")
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_canaries_list_tool(namespace="default")
# Shows:
# - Canary name
# - Status (Initialized, Progressing, Succeeded, Failed)
# - Weight
flagger_canary_get_tool(name="my-canary", namespace="default")
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
""")
1. rollouts_list_tool(namespace)
2. # Update image in rollout
3. rollout_status_tool(name, namespace) # Monitor progress
4. rollout_promote_tool(name, namespace) # Promote when ready
5. # Or: rollout_abort_tool(name, namespace) if issues
1. rollout_get_tool(name, namespace) # Check current state
2. # Update image
3. rollout_status_tool(name, namespace) # Wait for preview ready
4. # Test preview service
5. rollout_promote_tool(name, namespace) # Switch traffic
1. rollout_status_tool(name, namespace) # Check current step
2. analysis_runs_list_tool(namespace) # Check analysis
3. get_events(namespace) # Check events
4. # If analysis failing:
rollout_abort_tool(name, namespace)
1. analysis_runs_list_tool(namespace)
2. # Check metrics source (Prometheus, etc.)
3. # Verify threshold configuration
4. rollout_retry_tool(name, namespace) # Retry if transient
development
Manage vCluster (virtual Kubernetes clusters) instances using vind. Use when creating, managing, or operating lightweight virtual clusters for development, testing, or multi-tenancy.
development
Debug Kubernetes pods, nodes, and workloads. Use when pods are failing, containers crash, nodes are unhealthy, or users mention debugging, troubleshooting, or diagnosing Kubernetes issues.
devops
Kubernetes storage management for PVCs, storage classes, and persistent volumes. Use when provisioning storage, managing volumes, or troubleshooting storage issues.
testing
Manage Istio service mesh for traffic management, security, and observability. Use for traffic shifting, canary releases, mTLS, and service mesh troubleshooting.