I'm looking at using canary deployments in Istio but it seems it randomly distributes requests to new and old versions based on a weighting. This implies a user in the business could see one behaviour one minute and different behaviour the next minute & people within teams could experience different behaviour to each other. For this reason it seems if I want consistent behaviour for a user or team I need to build my own roll-out mechanism where I can control who moves on to the new service version.
Am I correct or am I misunderstanding how Istio canary rollout works?
If you do a basic traffic distribution by weight, you are correct.
Here 10 % of the traffic is routed to
v2
randomly. Any request might call a different version.But you can do more sophisticated routing.
Now there are two routes:
The header in this example could be set in the frontend based on the user, so backend requests for that user will call v2.
Or you could set a cookie for a specific group and route them to a different frontend by using something like:
There are multiple match criteria, including
headers
,queryParams
andauthority
.