nginx实现灰度发布
一、名词解释
灰度发布:又名金丝雀发布、黑白发布。18世纪时,由于科技落后,没有好的通风条件和瓦斯检测工具,经常出现瓦斯中毒现象,因此,旷工们在下井时,会携带一只金丝雀,因为金丝雀在状态好的时候,非常喜欢叫唤,通过观察金丝雀的状态,确定矿井的毒气状态。
软件新版本发布后,我们先开放给一部分用户先体验和测试,等系统稳定运行一段时间足够稳定了再逐渐全量上线新版本,最后平滑下线旧版本。
- 基于用户体系的灰度发布,针对一些特定的人群,为其写入特定的header或者cookie。
- 根据流量规则,随机抽取部分人群参与灰度测试
二、该选那个呢
- 可以控制
- 基于header可能更便于c/s端,因为b/s无法直接设置header
三、基于nginx-ingress的灰度发布
创建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"