Skip to main content
Deployments that replace all pods at once are risky: a bad image can cause widespread user errors before you detect the problem. Progressive delivery lets you gradually shift traffic to a new version—observe metrics at each step and abort if something looks wrong so traffic reverts to the stable version. Argo Rollouts implements progressive delivery for Kubernetes as a drop-in replacement for Deployments. In this guide you’ll:
  • Verify Argo Rollouts is running
  • Create a basic Rollout (Canary)
  • Update canary steps to incrementally shift traffic
  • Promote a canary and change images
  • Adopt an existing Deployment with workloadRef
  • Inspect Rollout status using the CLI and dashboard
Make sure you have the Argo Rollouts controller and dashboard installed and that you have the kubectl argo rollouts plugin available. The examples below assume a canary-demo namespace.

Prerequisites

  • Kubernetes cluster with kubectl access
  • Argo Rollouts controller and dashboard installed (namespace: argo-rollouts)
  • Optional: traffic routing provider configured (Istio, NGINX, SMI) for precise traffic splitting
Verify the controller and dashboard are running:
Example output:

Creating a basic Rollout (Canary)

This Rollout uses a Canary strategy with two steps: set 25% traffic to the new ReplicaSet, then pause indefinitely until you promote.
Notes on the behavior:
  • Without a traffic provider, Rollouts approximates weights by scaling ReplicaSets (so weights map to pod counts).
  • With a traffic routing provider (Istio, NGINX, SMI), Rollouts will use actual request routing to enforce weights.
If you get an error such as:
it’s likely a typo (e.g., step instead of steps). Fix the key and reapply. Inspect the Rollout with the Argo Rollouts kubectl plugin:
Sample summarized status output:

Updating the canary steps

You can expand the canary steps to incrementally increase traffic, inserting pauses so you can observe metrics between increases. Example: 25%, 50%, 75%, then 100%:
Apply the updated manifest:
Verify the configured steps and current step with:

Promoting a canary

To move a paused canary to the next step via CLI:
If you haven’t changed the image (no new revision), promoting will do nothing because there is no new revision to advance. Change the image in the Rollout spec to create a new revision. For example, update the container image to yellow:
Apply the change:
When the new revision appears, Rollouts will create pods for it according to the current canary weight. With 4 replicas and a 25% step, expect one pod on the new image and three on the old image. Check pods:
Example:
Promote step-by-step (either CLI or the Rollouts dashboard) to 50% (two pods), 75% (three pods), and finally 100% (all pods). From the UI you can also Promote Full or rollback to the previous stable revision.
A screenshot of the Argo Rollouts web UI for a "rollout-demo" canary deployment, showing steps, summary, containers, and revision history. The left column lists set-weight and pause steps (25%, 50%, 75%), while the right shows container images and revision details.

Adopting an existing Deployment with workloadRef

If you already have a Deployment running and want to add progressive delivery without recreating it, use workloadRef. The Rollout will take control of the referenced Deployment, manage scaling, and create revisions. Create a Deployment that Rollouts can adopt. Note: replicas: 0 so the Rollout will scale it when it takes control.
Apply the Deployment:
Now create a Rollout that references this Deployment with workloadRef:
Apply the Rollout:
The Rollout will scale the referenced Deployment to the requested replica count and create ReplicaSets/pods under the Rollout controller. Check pods:
Example output showing Rollout-created pods:
A web dashboard (Argo Rollouts) showing two rollout cards — "demo-app-rollout" and "rollout-demo" — each using a Canary strategy with revision entries, pod status checks, and Restart/Promote buttons. The namespace "canary-demo" is visible in the top-right.
Using workloadRef is useful when you want to add progressive delivery to an existing Deployment without replacing or owning it immediately—Argo Rollouts will take control of scaling and revisions for that workload.

Inspecting canary steps and revision history

You can view canary steps, revision history, and perform promote/rollback actions in the Rollouts dashboard. The UI shows each step (set weight / pause), the current traffic split, and revision details.
A screenshot of the Argo Rollouts web UI for "demo-app-rollout" showing a canary deployment with steps to set traffic weights (10%, 50%, 100%) interleaved with pauses. The right panels display the strategy summary, container image (argoproj/rollouts-demo:blue) and a revision marked stable.

Quick reference: common Rollouts commands

Summary

  • Argo Rollouts adds progressive delivery strategies (Canary, Blue/Green) and can act as a drop-in replacement for Deployments.
  • Define canary.steps to control traffic weight and pauses; with a traffic provider the routing is precise, otherwise Rollouts approximates using pod counts.
  • Promote canaries via CLI (kubectl argo rollouts promote) or the dashboard. You can also roll back to a stable revision.
  • Use workloadRef to adopt existing Deployments without recreating them.
Practice progressive delivery with hands-on exercises to internalize the workflow: create Rollouts, iterate on canary steps, promote revisions, and adopt existing Deployments using workloadRef.

Watch Video

Practice Lab