一、使用场景
TSF-Polaris(北极星)提供的全链路灰度能力,在不修改业务代码的情况下,可视化配置灰度规则,就可以构建出从网关到后端服务的端到端的全链路流量控制。泳道可以将应用灰度发布的版本隔离成一个独立的运行环境。通过设置泳道规则,可以将满足规则的请求流量路由到目标版本的应用。如下所示,我们划分出一个或多个灰度环境,针对线上灰度版本1的所有服务,我们希望都能配置一定规则。当满足一定规则后,所有请求都会流入灰度环境1中。
二、名词解释
·泳道组:一组泳道、服务、入口网关的集合,通常一个业务系统下的应用放在同一个泳道组中。
·泳道:一组具有相同特性标签的服务实例节点的集合,是灰度发布规则的目的地。
·基线:没有添加至任何泳道的服务节点为基线版本节点。
·实例标签:TSF 北极星提供特定的泳道标签,标签 key 为“lane”,value 值为你自定义的「泳道标签值」。打上该标签的实例会自动添加至目标泳道中。
三、使用限制
| 支持的组件 | | 版本限制 |
| 北极星 | | 产品版本:企业版引擎版本 >= v1.18.0.0 |
| 微服务应用 | 北极星 SDK | 版本 >= v1.15.3 |
| | SpringCloud Tencent | SpringCloud Tencent 2023版本:>= 1.13.1-2023.0.0SpringCloud Tencent Hoxton 版本:>= 1.14.0-Hoxton.SR12-RC2 |
| 网关 | 云原生网关 | 版本无限制 |
| | SpringCloud Gateway | SpringCloud Tencent 2023版本:>= 1.13.1-2023.0.0SpringCloud Tencent Hoxton 版本:>= 1.14.0-Hoxton.SR12-RC2 |
| 消息队列 | Ckafka | 建设中 |
| | TDMQ-RocketMQ | 建设中 |
| | TDMQ-Pulsar | 建设中 |
四、前提条件
·已 创建北极星引擎实例。
·我们为你提供了全链路灰度 Demo ,请参见 Demo。
·全链路灰度能力需要你在客户端接入北极星服务注册发现、服务路由能力。
·SpringCloud Tencent 应用接入,请参见 接入全链路灰度。
·Java Agent 接入请参见 通过 Java Agent 接入北极星。
五、配置流程总览
步骤1:搭建业务系统基线版本
一、部署业务应用基线版本。
二、创建 云原生网关。
三、关联 北极星注册中心,配置 云原生网关服务路由。
步骤2:搭建业务系统灰度环境
一、部署业务应用灰度版本,并打上灰度标签。
二、创建泳道组,配置业务系统的入口网关、业务应用。
三、创建泳道并配置灰度规则,符合泳道规则的请求将被转发至泳道内。
六、一、部署业务应用基线版本
根据你自身的业务,准备好业务部署的资源,通过容器化部署、虚拟机部署选择其中一种方式部署业务系统后端应用的基线版本。
·容器化部署:
·创建 TKE 容器集群,请参见 创建 TKE 集群。
·在所选集群中,创建工作负载,完成业务应用部署,请参见 创建工作负载。
·虚拟机部署:
·创建 CVM 虚拟机,请参见 创建 CVM 虚拟机。
·部署业务应用。
七、二、创建云原生网关
创建云原生网关,参见 创建云原生网关。
八、三、关联北极星注册中心,并配置服务和路由信息
服务来源关联北极星注册中心(PolarisMesh),并配置网关服务和路由信息,参见 使用云原生 API 网关访问北极星服务。
九、步骤2:搭建业务系统灰度环境
如果业务应用要发布新版本,可以通过全链路灰度来同时验证不同应用的灰度版本,以确保发布上线的稳定性。
十、一、部署业务应用灰度版本,并打上灰度标签
根据你自身的业务,准备好业务部署的资源,通过容器化部署、虚拟机部署选择其中一种方式部署业务系统后端应用的灰度版本。
容器化部署虚拟机部署1. 创建 TKE 容器集群,请参见 创建 TKE 集群。2. 在所选集群中,创建工作负载,请参见 创建工作负载。3. 灰度打标:北极星提供灰度泳道标签,标签key为“lane”,value 值为你自定义的版本标签值。你可以在配置工作负载的过程中,设置启动参数或者设置环境变量(二选一)来配置灰度标签:方案一:设置应用启动参数Java -Dspring.cloud.tencent.metadata.content.lane=$(lane_value) -jar demo.jar方案二:设置环境变量 设置环境变量: SCT_METADATA_CONTENT_lane=$(lane_value)说明:$(lane_value)替换为你自定义的版本(泳道)标签,例如:grey、v2等。4. 完成灰度版本部署。1. 创建 CVM 虚拟机,请参见 创建 CVM 虚拟机。2. 灰度打标:北极星提供灰度泳道标签,标签 key 为“lane”,value 值为你自定义的「版本标签值」。你可以在配置工作负载的过程中,设置启动参数或者设置环境变量(二选一)来配置灰度标签:方案一:设置应用启动参数Java -jar -Dspring.cloud.tencent.metadata.content.lane=$(lane_value) demo.jar方案二:设置环境变量 设置环境变量: SCT_METADATA_CONTENT_lane=$(lane_value)说明:$(lane_value)替换为你自定义的版本(泳道)标签,例如:v2。3. 完成灰度版本部署。
十一、二、创建泳道组,配置业务系统的入口网关、业务应用
1. 侧边栏单击全链路灰度 > 新建泳道组,进入新建泳道组的页面。
2. 填写泳道组相关配置,配置入口网关、业务应用。
·泳道组名称:允许数字、英文字母、点、短横线、下划线限制 64 个字符。
·配置泳道入口:支持对接云原生网关、微服务网关 SpringCloud Gateway、普通微服务应用。自动同步你在北极星所配置的泳道规则。
·云原生网关:选择与北极星在相同地域和 VPC 下的网关实例,并选择业务系统入口服务。入口服务支持多选。
·微服务网关 SpringCloud Gateway:选择作为系统入口的 SpringCloud Gateway 网关服务。支持多选。
·微服务应用:选择作为系统入口的 SpringCloud Tencent 服务。支持多选。
·配置泳道组服务:
·一般一个泳道组对应一个业务系统,可将业务系统中全部服务全部导入进来。
·如果服务暂未注册,也支持手动添加。
3. 单击提交按钮,泳道组即被创建,可在泳道组列表中查看。
十二、三、创建泳道并配置灰度规则,符合泳道规则的请求将被转发至泳道内
1. 侧边栏单击全链路灰度,在目标泳道组右上角单击创建泳道 ,进新建泳道的页面。
2. 填写泳道组相关配置,配置入口网关、业务应用。
·创建泳道
·泳道名称:允许数字、英文字母、短横线、下划线,限制 64 个字符。
·描述:填写泳道的描述和用途。
·泳道标签:填写灰度发布服务的泳道标签,北极星自动将符合该标签的服务自动添加至泳道。
·使用示例:如上图,业务系统整体有10个服务,全部添加至泳道组。此次发布其中 2 个服务上线(service-consumer-2023,service-provider-2023),并配置 lane = grey 的标签。则这两个灰度版本实例自动添加至泳道。
·泳道路由规则
·灰度规则:
·通过配置灰度规则,将符合灰度规则的流量染色并转发至目标泳道内。灰度规则将自动同步至泳道入口(云原生网关、SpringCloud Gateway、入口微服务)。
·灰度规则参数支持请求头、请求方法、请求参数、请求 Cookie、请求路径、请求头、主调 IP。
·规则生效关系:支持 等于、不等于、包含、不包含、范围、正则表达式。
·规则匹配策略:支持宽松匹配与严格匹配策略,请根据你业务实际情况选择。
·宽松匹配策略:若在泳道内匹配不到对应标签的节点,则降级路由至基线节点。
·严格匹配策略:若在泳道内匹配不到对应标签的节点,则返回错误,流量固定在指定泳道内。
3. 单击提交,即可完成泳道的创建,在泳道组列表中可以查看泳道列表信息。
4. 单击 云原生网关 > 路由管理 > 服务 > 选择入口服务 > 灰度策略,查看泳道规则已同步至云原生网关。至此已完成全部的规则配置。