5.3.3 流量转移

生产环境中经常需要将旧版本的流量转移到新版本,在本任务中,您将会把50%的流量发送到reviews:v1,另外50%的流量发送到reviews:v3。然后,再把100%的流量发送到reviews:v3来完成迁移。

1 前置条件

  • 安装好Istio
  • 部署bookinfo示例
  • 应用默认目标规则
kubectl apply -f samples/bookinfo/networking/destination-rule-all-mtls.yaml

2 应用基于权重的路由

2.1 将所有流量路由到v1版本

kubectl apply -f samples/bookinfo/networking/virtual-service-all-v1.yaml

2.2 浏览器测试

打开浏览器访问http://${GATEWAY_URL}/productpage,这时不管刷新多少戏,页面都不会显示评价星级内容。因为istio被配置为将所有流量都路由到reviews:v1版本。

2.3 把50%的流量从reviews:v1转移到reviews:v3

kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-50-v3.yaml
virtualservice.networking.istio.io/reviews configured

应用完需要等待几秒中,等待新的规则下发到envoy代理中。

2.4 确认规则已经生效

kubectl get virtualservice reviews -o yaml

2.5 测试效果

打开浏览器,打开bookinfo应用,反复刷新页面,大约有 50% 的几率会看到页面中出带 红色 星级的评价内容(v3)

2.6 流量100%迁移到v3

经过测试v3版本已经没有问题,这是把流量全部转到v3上来

kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-v3.yaml
virtualservice.networking.istio.io/reviews configured

再次刷新bookinfo页,您将始终看到带有 红色 星级评分的书评。

3 原理

在这项任务中,我们使用Istio的权重路由功能将reviews服务的流量迁移到新版本。请注意,这和使用容器编排平台的部署功能来进行版本迁移完全不同,后者使用了实例扩容来对流量进行管理。

使用Istio,两个版本的reviews服务可以独立地进行扩容和缩容,而不会影响这两个服务版本之间的流量分发。

4 清理

删除应用程序路由规则

kubectl delete -f samples/bookinfo/networking/virtual-service-all-v1.yaml
Copyright © huangzhongde.cn 2021 all right reserved,powered by Gitbook该文件修订时间: 2022-01-28 00:02:24

results matching ""

    No results matching ""