分享方式:


KubernetesManifest@0 - 部署至 Kubernetes v0 工作

使用組建或發行管線中的 Kubernetes 資訊清單工作,使用 Helm 圖表將資訊清單模擬和部署至 Kubernetes 叢集。

語法

# Deploy to Kubernetes v0
# Use Kubernetes manifest files to deploy to clusters or even bake the manifest files to be used for deployments using Helm charts.
- task: KubernetesManifest@0
  inputs:
    #action: 'deploy' # 'bake' | 'createSecret' | 'delete' | 'deploy' | 'patch' | 'promote' | 'scale' | 'reject'. Action. Default: deploy.
    #kubernetesServiceConnection: # string. Required when action != bake. Kubernetes service connection. 
    #namespace: # string. Namespace. 
    #strategy: 'none' # 'canary' | 'none'. Optional. Use when action = deploy || action = promote || action = reject. Strategy. Default: none.
    #trafficSplitMethod: 'pod' # 'pod' | 'smi'. Optional. Use when strategy = canary. Traffic split method. Default: pod.
    #percentage: '0' # string. Required when strategy = Canary && action = deploy. Percentage. Default: 0.
    #baselineAndCanaryReplicas: '1' # string. Required when strategy = Canary && action = deploy && trafficSplitMethod = SMI. Baseline and canary replicas. Default: 1.
    #manifests: # string. Required when action = deploy || action = promote || action = reject. Manifests. 
    #containers: # string. Optional. Use when action = deploy || action = promote || action = bake. Containers. 
    #imagePullSecrets: # string. Optional. Use when action = deploy || action = promote. ImagePullSecrets. 
    #renderType: 'helm' # 'helm' | 'kompose' | 'kustomize'. Optional. Use when action = bake. Render Engine. Default: helm.
    #dockerComposeFile: # string. Required when action = bake && renderType = kompose. Path to docker compose file. 
    #helmChart: # string. Required when action = bake && renderType = helm. Helm Chart. 
    #releaseName: # string. Optional. Use when action = bake && renderType = helm. Helm Release Name. 
    #overrideFiles: # string. Optional. Use when action = bake && renderType = helm. Override Files. 
    #overrides: # string. Optional. Use when action = bake && renderType = helm. Overrides. 
    #kustomizationPath: # string. Optional. Use when action = bake && renderType = kustomize. Kustomization Path. 
    #resourceToPatch: 'file' # 'file' | 'name'. Required when action = patch. Resource to patch. Default: file.
    #resourceFileToPatch: # string. Required when action = patch && resourceToPatch = file. File path. 
    #kind: # 'deployment' | 'replicaset' | 'statefulset'. Required when action = scale || resourceToPatch = name. Kind. 
    #name: # string. Required when action = scale || resourceToPatch = name. Name. 
    #replicas: # string. Required when action = scale. Replica count. 
    #mergeStrategy: 'strategic' # 'json' | 'merge' | 'strategic'. Required when action = patch. Merge Strategy. Default: strategic.
    #arguments: # string. Optional. Use when action = delete. Arguments. 
    #patch: # string. Required when action = patch. Patch. 
    #secretType: 'dockerRegistry' # 'dockerRegistry' | 'generic'. Required when action = createSecret. Type of secret. Default: dockerRegistry.
    #secretName: # string. Optional. Use when action = createSecret. Secret name. 
    #secretArguments: # string. Optional. Use when action = createSecret && secretType = generic. Arguments. 
    #dockerRegistryEndpoint: # string. Optional. Use when action = createSecret && secretType = dockerRegistry. Docker registry service connection. 
    #rolloutStatusTimeout: '0' # string. Optional. Use when action = deploy || action = patch || action = scale || action = promote. Timeout for rollout status. Default: 0.
