# Istio - Weight-based routing
In Canary Deployments, newer versions of services are incrementally rolled out to users to minimize the risk and impact of any bugs introduced by the newer version.
Route a percentage of traffic to one service or another - send %50
of traffic to reviews:v1 and %50 to reviews:v3 and finally complete
the migration by sending %100 of traffic to reviews:v3.
Route all traffic to the reviews:v1 version of each microservice:
kubectl apply -f samples/bookinfo/networking/virtual-service-all-v1.yaml
Transfer 50% of the traffic from reviews:v1 to reviews:v3:
kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-50-v3.yaml
kubectl get virtualservice reviews -o yaml
Output:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
...
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v1
weight: 50
- destination:
host: reviews
subset: v3
weight: 50
Refresh the /productpage in your browser and you now see
red colored star ratings approximately 50% of the time.
Check the flows in Kiali graph, where only reviews:{v1,v2} are used:

Assuming you decide that the reviews:v3 microservice is stable, you can
route 100% of the traffic to reviews:v3 by applying this virtual service.
kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-v3.yaml
kubectl get virtualservice reviews -o yaml
Output:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
...
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v3
When you refresh the /productpage you will always see book reviews
with red colored star ratings for each review.

Kiali graph:
