操作场景
灰度发布是软件上线过程中常见的上线方式,是指在发布过程中,将具有一定特征或者比例的流量分配到需要被验证的版本中,用来观察新的验证版本的线上运行状态。相比全量上线,灰度发布是更加谨慎的发布形式。当线上调用链路较为复杂时,全链路灰度发布可以将线上的各个服务隔离出一个单独的运行环境。
使用云原生 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. 验证策略是否生效
请求服务,网关将根据请求参数动态路由到对应的目的后端。