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