Skip to main content
In this guide you’ll learn how to perform a gradual release with Argo Rollouts using the Canary deployment strategy. Canary releases route a small percentage of production traffic to a new application revision, then incrementally increase that percentage while you monitor behaviour and optionally run automated checks. Argo Rollouts supports multiple strategies — Canary, Blue/Green, and Progressive Delivery. This article focuses on Canary, with concise examples, commands, and tips to run a canary rollout locally or in a cluster.

High-level overview: what a Rollout looks like

  • A Rollout is similar to a Kubernetes Deployment manifest but uses the Rollout kind and extra strategy fields.
  • Strategy steps let you incrementally shift traffic (weights) and pause at steps either for a duration or indefinitely for manual promotion.
  • A Rollout will create ReplicaSets and Pods — you will not see a Deployment object for that app.
Useful links:

Canary rollout — simple example

A basic Canary Rollout that controls traffic by weight and pauses between steps:

Blue/Green (excerpt)

For comparison, here is an excerpt showing Blue/Green-related fields supported by Rollouts:

Walkthrough: applying a Canary rollout

  1. Repository layout (example)
  • patterns/canary contains rollout.yml and service.yml.
  1. Example canary Rollout manifest for an application (app-rollout)
  1. Shorter demo pauses (use seconds) If you prefer fast demos, shorten pauses to seconds:
Pause duration examples (note valid formats — include a suffix):
  1. Create namespace, apply manifests, and verify
Run these commands from the patterns/canary directory (where rollout.yml and service.yml are located):
Example outputs (trimmed):
Note: a Rollout is not a Deployment. You will see ReplicaSets and Pods, but not a Deployment object when using kind: Rollout.
  1. Access the application and observe versions
In the example the NodePort is 30797. Poll the /app endpoint to observe which version responds as the canary progresses. Polling script (bash) — polls every second and prints the version returned:
  1. Promote a rollout to the next step
Promote manually either from the Argo Rollouts web UI (click Promote) or from the CLI using the kubectl plugin. Promote examples:
A screenshot of the Argo Rollouts web UI for an "app-rollout" canary deployment, showing a left-hand step timeline with "Set Weight" and "Pause" steps. The center/right panels display the strategy summary (set vs actual weight), container info, and revision details.

What happens during promotion

  • If a canary step sets weight to 20% and you have 10 replicas, Argo Rollouts will direct ~2 replicas (20% of 10) to the new ReplicaSet.
  • Subsequent promotions increase the percentage according to configured weights (40%, 60%, 80%, etc.).
  • Pauses are opportunities to run tests, observe metrics, or require manual approval before advancing.

Observing traffic during the rollout

  • While partially promoted, traffic is split based on weights. Your polling script should show intermittent responses from the new version (e.g., v2) until the rollout reaches 100% and all traffic flows to the new revision.

Rollback and automation

  • Argo Rollouts supports automated analysis and rollbacks via pre/post-promotion analysis templates.
  • Combine Rollouts with GitOps (for example, Argo CD) to let manifests in a Git repo drive the rollout state and history.
  • See the Argo Rollouts docs for configuring analysis templates and automated rollbacks.

Quick reference: common commands

To promote a rollout from the CLI, use: kubectl argo rollouts promote <rollout-name> -n <namespace>. If a step is paused indefinitely (pause: ), you must promote it manually.
Pause durations must include a time unit suffix (for example ”10s”, “1m”, “1h”) or be specified as an empty object (pause: ) to pause indefinitely.
That’s it — a compact walkthrough showing how to incrementally release a new application version using Argo Rollouts’ Canary strategy.

Watch Video

Practice Lab