Implement Progressive Delivery Steps
Roll out a change in controlled increments with automated analysis between steps so a bad release is caught early.
Task
Define progressive delivery steps with automated metric analysis gates between increments.
When to use this
A release is rolled out fully at once, so any regression affects all users immediately.
Prerequisites
- A progressive delivery controller such as Argo Rollouts or Flagger
- Metric queries for success rate and latency
- A deployment pipeline
Steps
1. Define incremental steps with pauses.
steps:
- setWeight: 10
- pause: { duration: 5m }
- setWeight: 50
- pause: { duration: 5m }Expected output: Traffic increases in steps, with time to analyse each increment.
2. Attach automated analysis that aborts on regression.
analysis:
templates:
- templateName: success-rate
args:
- name: service
value: appExpected output: The rollout pauses or aborts automatically when success rate drops below threshold.
Troubleshooting
Problem
Metrics too sparse at 10 percent
Solution
Use longer pauses or compare against a canary baseline rather than absolute thresholds.
Problem
Rollback leaves partial traffic
Solution
Confirm the controller resets weight to zero and drains canary pods on abort.
Limitations
- Requires reliable metrics.
- Canary analysis adds release time.
- Not a substitute for pre-release testing.
What this recipe does
Define progressive delivery steps with automated metric analysis gates between increments.
A release is rolled out fully at once, so any regression affects all users immediately.
Prerequisites
- A progressive delivery controller such as Argo Rollouts or Flagger
- Metric queries for success rate and latency
- A deployment pipeline
Procedure
- Define incremental steps with pauses.
steps:
- setWeight: 10
- pause: { duration: 5m }
- setWeight: 50
- pause: { duration: 5m }
Expected result: Traffic increases in steps, with time to analyse each increment.
- Attach automated analysis that aborts on regression.
analysis:
templates:
- templateName: success-rate
args:
- name: service
value: app
Expected result: The rollout pauses or aborts automatically when success rate drops below threshold.
How to confirm it worked
Run the commands above and confirm every expected result in order. If a step does not produce the stated output, use the troubleshooting notes before continuing. A passing run shows a simulated regression triggers an automatic abort during a pause instead of reaching full traffic.
Troubleshooting
Metrics too sparse at 10 percent — Use longer pauses or compare against a canary baseline rather than absolute thresholds.
Rollback leaves partial traffic — Confirm the controller resets weight to zero and drains canary pods on abort.
Limitations
- Requires reliable metrics.
- Canary analysis adds release time.
- Not a substitute for pre-release testing.