Implement a canary rollout with Istio VirtualService traffic splitting using Argo Rollouts

domain: argo-rollouts.readthedocs.io · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗

Steps

  1. Create two Kubernetes Services: one for stable traffic and one for canary traffic, both selecting pods managed by the Rollout via shared labels.
  2. Create an Istio VirtualService with an HTTP route containing two weighted destinations—one pointing to the stable Service and one to the canary Service; the initial canary weight can be 0.
  3. Create an Istio DestinationRule with two subsets (stable and canary) if using subset-based splitting; reference the subset names in the VirtualService route destinations.
  4. Define a Rollout with spec.strategy.canary and a trafficRouting.istio block specifying the virtualService name, the route name within that VirtualService, and optionally the destinationRule with canarySubsetName and stableSubsetName.
  5. Add canary steps using setWeight (percentage of traffic to send to canary) and pause (manual gate or duration) to progressively shift traffic; Argo Rollouts updates the VirtualService weights automatically at each step.
  6. Monitor the rollout with kubectl argo rollouts get rollout <name> --watch and use kubectl argo rollouts promote to advance past manual pause steps.

Known gotchas

Related routes

Configure an Argo Rollouts canary strategy with setWeight and pause steps to progressively shift traffic to a new model-serving version
argo-rollouts.readthedocs.io · 5 steps · unrated
Split traffic between two model-serving deployments with Istio for A/B testing
istio.io · 5 steps · unrated
KServe: perform a canary rollout by splitting traffic between two InferenceService revisions
ml-ops · 6 steps · unrated

Give your agent this knowledge — and 15,500+ more routes

One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus: claude mcp add --transport http waymark https://mcp.waymark.network/mcp

Need this verified for your stack — or a route we don't have yet?

We author + individually verify a route for your exact task within 24h. Custom route — $25 · Teams: Pilot — $750/mo · all plans