灰度发布

最近更新时间: 2024-09-05 15:09:00

操作场景

创建好泳道后,我们需要配置灰度发布规则。延续泳道配置中的场景:假设当前访问链路为 gateway -> consumer -> provider。其中 consumer、provider 都有两个版本。希望通过请求参数 test = 1 时配置流量通过网关访问到 consumer、provider 的版本1中。

当前,gateway 以及 consumer、provider 的版本1 已经放在了网关中,我们需要配置一条规则,当请求参数 test = 1时,流量到这个泳道中。

前提条件

已 [创建服务泳道]。

操作步骤

新建灰度规则

  1. 登录 【TSF 控制台】,在左侧导航栏单击【全链路灰度发布】。

  2. 在灰度发布页面,单击【新建灰度规则】。

  3. 填写规则名称和备注,单击【下一步】。

  • 泳道名称:必填。支持中英文字符,不超过60字符。

  • 备注:选填。不超过200字符。

  1. 填写请求参数规则和规则生效关系,单击【下一步】。
  • 标签名:是 TSF 中的自定义标签,自定义标签是用户自定义的业务参数转换的 TSF 中使用的标签。 参数名最多32字节,参数值最多128字符。此处,我们配置标签名为 test,设置标签值为1。 自定义标签的来源有两种:

  • 方式一:通过微服务网关将请求的参数转换为标签:如请求的 path、query、header 中包含的业务参数,通过微服务网关的 tag 插件转换为标签。详细使用说明可以参考 【微服务网关 Tag 插件】。

  • 方式二:以在代码中配置标签,详细使用说明可以参考 【参数传递】。

  • 逻辑关系:支持等于、不等于、包含、不包含、正则表达式五种逻辑关系。

  • 选择等于和不等于时,标签值只能填写为单个值。

  • 选择包含和不包含时,标签值可以填写多个,使用英文半角逗号分隔。

  • 规则生效关系:上述条件的生效逻辑关系,或(满足任一规则)、与(满足全部规则)。每条全链路灰度规则最多包含10条子规则。

  1. 配置流量目的地。选择已经创建好的泳道,单击【完成】。 针对上文中配置的 consumer、provider 的例子,需要配置规则 test = 1,指向已经创建好的泳道。

切换灰度规则生效状态

  1. 登录 【TSF 控制台】,在左侧导航栏单击【全链路灰度发布】。

  2. 在灰度发布页面,通过生效状态按钮调整规则是否生效。同时可以生效多条规则。

调整灰度规则优先级

全链路灰度发布支持同时生效多条规则,并支持为规则配置优先级。当同一条请求同时满足多条规则时,会优先匹配高优先级的规则。

  1. 登录 【TSF 控制台】,在左侧导航栏单击【全链路灰度发布】。

  2. 在灰度发布页面,单击【调整规则优先级】。

  3. 拖动规则名左侧的拖拽图标,进行优先级配置,并单击【保存】。 实际生效的优先级是生效状态的规则从页面上方向下的顺序进行排列的。

全链路灰度结果展示

在 TSF 控制台的【依赖分析】>【调用链查询】中,用户可以查询对应的请求是否按照预期走到了泳道中。

  1. 登录 【TSF 控制台】,在左侧导航栏单击【依赖分析】>【调用链查询】。

  2. 在调用链查询页面,选择时间、调用的命名空间和微服务,或通过其他条件筛选需要查询的调用链。 如果需要对标签和标签值进行过滤,可以单击【展开高级查询条件】,输入标签和标签值,进行过滤。如图所示:

  3. 单击非泳道入口的微服务的调用链详情或者蓝色的耗时条,可以查看调用链详情。

全链路灰度流量流向规则与说明

  • 当请求流量没有命中任何灰度规则,流量将走到没有被添加到泳道的部署组中。

  • 当某一个微服务下的部署组没有被加入任何泳道中,请求将在该微服务下所有部署组的所有实例中轮询。经过该微服务后,请求将继续按照规则配置流入对应泳道。 举例:A -> B -> C 微服务调用,A 和 C 微服务下有版本1和版本2,B只有一个版本。配置灰度规则test = 1 的流量进入版本2对应的泳道后,流量将从 A 的版本2进入,经过 B 微服务,流入到 C 微服务的版本2中。

  • 一个部署组可以属于多个泳道。

  • 在泳道中,服务路由规则不生效。

  • 泳道是一个隔离环境。当泳道上所有规则关闭后,流量不会进入泳道中。如希望恢复建立泳道前的流量分配方式,请将泳道删除。