灰度发布

最近更新时间:2023-08-29 14:12:33

我的收藏

操作场景

灰度发布是软件上线过程中常见的上线方式,是指在发布过程中,将具有一定特征或者比例的流量分配到需要被验证的版本中,用来观察新的验证版本的线上运行状态。相比全量上线,灰度发布是更加谨慎的发布形式。当线上调用链路较为复杂时,全链路灰度发布可以将线上的各个服务隔离出一个单独的运行环境。
使用云原生 API 网关的灰度策略能力,可以在不修改任何业务代码的情况下,可视化配置灰度规则,实现云上轻松易用的全链路灰度发布。本文介绍如何在 Kong 云原生 API 网关控制台上配置灰度发布策略,包括以下两种场景:
配置参数路由,以实现根据请求特征(header、query、cookie、path、method 等)进行请求转发。
配置百分比路由,以实现根据比例转发到不同的服务。

前置条件

已购买云原生 API 网关 Kong 网关实例,详情请参见 操作文档
配置了后端服务(Service)以及路由(Route),详情参见 服务与路由

操作步骤

步骤1. 更新路由插件

在配置灰度发布策略前,确保您的 tse-route(路由转发)插件已升级到最新版本。
1. 登录 TSE控制台
2. 在左侧导航栏单击云原生 API 网关 > 插件管理,在页面上方选择好网关实例。
3. 点击系统插件页签,查看插件是否已更新到最新版本,若未更新,单击操作列的安装最新版本即可。



步骤2. (可选)创建全局配置

说明:
当灰度策略中的逻辑关系选择了包含或者不包含,参数值可选择全局配置,此时需要提前创建好全局配置。
1. 在左侧导航栏选择路由管理 > 全局配置页签,单击新建


2. 在新建配置页面,输入配置名称和配置内容,配置内容可以选择直接导入文件



3. 单击提交,完成创建。

步骤3. 配置灰度策略

1. 在左侧导航栏选择路由管理 > 服务页签,单击服务名称,进入服务详情页面。


2. 在页面上方选择灰度策略页签,单击新建规则,配置规则信息。


是否启用:启动后,创建好的灰度策略将生效。
条件:路由规则内的多个条件为逻辑与(AND)关系,即一个路由规则内条件都满足了,才会转发到对应的后端服务。
参数
说明
参数类型
选择参数类型,支持的参数类型说明如下:
支持特定位置的请求参数,目前只支持 Header、Path、Body、Query、Cookie 参数。
注意:
Body参数为请求json中的参数,仅支持content-type为application/json类型。
Body参数仅对JSON第一层进行解析,当存在同名键,会选择后一个参数值。
支持请求方法(method)匹配,满足数组中的一个方法即可。
支持以下常量类型:
STRING: 字符串类型,支持单引号或双引号,如: "Hello"、'hello'。
NUMBER: 数字类型,如: 0.1, 100.0, 1。
支持以下系统参数:
domain:请求的域名。
clientIp:客户端 IP。
httpScheme:请求的协议 HTTP,HTTPS,WS,WSS。
clientUa:客户端上传的 UserAgent 字段。
参数名
输入参数名称。
逻辑关系
选择逻辑关系:
支持存在与正则表达式
支持<,<=, >, >=, ==, != 运算符。
支持包含和不包含。
不支持双目运算。
不支持数学运算。
参数值
输入参数值。当逻辑关系选择了包含或者不包含,参数值可选择手动输入或者全局配置,若无全局配置可参考全局配置文档创建配置。
目标服务:路由规则内条件都满足后,路由转发到的目标后端服务。支持一个或多个后端服务,所有后端服务权重总和必须为100%。
优先级:支持0-100,数值越大优先级越高,各规则优先级不允许重复。支持配置多条规则,网关将按优先级进行规则匹配,匹配到了即转发到对应的目的后端。
3. 单击确定,完成规则创建。




步骤4. 验证策略是否生效

请求服务,网关将根据请求参数动态路由到对应的目的后端。