# Deploy Kubernetes manifests v0
# Use Kubernetes manifest files to deploy to clusters or even bake the manifest files to be used for deployments using Helm charts.
- task: KubernetesManifest@0
  inputs:
    #action: 'deploy' # 'bake' | 'createSecret' | 'delete' | 'deploy' | 'patch' | 'promote' | 'scale' | 'reject'. Action. Default: deploy.
    #kubernetesServiceConnection: # string. Required when action != bake. Kubernetes service connection. 
    #namespace: 'default' # string. Required when action != bake. Namespace. Default: default.
    #strategy: 'none' # 'canary' | 'none'. Optional. Use when action = deploy || action = promote || action = reject. Strategy. Default: none.
    #percentage: '0' # string. Required when strategy = Canary && action = deploy. Percentage. Default: 0.
    #manifests: # string. Required when action = deploy || action = promote || action = reject. Manifests. 
    #containers: # string. Optional. Use when action = deploy || action = promote. Containers. 
    #imagePullSecrets: # string. Optional. Use when action = deploy || action = promote. ImagePullSecrets. 
    #renderType: 'helm2' # 'helm2'. Optional. Use when action = bake. Render Engine. Default: helm2.
    #helmChart: # string. Required when action = bake && renderType = helm2. Helm Chart. 
    #releaseName: # string. Optional. Use when action = bake && renderType = helm2. Helm Release Name. 
    #overrideFiles: # string. Optional. Use when action = bake && renderType = helm2. Override Files. 
    #overrides: # string. Optional. Use when action = bake && renderType = helm2. Overrides. 
    #resourceToPatch: 'file' # 'file' | 'name'. Required when action = patch. Resource to patch. Default: file.
    #resourceFileToPatch: # string. Required when action = patch && resourceToPatch = file. File path. 
    #kind: # 'deployment' | 'replicaset' | 'statefulset'. Required when action = scale || resourceToPatch = name. Kind. 
    #name: # string. Required when action = scale || resourceToPatch = name. Name. 
    #replicas: # string. Required when action = scale. Replica count. 
    #mergeStrategy: 'strategic' # 'json' | 'merge' | 'strategic'. Required when action = patch. Merge Strategy. Default: strategic.
    #arguments: # string. Optional. Use when action = delete. Arguments. 
    #patch: # string. Required when action = patch. Patch. 
    #secretType: 'dockerRegistry' # 'dockerRegistry' | 'generic'. Required when action = createSecret. Type of secret. Default: dockerRegistry.
    #secretName: # string. Optional. Use when action = createSecret. Secret name. 
    #secretArguments: # string. Optional. Use when action = createSecret && secretType = generic. Arguments. 
    #dockerRegistryEndpoint: # string. Optional. Use when action = createSecret && secretType = dockerRegistry. Docker registry service connection.

輸入

action - 行動
string. 允許的值: bake 、 (建立秘密) 、 delete 、、 deploypatchpromote 、、 scalerejectcreateSecret 預設值:deploy

指定要執行的動作。


kubernetesServiceConnection - Kubernetes 服務連線
string. 當 action != bake 時為必要。

指定 Kubernetes 服務連線


namespace - 命名 空間
string.

使用 –namespace 旗標指定命令的命名空間。 如果未提供命名空間,命令將會在預設命名空間中執行。


namespace - 命名 空間
string. 當 action != bake 時為必要。 預設值:default

使用 –namespace 旗標指定命令的命名空間。 如果未提供命名空間,命令將會在預設命名空間中執行。


strategy - 策略
string. 選擇性。 使用 時 action = deploy || action = promote || action = reject 。 允許值:canarynone。 預設值:none

指定動作或 reject 動作之前 promote 動作中使用的 deploy 部署策略。 目前是唯 canary 一可接受的部署策略。


trafficSplitMethod - 流量分割方法
string. 選擇性。 使用 時 strategy = canary 。 允許值:podsmi。 預設值:pod

針對 值 smi ,流量分割的百分比會使用服務網格在要求層級完成。 服務網格必須由叢集管理員設定。此工作會處理 SMI 流量Split 物件的協調流程。

