概述
在流量標簽和全鏈路灰度功能說明中,我們可以看到使用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網關的流量標簽資源。