应用服务网格

泳道组&泳道管理

2025-08-14 01:59:04

创建泳道组

从服务网格控制台选择 流量管理中心 -> 全链路灰度 -> 创建泳道组,如下图

选项说明如下:

选项

说明

泳道组名称

字母+数字,最大长度32

traceid头部

字母+数字+下划线+横线,以字母开头,最大长度32,可选值如x-b3-traceid(根据业务接入的链路追踪实现选择)

入口网关集群

用于实现全链路灰度的入口网关所在的集群

入口网关命名空间

入口网关所在的命名空间

入口网关服务

入口网关服务名

泳道服务集群

要添加到泳道组内的服务所在的集群

泳道服务命名空间

要添加到泳道组内服务所在的命名空间

可选服务列表

要添加到泳道组内的服务列表

已选服务列表

已经选择的泳道组服务列表

是否关联网关

泳道组服务是否关联网关(只有入口服务需要关联网关)

 

 

创建泳道

创建完泳道组,点击泳道名称进入泳道详情页,如下图展示了泳道组基本信息

选择 创建泳道 按钮 创建新的泳道:

选项说明如下:

选项

说明

泳道名称

对应泳道内的服务版本(取值需要和pod的csm-traffic-tag标签一致),字母+数字,最大长度32

泳道服务

该泳道内包含的服务,可以是泳道组内服务的子集,不能是空

删除泳道

在泳道组详情页面,点击泳道列表右边的删除操作即可

删除泳道组

进入流量管理中心,选择全链路灰度菜单,进入泳道组列表页,选择右侧的删除操作即可

泳道&泳道组相关资源说明

在创建泳道组后,后台会创建一些资源(占位符说明ns:命名空间,group:泳道组名称,svc:服务名称,swimlane:泳道名称):

资源

命名空间

命名

说明

网关流量标签

网关所在的命名空间

trafficlabel-$ns-$svc-$group

ingress网关处实现流量打标逻辑

sidecar流量标签

服务所在的命名空间

trafficlabel-$ns-$svc-$group

sidecar处实现流量打标和流量标签透传

流量标签名称

-

csm-traffic-label-$group


网关VirtualService

网关所在的命名空间

ingress-swim-group-vs-$svc-$ns

在网关处实现流量路由

sidecar VirtualService

服务所在的命名空间

sidecar-swim-group-vs-$svc-$ns

sidecar实现流量路由

服务DestinationRule

服务所在的命名空间

sidecar-swim-group-dr-$ns-$svc

服务版本分组定义

DestinationRule subset

服务所在的命名空间

$swimlane

服务分组

ingress默认路由

网关所在的命名空间

csm-tl-ingress-http-route-$group-$svc

ingress兜底路由

sidecar默认路由

服务所在的命名空间

csm-tl-sidecar-http-route-$group-$svc

sidecar兜底路由

ingress版本路由

网关所在的命名空间

csm-tl-ingress-http-route-$group-$svc-$swimlane

ingress内对后端服务多版本的路由规则

sidecar版本路由

服务所在的命名空间

csm-tl-sidecar-http-route-$group-$svc-$swimlane

sidecar内对后端服务多版本的路由规则

 

 

资源复用说明

(1)针对网格内的服务,预期每个服务在其所在的命名空间有一个sidecar VirtualService资源,如果已经您已经在服务所在的命名空间创建了一个VirtualService,gateways为空或者包含mesh,全链路灰度将尝试复用您创建的VirtualService资源

(2)如果您已经在服务所在的命名空间创建了DestinationRule资源,这里将尝试复用,需要保证subset不冲突

(3)如果您在网关所在的命名空间创建了相关服务的VirtualService资源,且gateways包含目标Gateway,这里将尝试复用

 

其他注意事项

(1)全链路灰度创建的DestinationRule资源默认使用csm-traffic-tag标签进行服务分组

(2)全链路灰度创建的流量标签规则默认使用x-csm-traffic-tag头部对请求进行路由控制,比如请求带上了x-csm-traffic-tag: test头部,预期会访问微服务内带了csm-traffic-tag标签值为test的版本

(3)Service需要带上withServiceMesh: true标签


.3wEIae4c0cA