針對 值 pod ,在缺少服務網格的情況下,要求層級無法進行百分比分割。 相反地,會使用百分比輸入來計算基準和 Canary 的複本。 計算是穩定變體輸入資訊清單中指定的複本百分比。


percentage - 百分比
string. 當 strategy = Canary && action = deploy 時為必要。 預設值:0

用來計算資訊清單檔案中工作負載的比較基準變異和 Canary-variant 複本數目的百分比。

針對指定的百分比輸入,計算:

(×) / 100複本數目百分比

如果結果不是整數,則會在建立基準和 Canary 變體時使用結果的數學底板。

例如,假設部署 hello-world 位於輸入資訊清單檔案中,而下列幾行位於工作輸入中:

replicas: 4
strategy: canary
percentage: 25

在此情況下,部署 hello-world-baselinehello-world-canary 會以每個複本建立一個複本。 基準變體是使用與穩定版本相同的映射和標籤來建立,這是部署前的四個複本變體。 Canary 變體是使用對應至新部署變更的映射和標記來建立。


baselineAndCanaryReplicas - 基準和 Canary 複本
string. 當 strategy = Canary && action = deploy && trafficSplitMethod = SMI 時為必要。 預設值:1

當您設定 trafficSplitMethodsmi 時,服務網格平面會控制流量分割的百分比。 您可以控制與流量分割無關的 Canary 和基準變體的實際複本數目。

例如,假設輸入部署資訊清單指定穩定變體的 30 個複本。 此外,假設您為工作指定下列輸入:

strategy: canary
trafficSplitMethod: smi
percentage: 20
baselineAndCanaryReplicas: 1

在此情況下,穩定變體會接收 80% 的流量,而基準和 Canary 變體則分別會收到指定之 20% 的一半。 基準和 Canary 變體不會分別收到三個複本。 它們會改為接收指定的複本數目,這表示每個複本都會收到一個複本。


manifests - 體現
string. 當 action = deploy || action = promote || action = reject 時為必要。

指定要用於部署之資訊清單檔案的路徑。 每一行都代表單一路徑。 檔案比對模式是每一行可接受的值。


containers - 容器
string. 選擇性。 使用 時 action = deploy || action = promote || action = bake

指定要用於資訊清單檔案替代之影像的完整資源 URL。 URL contosodemo.azurecr.io/helloworld:test 是範例。


containers - 容器
string. 選擇性。 使用 時 action = deploy || action = promote

指定要用於資訊清單檔案替代之影像的完整 URL。 此輸入接受以分行符號分隔格式的多個成品替代規格。 以下為範例:

containers: |
  contosodemo.azurecr.io/foo:test1
  contosodemo.azurecr.io/bar:test2

在此範例中,輸入資訊清單檔案的影像欄位中會搜尋 和 contosodemo.azurecr.io/bar 的所有參考 contosodemo.azurecr.io/foo 。 針對找到的每個相符專案,標記 test1test2 取代相符的參考。


imagePullSecrets - ImagePullSecrets
string. 選擇性。 使用 時 action = deploy || action = promote

指定多行輸入,其中每一行都包含已在叢集內設定的 Docker 登錄密碼名稱。 輸入資訊清單檔案中找到的工作負載會在每個秘密名稱下 imagePullSecrets 新增。


renderType - 轉譯引擎
string. 選擇性。 使用 時 action = bake 。 允許值:helmkomposekustomize。 預設值:helm

指定用來產生資訊清單檔案的轉譯類型。


renderType - 轉譯引擎
string. 選擇性。 使用 時 action = bake 。 允許的值: helm2 (Helm 2) 。 預設值:helm2

指定用來產生資訊清單檔案的轉譯類型。


dockerComposeFile - Docker 撰寫檔案的路徑
string. 當 action = bake && renderType = kompose 時為必要。

指定 docker-compose 檔案路徑。


helmChart - Helm 圖表
string. 當 action = bake && renderType = helm 時為必要。

