簡體   English   中英

如何在Kubernetes中以部署中指定的不同版本實施Canary部署

[英]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來實現金絲雀部署

  1. 您不能有多個具有相同名稱的部署。 將它們重命名為process-v1和process-v2。
  2. 您需要為每個選擇器使用不同的選擇器。 第一個應該具有matchLabels:{app:進程,版本:v1},第二個應該具有matchLabels:{app:進程,版本:v2}。

因此,從技術上講,這將是兩個完全獨立的部署。 使它們成為“基准”和“金絲雀”的原因是您如何向它們發送流量。 如果您在服務中指定了公共選擇器(僅{app:process}),則兩個部署都將看到少量流量。

您要實現的名稱是Canary Deployment。 它是A / B測試的一項重要功能,可幫助進行持續的交付和生產測試,而不必在負載平衡器和網關中部署相同的秘密。 市場上有針對此選項(Spring Zuul或Istio Envoy),可以提供一種解決方案,以將內容從一個部署篩選到一定比例,將另一個部署篩選到其他比例...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM