K8s 1.18.6版本基于 ingress-nginx 实现金丝雀发布(灰度发布)
环境
软件 版本
kubernetes v1.18.6
nginx-ingress-controller 0.32.0
Rancher v2.4.5
本次实验基于 Rancher-v2.4.5 部署了1.18.6版本的k8s集群,nginx-ingress 版本为0.32.0,理论上 ingress-nginx >= 0.21.0都是可以的。
介绍
金丝雀发布:又叫灰度发布,控制产品从A版本平滑的过度到B版本
ingress-nginx:k8s ingress工具,支持金丝雀发布,可以实现基于权重、请求头、请求头的值、cookie转发流量。
rancher:k8s集群管理工具,使用UI简化k8s相关操作
ingress-nginx canary官方说明:https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md#canary
首先创建两个nginx应用
部署两个deployment的http应用
apiVersion: apps/v1
kind: Deployment
metadata:
name: appv1
labels:
app: v1
spec:
replicas: 1
selector:
matchLabels:
app: v1
template:
metadata:
labels:
app: v1
spec:
containers:
- name: nginx
image: zerchin/canary:v1
ports:
- containerPort: 80
apiVersion: apps/v1
kind: Deployment
metadata:
name: appv2
lab