指定要製作的 Helm 圖表路徑。


helmChart - Helm 圖表
string. 當 action = bake && renderType = helm2 時為必要。

指定要製作的 Helm 圖表路徑。


releaseName - Helm 版本名稱
string. 選擇性。 使用 時 action = bake && renderType = helm

指定要使用的 Helm 版本名稱。


releaseName - Helm 版本名稱
string. 選擇性。 使用 時 action = bake && renderType = helm2

指定要使用的 Helm 版本名稱。


overrideFiles - 覆寫檔案
string. 選擇性。 使用 時 action = bake && renderType = helm

指定接受覆寫檔案路徑的多行輸入。 從 Helm 圖表製作資訊清單檔案時,會使用檔案。


overrideFiles - 覆寫檔案
string. 選擇性。 使用 時 action = bake && renderType = helm2

指定接受覆寫檔案路徑的多行輸入。 從 Helm 圖表製作資訊清單檔案時,會使用檔案。


overrides - 重寫
string. 選擇性。 使用 時 action = bake && renderType = helm

指定要設定的覆寫值。


overrides - 重寫
string. 選擇性。 使用 時 action = bake && renderType = helm2

指定使用 Helm 的資訊清單檔案進行製作時,透過命令列參數 --set 使用的其他覆寫值。

以 格式 key:value 將覆寫值指定為 key-value 配對。 如果您使用多個覆寫 key-value 配對,請在個別行中指定每個 key-value 配對。 使用分行符號作為不同 key-value 配對之間的分隔符號。


kustomizationPath - Kustomization 路徑
string. 選擇性。 使用 時 action = bake && renderType = kustomize

指定引數,該引數必須是包含檔案的目錄路徑,或具有指定存放庫根目錄路徑尾碼 same 的 Git 存放庫 URL。


resourceToPatch - 要修補的資源
string. 當 action = patch 時為必要。 允許值:filename。 預設值:file

指出下列其中一個修補程式方法:

  • 資訊清單檔會識別要修補的物件。
  • 個別物件是以種類和名稱識別為修補程式目標。

可接受的值為 檔案名稱


resourceFileToPatch - 檔案路徑
string. 當 action = patch && resourceToPatch = file 時為必要。

指定用於修補程式的檔案路徑。


kind - 種類
string. 當 action = scale || resourceToPatch = name 時為必要。 允許值:deploymentreplicasetstatefulset

指定 K8s 物件的種類,例如 deploymentreplicaSet 等等。


name - 名字
string. 當 action = scale || resourceToPatch = name 時為必要。

指定 K8s 物件的名稱。


replicas - 複本計數
string. 當 action = scale 時為必要。

指定要調整的複本數目。


mergeStrategy - 合併策略
string. 當 action = patch 時為必要。 允許值:jsonmergestrategic。 預設值:strategic

指定提供的修補程式類型。


arguments - 參數
string. 選擇性。 使用 時 action = delete

指定命令的 kubectl delete 引數。 例如: arguments: deployment hello-world foo-bar


patch - 補丁
string. 當 action = patch 時為必要。

指定修補程式的內容。


secretType - 秘密類型
string. 當 action = createSecret 時為必要。 允許值:dockerRegistrygeneric。 預設值:dockerRegistry

建立或更新泛型或 docker imagepullsecret 。 指定 dockerRegistry 以建立或更新 imagepullsecret 所選登錄的 。 是 imagePullSecret 將包含容器登錄密碼的秘密傳遞至 Kubelet 的方法,因此可以代表 Pod 提取私人映射。


secretName - 秘密名稱
string. 選擇性。 使用 時 action = createSecret

指定秘密的名稱。 您可以在 Kubernetes YAML 組態檔中使用此秘密名稱。


secretArguments - 參數
string. 選擇性。 使用 時 action = createSecret && secretType = generic

指定要在秘密中插入的索引鍵和常值。 例如, --from-literal=key1=value1--from-literal=key2="top secret"


