Guide showing how to perform gradual canary releases with Argo Rollouts, including examples, commands, manifests, traffic weighting, pauses, promotion, and verification steps.
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.
Note: a Rollout is not a Deployment. You will see ReplicaSets and Pods, but not a Deployment object when using kind: Rollout.
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:
Copy
while true; do echo -n "$(date '+%H:%M:%S') - "; response=$(curl -s --max-time 1 http://localhost:30797/app 2>/dev/null) if [ -z "$response" ]; then echo "ERROR: Service unreachable" else echo "$response" fi sleep 1done
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:
Copy
# Promote the named rollout to the next step (include -n <namespace> if not default)kubectl argo rollouts promote app-rollout -n canary# Promote repeatedly until the rollout reaches 100% or update the image to finish 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.
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.