Kubernetes-灰度发布
作者:互联网
1、基于ingress实现灰度发布
1.1、ingress实现灰度发布方式介绍
- Ingress-Nginx是一个K8S ingress工具,支持配置Ingress Annotations来实现不同场景下的灰度发布和测试。
1.1.1、Nginx Annotations支持以下4种Canary规则
- nginx.ingress.kubernetes.io/canary-by-header:基于Request Header的流量切分,适用于灰度发布以及A/B测试。当Request Header设置为always时,请求将会被一直发送到Canary版本;当Request Header设置为never时,请求不会被发送到Canary入口;对于任何其他Header值,将忽略Header,并通过优先级将请求与其他金丝雀规则进行优先级的比较。
- nginx.ingress.kubernetes.io/canary-by-header-value:要匹配的Request Header的值,用于通知Ingress将请求路由到Canary Ingress中指定的服务。当Request Header设置为此值时,它将被路由到Canary入口。该规则允许用户自定义Request Header的值,必须与上一个annotation(即:canary-by-header)一起使用。
- nginx.ingress.kubernetes.io/canary-weight:基于服务权重的流量切分,适用于蓝绿部署,权重范围0-100按百分比将请求路由到Canary Ingress中指定的服务。权重为0意味着该金丝雀规则不会向Canary入口的服务发送任何请求。权重为100意味着所有请求都将被发送到Canary入口。
- nginx.ingress.kubernetes.io/canary-by-cookie:基于Cookie的流量切分,适用于灰度发布与A/B测试。用于通知Ingress将请求路由到CanaryIngress中指定的服务的cookie。当cookie值设置为always时,它将被路由到Canary入口;当cookie值设置为never时,请求不会被发送到Canary入口;对于任何其他值,将忽略cookie并将请求与其他金丝雀规则进行优先级的比较。
- 金丝雀规则按优先顺序进行如下排序:
- canary-by-header - > canary-by-cookie - > canary-weight
1.1.2、基于权重或用户实现灰度发布
- 可以把上面四种annotation规则划分为两类。
1
# #
标签:ingress,Kubernetes,canary,Header,发布,灰度,Canary,cookie 来源: https://www.cnblogs.com/maiblogs/p/16195128.html