版本流量路由是指将流量按照比例路由到服务的不同版本,适用于灰度发布、金丝雀发布和A/B测试等场景。本文介绍如何使用Istio资源实现版本流量路由。
步骤一:创建网关规则
创建网关规则,并绑定入口网关。
- 登录ASM控制台。
- 在左侧导航栏,选择。
- 在网格管理页面,找到待配置的实例,单击实例的名称或在操作列中单击管理。
- 在网格详情页面左侧导航栏选择,然后在右侧页面单击创建。
- 在创建页面设置命名空间为default,网关规则的名称为bookinfo-gateway,单击作用网关实例,单击添加网关实例选择标签,设置标签名为istio,标签值为ingressgateway。
- 单击对外提供服务,单击添加服务,设置名称为http,端口为80,协议为HTTP,服务为*。
- 单击预览,查看网关规则对应的YAML文件,确认无误后,单击创建。
步骤二:创建虚拟服务
创建虚拟服务,使得可以通过/productpage、/static、/login、/logout、/api/v1/products路径访问Bookinfo应用。
- 登录ASM控制台。
- 在左侧导航栏,选择。
- 在网格管理页面,找到待配置的实例,单击实例的名称或在操作列中单击管理。
- 在网格详情页面左侧导航栏选择,然后在右侧页面单击创建。
- 在创建页面设置命名空间为default,自定义虚拟服务的名称,单击作用于网关规则(请添加),输入bookinfo-gateway,设置所属服务为*。
- 单击HTTP路由,单击添加路由,自定义路由名称,单击添加Request匹配规则,打开匹配URI开关,设置匹配方式为精确,匹配内容为/productpage。
- 重复单击添加Request匹配规则,打开匹配URI开关,然后分别设置匹配方式为前缀,匹配内容为/static,设置匹配方式为精确,匹配内容为/login,设置匹配方式为精确,匹配内容为/logout,设置匹配方式为前缀,匹配内容为/api/v1/products。
- 单击添加路由目的地,设置服务名称为productpage,端口为9080。
- 单击预览,查看虚拟服务对应的YAML文件,确认无误后,单击创建。
步骤三:访问Bookinfo应用
- 获取入口网关地址。
- 登录容器服务管理控制台。
- 在控制台左侧导航栏中,单击集群。
- 在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。
- 在集群管理页左侧导航栏中,选择。
- 在服务页面顶部设置命名空间为istio-system,查看istio-ingressgateway右侧外部端点列下80端口的IP地址。
- 访问Bookinfo应用。
在浏览器地址栏输入
http://{入口网关服务的IP地址}/productpage,持续10次刷新页面。
由于Bookinfo应用会轮流访问reviews服务的v1、v2、v3版本,可以看到3次页面无星星,3次页面显示黑星星,4次页面显示红色星星。
步骤四:创建版本路由规则
- 创建目标规则。
创建目标规则,按版本给reviews服务进行分组,分为v1、v2、v3子集。
- 登录ASM控制台。
- 在左侧导航栏,选择。
- 在网格管理页面,找到待配置的实例,单击实例的名称或在操作列中单击管理。
- 在网格详情页面左侧导航栏选择,然后在右侧页面单击创建。
- 在创建页面设置命名空间为default,自定义目标规则名称,设置服务名称为reviews。
- 单击版本,单击添加版本,设置版本名称为v1,单击添加标签,设置标签名为version,标签值为v1。
- 单击添加版本,设置版本名称为v2,单击添加标签,设置标签名为version,标签值为v2。
- 单击添加版本,设置版本名称为v3,单击添加标签,设置标签名为version,标签值为v3。
- 单击预览,查看目标规则对应的YAML文件,确认无误后,单击创建。
- 创建虚拟服务。
创建虚拟服务,将10%流量路由到reviews服务的v1版本,40%流量路由到reviews服务的v2版本,50%流量路由到reviews服务的v3版本。
- 登录ASM控制台。
- 在左侧导航栏,选择。
- 在网格管理页面,找到待配置的实例,单击实例的名称或在操作列中单击管理。
- 在网格详情页面左侧导航栏选择,然后在右侧页面单击创建。
- 在创建页面设置命名空间为default,自定义虚拟服务的名称,设置所属服务为reviews。
- 单击HTTP路由,单击添加路由,自定义路由名称,单击添加路由目的地,设置服务名称为reviews,版本为v1,权重为10。
- 单击添加路由目的地,设置服务名称为reviews,版本为v2,权重为40。
- 单击添加路由目的地,设置服务名称为reviews,版本为v3,权重为50。
- 单击预览,查看虚拟服务对应的YAML文件,确认无误后,单击创建。
步骤五:验证版本流量路由是否成功
在浏览器地址栏输入http://{入口网关服务的IP地址}/productpage,持续10次刷新页面。
可以看到Bookinfo应用的页面1次显示无星星,4次显示黑星星,5次显示红色星星。说明10%流量路由到reviews服务的v1版本,40%流量路由到reviews服务的v2版本,50%流量路由到reviews服务的v3版本。符合预期,版本流量路由成功。