Istio provides fine-grained traffic management for Kubernetes canary releases, letting teams route requests by percentage, headers, or mirrored copies. section 8.3.4
Use Istio with Argo Rollouts to:
- Route a precise percentage of traffic to a canary instead of approximating weights through pod counts. section 8.3.4
- Target canaries with specific request headers for feature testing. section 8.3.4
- Mirror production requests to a canary while ignoring its responses, reducing risk during validation. section 8.3.4
Mirror traffic during a canary rollout
Configure an Argo Rollout with stable and canary services, an Istio Virtual Service, a 25% canary scale, and a 35% mirror route for GET requests. Pause for ten minutes, then remove the mirror route. section 8.3.4
Listing 8.29 Using Istio for advanced (weight-based) traffic split
apiVersion: argoproj.io/v1alpha1
kind: Rollout
spec:
...
strategy:
canary:
canaryService: notifications-service-canary
stableService: notifications-service-stable
trafficRouting:
managedRoutes:
- name: mirror-route
istio:
virtualService:
name: notifications-service-vsvc
steps:
- setCanaryScale:
weight: 25
- setMirrorRoute:
name: mirror-route
percentage: 35
match:
- method:
exact: GET
path:
prefix: /
- pause:
duration: 10m
- setMirrorRoute:
name: "mirror-route" # removes mirror based traffic route
Inspect the Rollout manifest that configures Istio traffic routing, request matching, mirroring, pausing, and route removal. section 8.3.4


