概述
在流量标签和全链路灰度功能说明中,我们可以看到使用TrafficLabel实现从Ingress网关到业务的全链路灰度能力。除了Ingress网关之外,天翼云还提供全托管式的云原生网关产品,具备更好的性能、扩展性和高可用能力,这里介绍如何使用我们的云原生网关作为访问入口的场景下实现全链路灰度。
服务架构
云原生网关作为微服务的访问入口,支持把云容器引擎作为服务发现来源。我们在云容器引擎部署base和test两个版本的微服务,通过云原生网关的标签路由能力实现对微服务入口应用app1的路由调度,通过流量标签实现微服务链路中的路由调度。这里我们还是使用app-version-tag头部实现全链路流量控制,下面介绍具体操作步骤(应用部署参考全链路灰度部分,这里不再赘述)。
云原生网关服务来源配置
首先在当前服务网格同VPC下开通一个云原生网关实例,开通完成后,进入云原生网关实例页面,选择服务来源菜单-> 添加服务来源,选择云容器引擎,在下拉列表中选择开通了服务网格并部署了应用的云容器引擎集群,如下图:
添加服务到云原生网关
基于新添加的云容器引擎服务来源,我们添加服务到云原生网关用于路由访问;选择服务管理菜单-> 添加服务 ->云容器引擎服务来源,选择服务部署的命名空间,可以看到我们已经部署的app1、app2、app3应用,这里我们只需要添加入口的app1应用即可。
配置服务标签
在服务列表页可以看到新添加的app1服务,选择管理 进入服务管理页面,最下方可以看到版本管理。云原生网关会获取服务的标签信息,并根据标签配置不同的服务子集(类似服务网格中目标规则中的subset)。我们根据服务的version标签配置base和test两个版本,如下图:
云原生网关配置路由规则
在云原生网关控制台选择路由管理 -> 添加路由,配置app-version-tag头部匹配base时路由到app1的base版本,匹配test时路由到app1的test版本,如下图:
再次访问应用可以看到带上app-version-tag: test头部访问总是请求到app1的test版本,带上app-version-tag:base头部访问总是请求到app1的base版本;但是还是会访问到app2和app3的多版本。
配置流量标签
我们需要再部署针对应用的TraficLabel以及虚拟服务和目标规则资源,此部分参考全链路灰度部分,这里不需要部署针对Ingress网关的流量标签资源。