本文作者:丁辉
通过Ingress实现金丝雀发布
通过 Ingress 实现基于权重的金丝雀
部署测试示例 Nginx Deployment v1和v2
部署 v1 版本
1
kubectl apply -f https://gitee.com/offends/Kubernetes/raw/main/File/Yaml/nginx-deployment-v1.yaml
部署 v2 版本
1
kubectl apply -f https://gitee.com/offends/Kubernetes/raw/main/File/Yaml/nginx-deployment-v2.yaml
创建两个 Service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Service
metadata:
name: nginx-deployment-service-1
namespace: default
spec:
selector:
app: nginx
version: v1
ports:
- port: 80
targetPort: 80
apiVersion: v1
kind: Service
metadata:
name: nginx-deployment-service-2
namespace: default
spec:
selector:
app: nginx
version: v2
ports:
- port: 80
targetPort: 80
EOF创建 Ingress 资源
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52cat <<EOF | kubectl apply -f -
# 金丝雀 Ingress 对象为 v1 版本
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress-1
namespace: default
spec:
ingressClassName: nginx # 通过 kubectl get ingressclass 查看
rules:
- host: example.com # 修改为自己的对外域名
http:
paths:
- backend:
service:
name: nginx-deployment-service-1 # Nginx Serice 名称
port:
number: 80 # Nginx 端口
path: /
pathType: Prefix
tls:
- hosts:
- example.com # 替换为你的域名
secretName: example-tls # 替换为你的证书
# 金丝雀 Ingress 对象为 v2 版本
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress-2
namespace: default
annotations:
nginx.ingress.kubernetes.io/canary: "true"
nginx.ingress.kubernetes.io/canary-weight: "10" # 10%流量到金丝雀
spec:
ingressClassName: nginx # 通过 kubectl get ingressclass 查看
rules:
- host: example.com # 修改为自己的对外域名
http:
paths:
- backend:
service:
name: nginx-deployment-service-2 # Nginx Serice 名称
port:
number: 80 # Nginx 端口
path: /
pathType: Prefix
tls:
- hosts:
- example.com # 替换为你的域名
secretName: example-tls # 替换为你的证书
EOF慢慢调整 Nginx-Ingress-2 流量到 100%,即可完成更新
要是这篇文章为您解了惑、带来了帮助,不妨用小小的打赏来支持下我的创作吧,您的鼓励就是我持续分享的最大动力哦,感谢您啦!
- 本文链接: https://blog.offends.cn/Kubernetes/网关/Ingress/通过Ingress实现金丝雀发布.html
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。