1. 程式人生 > >K8s 1.18.6版本基於 ingress-nginx 實現金絲雀釋出(灰度釋出)

K8s 1.18.6版本基於 ingress-nginx 實現金絲雀釋出(灰度釋出)

# 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應用 1. 部署兩個deployment的http應用 ```yaml 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 labels: app: v2 spec: replicas: 1 selector: matchLabels: app: v2 template: metadata: labels: app: v2 spec: containers: - name: nginx image: zerchin/canary:v2 ports: - containerPort: 80 ``` kubectl檢視pod ```powershell # kubectl get pod -o wide |grep app appv1-77655949f8-hx6nm 1/1 Running 0 44m 10.60.0.91 xie-no