Skip to content
Latchkey

How to Use Argo Rollouts for Progressive Delivery

An Argo Rollouts Rollout replaces a Deployment and advances a new version through weighted canary steps with pauses for analysis.

Define a Rollout with a canary strategy of setWeight and pause steps. GitOps commits the new image, and Rollouts shifts traffic gradually, pausing for manual or automated checks.

Steps

  • Install the Argo Rollouts controller.
  • Convert the Deployment to a Rollout resource.
  • Define canary steps with setWeight and pause.
  • GitOps updates the image; Rollouts runs the canary.

Rollout manifest

apps/api/rollout.yaml
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
  name: api
spec:
  replicas: 5
  strategy:
    canary:
      steps:
        - setWeight: 20
        - pause: { duration: 5m }
        - setWeight: 50
        - pause: {}
        - setWeight: 100
  selector:
    matchLabels:
      app: api
  template:
    metadata:
      labels:
        app: api
    spec:
      containers:
        - name: api
          image: ghcr.io/my-org/api:v1.4.2

Gotchas

  • An empty pause: {} waits indefinitely until you promote with kubectl argo rollouts promote api.
  • Pair canary steps with an AnalysisTemplate to abort automatically on bad metrics.

Related guides

Run this faster and cheaper on Latchkey managed runners. Start free →