canary-header
插件实现了按照指定比例为请求添加指定header的功能。请求添加header后会重新匹配路由,配合此插件,可实现基于比例的灰度路由,而无需客户端主动携带灰度header。
配置字段
名称 | 数据类型 | 填写要求 | 默认值 | 描述 |
| array of object | 必填 | - | 配置要添加的header以及其对应的权重。 |
weighted_headers中每一项的配置字段说明如下:
名称 | 数据类型 | 填写要求 | 默认值 | 描述 |
| string | 必填 | - | 要添加的header key。 |
| string | 必填 | - | 要添加的header value。 |
| 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