跳转到主要内容

nginx实现灰度发布

一、名词解释

灰度发布:又名金丝雀发布、黑白发布。18世纪时,由于科技落后,没有好的通风条件和瓦斯检测工具,经常出现瓦斯中毒现象,因此,旷工们在下井时,会携带一只金丝雀,因为金丝雀在状态好的时候,非常喜欢叫唤,通过观察金丝雀的状态,确定矿井的毒气状态。

软件新版本发布后,我们先开放给一部分用户先体验和测试,等系统稳定运行一段时间足够稳定了再逐渐全量上线新版本,最后平滑下线旧版本。

  • 基于用户体系的灰度发布,针对一些特定的人群,为其写入特定的header或者cookie。

  • 根据流量规则,随机抽取部分人群参与灰度测试

二、该选那个呢

建议优选cookie,理由如下

  • 可以控制
  • 基于header可能更便于c/s端,因为b/s无法直接设置header

三、基于nginx-ingress的灰度发布

  • 先创建2个nginx服务

    • 服务1

    • 服务2


创建2个ingress

不出意外的话,第二个会创建不成功,加入nginx-ingress注释

# 启用灰度发布
nginx.ingress.kubernetes.io/canary: "true"

# 启用基于header的灰度规则,并指定hearder包含version字段
nginx.ingress.kubernetes.io/canary-by-header: "version"

# 指定基于hearder规则时,需要包含的值
nginx.ingress.kubernetes.io/canary-by-header-value: "true"