nginx-ingress snippet中判断金丝雀环境可用的属性是什么
校验条件填写方案
你可以根据实际的金丝雀分流配置选择对应判断条件:
通用全场景适配(支持权重、Cookie、Header等任意金丝雀分流规则)
nginx-ingress-controller 会为所有命中金丝雀规则、被路由到绿服务的请求自动注入内置变量$canary,命中时值为1,未命中时值为0,直接按以下方式填写即可:
if ($canary = 1) { # 金丝雀(绿)服务对应配置 } else { # 生产(蓝)服务对应配置 }
提示:你原示例中的
canary缺少变量前缀$,nginx 变量必须加$才能正常识别。
仅适配当前Cookie分流场景
你当前的绿Ingress配置了nginx.ingress.kubernetes.io/canary-by-cookie: "green",符合金丝雀规则的请求会携带值为always的green cookie,也可以直接判断cookie值:
if ($cookie_green = "always") { # 金丝雀(绿)服务对应配置 } else { # 生产(蓝)服务对应配置 }
注意:如果后续你给绿Ingress新增了
nginx.ingress.kubernetes.io/canary-weight按比例分流规则,部分无Cookie的请求也会被路由到金丝雀,这个场景下只有第一种$canary变量的判断方式是准确的。
内容的提问来源于stack exchange,提问作者Manolo Carrasco Moñino
相关产品推荐
相关产品推荐