dockerRegistryEndpoint - Docker 登錄服務連線
string. 選擇性。 使用 時 action = createSecret && secretType = dockerRegistry

指定用來在叢集中建立 Docker 登錄秘密之指定服務連線的認證。 然後,欄位底下的 imagePullSecrets 資訊清單檔案可以參考此秘密的名稱。


rolloutStatusTimeout - 推出狀態的逾時
string. 選擇性。 使用 時 action = deploy || action = patch || action = scale || action = promote 。 預設值:0

指定在結束 watch on rollout 狀態之前等候) 以秒為單位 (的時間長度。


工作控制項選項

除了工作輸入之外,所有工作都有控制選項。 如需詳細資訊,請參閱 控制選項和一般工作屬性

輸出變數

此工作會定義下列 輸出變數,您可以在下游步驟、作業和階段中使用。

manifestsBundle
指定制作動作所建立之資訊清單配套的位置。

備註

注意

此工作有較新版本可供使用 connectionType 屬性,以不同方式提供以 Kubernetes 叢集為目標的額外支援。 如需詳細資訊,請參閱 KubernetesManifest@1KubernetesManifest@1服務連線備註

在組建或發行管線中使用 Kubernetes 資訊清單工作,將資訊清單模擬並部署至 Kubernetes 叢集。

此工作支援下列專案:

  • 成品替代:部署動作會以輸入容器映射的清單,連同其標記和摘要一起指定。 在將應用程式套用至叢集之前,相同的輸入會取代為非範本化資訊清單檔。 此替代可確保叢集節點提取正確的映射版本。

  • 資訊清單穩定性:已檢查已部署 Kubernetes 物件的推出狀態。 穩定性檢查會併入,以判斷工作狀態是成功還是失敗。

  • 可追蹤注釋:注釋會新增至已部署的 Kubernetes 物件,以取代可追蹤性資訊。 支援下列批註:

    • azure-pipelines/org
    • azure-pipelines/project
    • azure-pipelines/pipeline
    • azure-pipelines/pipelineId
    • azure-pipelines/execution
    • azure-pipelines/executionuri
    • azure-pipelines/jobName
  • 秘密處理:動作 createSecret 可讓 Docker 登錄服務連線建立 Docker 登錄秘密。 它也可讓您使用純文字變數或秘密變數來建立泛型秘密。 部署至叢集之前,您可以使用 secrets 輸入以及 deploy 動作,以適當的 imagePullSecrets 值來增強輸入資訊清單檔案。

  • 製作資訊清單:工作的 bake 動作允許將範本製作成 Kubernetes 資訊清單檔案。 動作會使用 Helm、Compose 和 Kustomize 等工具。 透過製作,這些 Kubernetes 資訊清單檔案可用於部署至叢集。

  • 部署策略:選擇 canary 動作的策略 deploy 會導致建立尾碼為 -baseline-canary 的工作負載名稱。 此工作支援兩種流量分割方法:

    • 服務網格介面服務網格介面 (SMI) 抽象概念允許使用 和 等 LinkerdIstio 服務提供者進行設定。 Kubernetes 資訊清單工作會將 SMI TrafficSplit 物件對應至部署策略生命週期中的穩定、基準和 Canary 服務。

      以服務網格為基礎的 Canary 部署,且使用此工作更精確。 此精確度是因為服務提供者如何啟用以細微百分比為基礎的流量分割。 服務網格會使用插入 Pod 的服務登錄和 Sidecar 容器。 此插入會與應用程式容器一起發生,以達到細微的流量分割。

    • 沒有服務網格的 Kubernetes:如果沒有服務網格,您可能不會在要求層級取得您想要的確切百分比分割。 不過,您可以使用穩定變體旁邊的基準和 Canary 變體來執行 Canary 部署。

      當符合選取器標籤條件約束時,服務會將要求傳送至所有三個工作負載變體的 Pod。 Kubernetes 資訊清單會在建立基準和 Canary 變體時接受這些要求。 此路由行為可達到只將部分要求傳送至 Canary 的預期效果。

    使用發行管線中的 手動介入工作 ,或 YAML 管線中的 延遲工作 ,比較基準和 Canary 工作負載。 請先進行比較,再使用工作的升級或拒絕動作。

部署動作

下列 YAML 程式碼是使用資訊清單檔部署至 Kubernetes 命名空間的範例:

steps:
- task: KubernetesManifest@0
  displayName: Deploy
  inputs:
    kubernetesServiceConnection: someK8sSC1
    namespace: default
    manifests: |
      manifests/deployment.yml
      manifests/service.yml
    containers: |
      foo/demo:$(tagVariable1)
      bar/demo:$(tagVariable2)
    imagePullSecrets: |
      some-secret
      some-other-secret

在上述範例中,工作會嘗試尋找影像 foo/demobar/demo 資訊清單檔案影像欄位中的相符專案。 針對找到的每個相符專案,或 tagVariable2 的值 tagVariable1 會附加為映射名稱的標記。 您也可以在容器輸入中指定摘要,以進行成品替代。

注意

雖然您可以使用與部署策略相關的 YAML 輸入來撰寫 deploypromotereject 動作,但目前無法針對建置管線支援手動介入工作。

針對發行管線,建議您以下列順序使用與部署策略相關的動作和輸入:

  1. 使用 strategy: canarypercentage: $(someValue) 指定的部署動作。
  2. 手動介入工作,讓您可以暫停管線,並比較基準變異與 Canary 變體。
  3. 如果繼續手動介入工作,以及拒絕手動介入工作執行的動作,則會執行升級動作。

建立秘密動作

下列 YAML 程式碼示範使用 Docker 登錄服務連線建立 Docker登錄秘密的範例:

steps:
- task: KubernetesManifest@0
  displayName: Create secret
  inputs: 
    action: createSecret
    secretType: dockerRegistry
    secretName: foobar
    dockerRegistryEndpoint: demoACR
    kubernetesServiceConnection: someK8sSC
    namespace: default

此 YAML 程式碼示範建立一般秘密的範例:

steps:
- task: KubernetesManifest@0
  displayName: Create secret
  inputs: 
    action: createSecret
    secretType: generic
    secretName: some-secret
    secretArguments: --from-literal=key1=value1
    kubernetesServiceConnection: someK8sSC
    namespace: default

製作動作

下列 YAML 程式碼是從 Helm 圖表製作資訊清單檔案的範例。 請注意第一個工作中的名稱輸入用法。 稍後會從部署步驟參考此名稱,以指定制作步驟所產生的資訊清單路徑。

steps:
- task: KubernetesManifest@0
  name: bake
  displayName: Bake K8s manifests from Helm chart
  inputs:
    action: bake
    helmChart: charts/sample
    overrides: 'image.repository:nginx'

- task: KubernetesManifest@0
  displayName: Deploy K8s manifests
  inputs:
    kubernetesServiceConnection: someK8sSC
    namespace: default
    manifests: $(bake.manifestsBundle)
    containers: |
      nginx: 1.7.9

注意

若要直接使用 Helm 來管理發行和復原,請參閱 套件和部署 Helm 圖表工作

Kustomize 範例

下列 YAML 程式碼是使用 Kustomize 產生且包含 kustomization.yaml 檔案之資訊清單檔案的範例。

steps:
- task: KubernetesManifest@0
  name: bake
  displayName: Bake K8s manifests from kustomization path
  inputs:
    action: bake
    renderType: kustomize
    kustomizationPath: folderContainingKustomizationFile

- task: KubernetesManifest@0
  displayName: Deploy K8s manifests
  inputs:
    kubernetesServiceConnection: k8sSC1
    manifests: $(bake.manifestsBundle)

Kompose 範例

下列 YAML 程式碼是使用 Kompose 產生的模擬資訊清單檔案範例,這是 Docker Compose 的轉換工具。

steps:
- task: KubernetesManifest@0
  name: bake
  displayName: Bake K8s manifests from Docker Compose
  inputs:
    action: bake
    renderType: kompose
    dockerComposeFile: docker-compose.yaml

- task: KubernetesManifest@0
  displayName: Deploy K8s manifests
  inputs:
    kubernetesServiceConnection: k8sSC1
    manifests: $(bake.manifestsBundle)

調整動作

下列 YAML 程式碼示範縮放物件的範例:

steps:
- task: KubernetesManifest@0
  displayName: Scale
  inputs: 
    action: scale
    kind: deployment
    name: bootcamp-demo
    replicas: 5
    kubernetesServiceConnection: someK8sSC
    namespace: default

修補動作

下列 YAML 程式碼顯示物件修補的範例:

steps:
- task: KubernetesManifest@0
  displayName: Patch
  inputs: 
    action: patch
    kind: pod
    name: demo-5fbc4d6cd9-pgxn4
    mergeStrategy: strategic
    patch: '{"spec":{"containers":[{"name":"demo","image":"foobar/demo:2239"}]}}'
    kubernetesServiceConnection: someK8sSC
    namespace: default

刪除動作

此 YAML 程式碼會顯示範例物件刪除:

steps:
- task: KubernetesManifest@0
  displayName: Delete
  inputs:
    action: delete
    arguments: deployment expressapp
    kubernetesServiceConnection: someK8sSC
    namespace: default

疑難排解

我的 Kubernetes 叢集位於防火牆後方,而我使用的是託管的代理程式。 如何部署到此叢集?

您可以藉由允許託管代理程式的 IP 位址,授與託管的代理程式可透過防火牆存取。 如需詳細資訊,請參閱代理程式 IP 範圍

要求對穩定服務路由和使用 Canary 部署的變體服務路由運作方式為何?

Kubernetes 中 Pod 和服務之間的標籤選取器關聯性允許設定部署,讓單一服務能將要求路由傳送至穩定和 Canary 變體。 Kubernetes 資訊清單工作針對 Canary 部署會使用此工作。

如果工作包含 和 的輸入 action: deploy ,則會針對每個工作負載 (Deployment、ReplicaSet、Pod、...) 定義于輸入資訊清單檔中, -baseline 建立部署的 和 -canarystrategy: canary 變體。 在此範例中,輸入資訊清單檔案中有部署 sampleapp ,而且在管線執行編號 22 之後,此部署的 sampleapp 穩定變體會部署在叢集中。 在此案例中,後續的執行 (執行數位 23) ,Kubernetes 資訊清單工作 action: deploystrategy: canary 會建立 sampleapp-baseline 和 sampleapp-canary 部署,其複本數目取決於工作輸入的乘 percentage 積,其值會根據輸入資訊清單檔案,最終穩定變體 sampleapp 的值決定。

除了複本數目之外,基準版本具有與穩定變體相同的設定,而 Canary 版本有目前執行 (引進的新變更,在此案例中,執行數位 23) 。 如果在上述步驟之後,在管線中設定手動介入,則允許有機會暫停管線,讓管線管理員可以評估基準和 Canary 版本的重要計量,並決定 Canary 變更是否安全且足以完成推出。

action: promoteKubernetes 資訊清單工作的 和 strategy: canaryaction: rejectstrategy: canary 輸入可用來分別升級或拒絕 Canary 變更。 請注意,在此步驟結束時,只有輸入資訊清單檔案中所宣告之工作負載的穩定變體會保留在叢集中,同時清除暫時基準和 Canary 版本。

規格需求

需求 描述
管線類型 YAML、傳統組建、傳統版本
在 上執行 Agent、DeploymentGroup
要求
Capabilities 此工作不符合作業中後續工作的任何需求。
命令限制 任意
Settable 變數 任意
代理程式版本 所有支援的代理程式版本。
工作類別 部署