Ingress进行灰度发布

现在一些业务在有新版本上线时,通常新版本即使在自己本地测试后,发布到线上环境也可能会出现一些问题,就会回滚到老版本,现在我们新版本的上线都会采取灰度发布,先让一小部分的流量请求到新版本,其余流量请求到老版本,等新版本验证没问题,逐渐让流量都请求到新版本,然后下架老版本。
下面就用ingress来做下灰度发布,首先还是需要部署两个服务,一个代表老版本,一个代表新版本,我这边还是用nginx来测试,两个nginx服务部署如下:
在这里插入图片描述然后用ingress去分别代理这两个服务,我们这里采取权重的策略,来做流量的分发,达到灰度发布的效果:
ingress代理老版本的服务yaml如下:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress-limit
spec:
ingressClassName: nginx
rules:
- host: csh-limit.com
http:
paths:
- path: /index.html
pathType: Prefix
backend:
serviceName: nginx-svc
servicePort: 80

igress代理新版本服务yaml如下:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-cancry-v2
annotations:
nginx.ingress.kubernetes.io/canary: “true”
nginx.ingress.kubernetes.io/canary-weight: “60”
spec:
ingressClassName: nginx
rules:
- host: csh-limit.com
http:
paths:
- path: /index.html
pathType: Prefix
backend:
serviceName: nginx-svc-v2
servicePort: 80

注:nginx.ingress.kubernetes.io/canary: 用来打开ingress进行灰度发布的功能
nginx.ingress.kubernetes.io/canary-weight: 用来设置权重大小,默认100

最后将这两个ingress进行创建,并测试:
Ingress进行灰度发布_第1张图片如图已经有60%的流量请求到新版本。

你可能感兴趣的:(Ingress,kubernetes,nginx,docker)