Rollout Spec Reference
Full reference for all Rollout CRD fields. Every field that affects canary behavior, analysis, and rollback policy.
Rollout Spec Reference
Top-Level Fields
| Field | Type | Required | Description |
|---|---|---|---|
| apiVersion | string | Yes | Must be kubestead.io/v1alpha1 |
| kind | string | Yes | Must be Rollout |
| metadata.name | string | Yes | Name of the Rollout resource |
| spec.replicas | integer | No | Desired replica count (default: 1) |
| spec.strategy | string | Yes | Must be canary |
| spec.canarySteps | array | Yes | Ordered list of canary progression steps |
| spec.analysisTemplate | object | No | Reference to an AnalysisTemplate resource |
| spec.errorBudgetPolicy | object | No | Burn rate threshold configuration |
| spec.rollbackPolicy | object | No | Automatic rollback behavior |
canarySteps
An ordered array of step definitions. Each step is one of:
# Set traffic weight (percentage to canary)
- setWeight: 12
# Pause for duration
- pause:
duration: 5m # 30s, 2m, 1h formats supported
# Manual approval gate (blocks until approved via CLI or API)
- pause: {}
# Run a specific analysis template
- analysis:
templates:
- templateName: error-rate-analysis
analysisTemplate
analysisTemplate:
name: error-rate-analysis # Name of the AnalysisTemplate CRD
args:
- name: service
value: payments-service # Passed as {args.service} in PromQL
errorBudgetPolicy
errorBudgetPolicy:
burnRateThreshold: 2.0 # Trigger rollback when burn rate exceeds this multiple
windowMinutes: 60 # Evaluation window in minutes (default: 60)
rollbackPolicy
rollbackPolicy:
autoRollback: true # Enable automatic rollback on failure
maxRollbackDuration: 90s # Maximum time to complete rollback
scaleDownCanary: true # Scale canary pods to 0 on rollback
waitForPodsReady: true # Wait for stable pods to be Ready
notifySlack: true # Send Slack notification
slackSecretRef: slack-webhook # K8s secret name containing webhook URL
notifyPagerDuty: false # Send PagerDuty alert
inconclusivePolicy: pause # pause | fail | rollback (default: pause)