1、设置所有流量路由到v1版本
istioctl create -f samples/bookinfo/networking/virtual-service-all-v1.yaml
2、浏览器打开,刷新多次,都显示v1版本
3、将50%的流量转到v3
istioctl replace -f samples/bookinfo/networking/virtual-service-reviews-50-v3.yaml
Updated config virtual-service/default/reviews to revision 11457
4、确认规则已替换
istioctl get virtualservice reviews -o yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
creationTimestamp: null
name: reviews
namespace: default
resourceVersion: "11457"
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v1
weight: 50
- destination:
host: reviews
subset: v3
weight: 50
---
5、刷新页面,大约有50%的几率v3版本
6、v3版本微服务已经稳定,可直接切换到v3版本
istioctl replace -f samples/bookinfo/networking/virtual-service-reviews-v3.yaml
Updated config virtual-service/default/reviews to revision 11655
在这项任务中,我们使用Istio的加权路由功能将流量从旧版本的 reviews
服务迁移到新版本。请注意,这和使用容器编排平台的部署功能来进行版本迁移完全不同,后者使用了实例扩容来对流量进行管理。
使用Istio,两个版本的 reviews
服务可以独立地进行扩容和缩容,并不会影响这两个版本服务之间的流量分发。