自訂初期測試部署

本文說明如何設定及使用自訂 Canary 部署作業,透過 Cloud Deploy 將應用程式部署至所有目標類型

自訂初期測試部署的運作方式

使用自訂初期測試版部署策略進行部署時,Cloud Deploy 不會修改資訊清單,以利所選的流量平衡設定。您必須負責提供資訊清單,並套用至每個 Canary 階段的目標執行階段。

請確認您具備必要權限。

除了使用 Cloud Deploy 時所需的其他 Identity and Access Management 權限外,您還需要下列權限,才能執行可能需要用於 Canary 部署作業的其他動作:

  • clouddeploy.rollouts.advance
  • clouddeploy.rollouts.ignoreJob
  • clouddeploy.rollouts.cancel
  • clouddeploy.rollouts.retryJob
  • clouddeploy.jobRuns.get
  • clouddeploy.jobRuns.list
  • clouddeploy.jobRuns.terminate

如要進一步瞭解哪些可用角色包含這些權限,請參閱「IAM 角色和權限」。

準備好「skaffold.yaml

skaffold.yaml 檔案會定義資訊清單的算繪和部署方式。如果是自訂 Canary 部署作業,您有責任定義與每個 Canary 階段相關聯的設定檔,以利所選的流量平衡設定。這些設定檔會對應至交付管道策略設定中的階段。

以下是自訂 Canary 使用的 skaffold.yaml 設定範例:

apiVersion: skaffold/v4beta7
kind: Config
profiles:
- name: canary-25
  manifests:
    rawYaml:
    - canary-25-resources.yaml
- name: canary-50
  manifests:
    rawYaml:
    - canary-50-resources.yaml
- name: stable
  manifests:
    rawYaml:
    - stable-resources.yaml

設定自訂初期測試

透過自訂 Canary 設定,您可以在交付管道定義中指定下列項目:

  • 推出階段名稱

    在全自動 Canary 部署中,Cloud Deploy 會為您命名階段 (例如 canary-25canary-75stable)。不過,使用自訂 Canary 時,只要名稱在 Canary 階段的所有階段中不重複,且符合資源 ID 限制,您就能為每個階段命名。但最終 (100%) 階段名稱必須為 stable

  • 各階段的百分比目標

    請分別指定每個階段的百分比。

  • 階段要使用的 Skaffold 設定檔

    您可以為每個階段使用不同的 Skaffold 設定檔,也可以使用相同的設定檔,或任意組合。每個設定檔都可以使用不同的 Cloud Run 服務定義。您也可以為特定階段使用多個設定檔。Cloud Deploy 會合併這些項目。

  • 階段是否有驗證工作

  • 階段是否有部署前或部署後工作

自訂初期測試設定元素

下列 YAML 顯示完全自訂 Canary 部署階段的設定:

strategy:
  canary:
    # Custom configuration for each canary phase
    customCanaryDeployment:
      phaseConfigs:
      - phaseId: "PHASE1_NAME"
        percentage: PERCENTAGE1
        profiles: [ "PROFILE_NAME" ]
        verify:
          tasks: [TASKS]
        predeploy:
          tasks: [TASKS]
        postdeploy:
          tasks: [TASKS]
      - 
      - phaseId: "stable"
        percentage: 100
        profiles: [ "LAST_PROFILE_NAME" ]
        verify:
          tasks: [TASKS]
        predeploy:
          tasks: [TASKS]
        postdeploy:
          tasks: [TASKS]

在這個 YAML

  • PHASE1_NAME

    是階段的名稱。每個階段名稱都不得重複。

  • [ "PROFILE_NAME" ]

    這是要用於階段的設定檔名稱。您可以為每個階段使用相同的設定檔,也可以為每個階段使用不同的設定檔,或任意組合。此外,您也可以指定多個設定檔。Cloud Deploy 會使用您指定的所有設定檔,加上整體階段使用的設定檔或資訊清單。

  • stable

    最後一個階段必須命名為 stable

  • PERCENTAGE1

    這是第一階段要部署的百分比。每個階段都必須有不重複的百分比值,且該值必須是整數百分比 (例如不得為 10.5),階段也必須依遞增順序排列。

  • 您可以設定 verify 節,啟用部署驗證。如果這麼做,系統會在階段中新增 verify 工作。

  • 如要啟用部署前掛鉤,請設定 predeploy 節。如果這麼做,系統會在階段中新增 predeploy 工作。

  • 設定 postdeploy 節,即可啟用部署後掛鉤。如果這麼做,系統會在階段中新增 postdeploy 工作。

  • verifypredeploypostdeploy 底下的 tasks 屬性包含一或多個要執行的工作,做為該項工作的一部分。系統會按照定義順序,依序執行所有設定的工作。

最後階段的百分比必須為 100。系統會按照您在這個 customCanaryDeployment 節中設定的順序執行階段,但如果百分比值不是遞增順序,註冊傳送管道的指令就會失敗並顯示錯誤。

請注意,自訂 Canary 的設定不包含 runtimeConfig 節。如果加入 runtimeConfig,則會視為自訂自動初期測試

後續步驟