canary-header插件

canary-header插件实现了按照指定比例为请求添加指定header的功能。请求添加header后会重新匹配路由,配合此插件,可实现基于比例的灰度路由,而无需客户端主动携带灰度header。

配置字段

名称

数据类型

填写要求

默认值

描述

weighted_headers

array of object

必填

-

配置要添加的header以及其对应的权重。

weighted_headers中每一项的配置字段说明如下:

名称

数据类型

填写要求

默认值

描述

added_key

string

必填

-

要添加的header key。

added_value

string

必填

-

要添加的header value。

weight

number

必填

-

要添加的header所对应的权重,单位为百分比,所有header的权重之和不能大于100。

说明

若路由权重之和不大于100,则不足100的部分代表不会添加任何header的概率。

配置示例

全局配置

按照如下配置,所有请求中30%的请求会被添加x-higress-canary:gray的header,70%的请求会被添加x-higress-canary:base的header。

weighted_headers: 
- added_key: x-higress-canary
  added_value: gray
  weight: 30
- added_key: x-higress-canary
  added_value: base
  weight: 70

按照如下配置,所有请求中30%的请求会被添加x-higress-canary:gray的header,70%的请求不会添加任何header。

weighted_headers: 
- added_key: x-higress-canary
  added_value: gray
  weight: 30

对特定路由或域名开启

按照如下配置,对于匹配到route-a路由的请求,将会有30%的概率被添加x-higress-canary:gray的header,70%的概率被添加x-higress-canary:base的header。添加header后,请求将会重新匹配路由。例如,此时有一个路由route-a-gray,该路由的匹配规则中有一项按header匹配的规则,该规则匹配了x-higress-canary:gray。这样将会有30%的请求将会匹配到route-a-gray,从而实现了按比例灰度的功能。

# 使用 _rules_ 字段进行细粒度规则配置
_rules_:
# 规则一:按路由名称匹配生效
- _match_route_:
  - route-a
  weighted_headers: 
  - added_key: x-higress-canary
    added_value: gray
    weight: 30
  - added_key: x-higress-canary
    added_value: base
    weight: 70
# 规则二:按域名匹配生效
- _match_domain_:
  - "*.example.com"
  weighted_headers:
  - added_key: x-custom-header
    added_value: gray
    weight: 30
  - added_key: x-custom-header
    added_value: blue
    weight: 30
  - added_key: x-custom-header
    added_value: base
    weight: 40