Nginx Ingress实现灰度发布和蓝绿发布 本节介绍了云容器引擎的最佳实践:Nginx Ingress实现灰度发布和蓝绿发布。 Nginx Ingress可以通过业务流量切分的方式,实现应用的灰度/蓝绿发布。Nginx Ingress支持三种流量切分策略,分别是基于Header、基于Cookie和基于服务权重。这三种策略可以归纳为两种场景: 将匹配的业务流量切分到新版本 将指定比例的流量切分到新版本 接下来本文将按照Nginx Ingress配置说明 、前提条件、应用场景和操作步骤的顺序进行介绍。 Nginx Ingress配置说明 为实现灰度/蓝绿发布,应用前提: 配置两个Ingress资源:一个为常规Ingress,一个为Canary Ingress。这两个Ingress通过域名(host)和路径(path)关联。Canary Ingress需带有注解nginx.ingress.kubernetes.io/canary: "true"。 通过注解为Canary Ingress配置流量切分策略,将流量路由到Canary Ingress定义的Service上,即可实现灰度发布、蓝绿发布、A/B测试等各种业务场景。 Nginx Ingress支持的流量切分策略注解如下: nginx.ingress.kubernetes.io/canarybyheader 基于Header切分流量,用于灰度发布。如果请求头中包含指定的header key,且值为“always”,则将请求切分到Canary Ingress定义的Service上。如果值为“never”,则将请求转发到常规Ingress定义的Service上。如果为其他值,则忽略该注解规则,并通过优先级将请求流量分配到其他规则。 nginx.ingress.kubernetes.io/canarybyheadervalue 与 canarybyheader 一起使用,可自定义header value。如果请求头命中自定义值,则将请求切分到Canary Ingress定义的Service上。如果为其他值,则忽略该注解规则,并通过优先级将请求流量分配到其他规则。 nginx.ingress.kubernetes.io/canarybyheaderpattern 与 canarybyheadervalue 工作方式类似,支持通过正则表达式匹配header value。请注意,当设置了 canarybyheadervalue 时,此注解规则将被忽略。 nginx.ingress.kubernetes.io/canarybycookie 基于Cookie切分流量,用于灰度发布,与canarybyheader相似。Cookie value仅支持“always”和“never”。 nginx.ingress.kubernetes.io/canaryweight 基于服务权重切分流量,用于灰度发布或蓝绿发布。权重取值范围为[0100],表示Canary Ingress所切分到的流量百分比。 以上策略的优先级顺序为: canarybyheader > canarybycookie > canaryweight 。更多内容请参阅官方文档Annotations。