[英]How to implement Canary deployment in kubernetes with different versions specified in deployment
我有兩個部署文件1. deployment-1.yaml apiVersion: apps/v1 kind: Deployment metadata: name: process labels: app: process spec: replicas: 3 selector: matchLabels: app: process template: metadata: labels: app: process version: v1 spec: containers: - name: pull image: parma/k8s-php:red ports: - containerPort: 80
2. deployment-2.yaml apiVersion: apps/v1 kind: Deployment metadata: name: process labels: app: process spec: replicas: 3 selector: matchLabels: app: process template: metadata: labels: app: process version: v2 spec: containers: - name: pull image: parma/k8s-php:green ports: - containerPort: 80
由於我在spec.template.metadata中指定了兩個不同的版本,因此它不會同時為兩個副本集運行6個pod,它僅啟用並運行最新的副本集。
有什么方法可以通過將副本集保持在單個部署中並同時使用v1中的3個pod和v2中的3個pod來實現金絲雀部署
因此,從技術上講,這將是兩個完全獨立的部署。 使它們成為“基准”和“金絲雀”的原因是您如何向它們發送流量。 如果您在服務中指定了公共選擇器(僅{app:process}),則兩個部署都將看到少量流量。
您要實現的名稱是Canary Deployment。 它是A / B測試的一項重要功能,可幫助進行持續的交付和生產測試,而不必在負載平衡器和網關中部署相同的秘密。 市場上有針對此選項(Spring Zuul或Istio Envoy),可以提供一種解決方案,以將內容從一個部署篩選到一定比例,將另一個部署篩選到其他比例...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.