istio 的流量切换功能(类似于灰度发布)
istio 好像没有金丝雀以及国内常说的灰度发布概念,它的 Traffic Shifting 可以实现同样的效果,实现思路是在 VirtualService 中配置多个 destination,通过设置每个 destination 的权重,影响流量的分配。
下面操作在 Bookinfo Application 的基础上进行。
HTTP 请求的切换
编辑名为 reviews 的 VirtualService,为默认的 route 设置两个 destination,权重都是 50%:
$ kubectl edit vs reviews
....省略...
- route:
- destination:
host: reviews
subset: v1
weight: 50
- destination:
host: reviews
subset: v3
weight: 50
然后重复刷新页面,会发现页面的 reviews 部分在两个版本之间切换。
TCP 请求的切分
TCP 请求可以按照 destination 的权重分配,设置方法类似,见 TCP Traffic Shifting。