创建泳道组
从服务网格控制台选择流量管理中心-> 全链路灰度 -> 创建泳道组,如下图。
选项说明如下:
选项 | 说明 |
---|---|
泳道组名称 | 字母+数字,最大长度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内对后端服务多版本的路由规则。 |
资源复用说明
- 针对网格内的服务,预期每个服务在其所在的命名空间有一个sidecar VirtualService资源,如果已经您已经在服务所在的命名空间创建了一个VirtualService,gateways为空或者包含mesh,全链路灰度将尝试复用您创建的VirtualService资源。
- 如果您已经在服务所在的命名空间创建了DestinationRule资源,这里将尝试复用,需要保证subset不冲突。
- 如果您在网关所在的命名空间创建了相关服务的VirtualService资源,且gateways包含目标Gateway,这里将尝试复用。
其他注意事项
- 全链路灰度创建的DestinationRule资源默认使用csm-traffic-tag标签进行服务分组。
- 全链路灰度创建的流量标签规则默认使用x-csm-traffic-tag头部对请求进行路由控制,比如请求带上了x-csm-traffic-tag: test头部,预期会访问微服务内带了csm-traffic-tag标签值为test的版本。
- Service需要带上withServiceMesh: true标签。