← Recipes

阅读中文版本

Implement Progressive Delivery Steps

Roll out a change in controlled increments with automated analysis between steps so a bad release is caught early.

~40 mindeploymentopsreliability

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: app

Expected 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

  1. 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.

  1. 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.