自訂初期測試部署

本文說明如何設定及使用自訂 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 會合併這些項目。

  • 階段是否有驗證工作

    請注意,啟用驗證後,您也需要設定 skaffold.yaml 以進行驗證。

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

    如要啟用部署前或部署後工作,請設定這些工作的 skaffold.yaml

自訂初期測試設定元素

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

strategy:
  canary:
    # Custom configuration for each canary phase
    customCanaryDeployment:
      phaseConfigs:
      - phaseId: "PHASE1_NAME"
        percentage: PERCENTAGE1
        profiles: [ "PROFILE_NAME" ]
        verify: true | false
        predeploy:
          actions: "PREDEPLOY_ACTION"
        postdeploy:
          actions: "POSTDEPLOY_ACTION"
      - 
      - phaseId: "stable"
        percentage: 100
        profiles: [ "LAST_PROFILE_NAME" ]
        verify: true|false
        predeploy:
          actions: "PREDEPLOY_ACTION"
        postdeploy:
          actions: "POSTDEPLOY_ACTION"

這個 YAML

  • PHASE1_NAME

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

  • [ "PROFILE_NAME" ]

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

  • stable

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

  • PERCENTAGE1

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

  • verify: true|false

    告知 Cloud Deploy 是否要為階段納入驗證工作。 請注意,如要讓每個階段都使用驗證,Skaffold 會使用相同的設定檔進行驗證,該設定檔是為該階段的算繪和部署作業指定。

  • PREDEPLOY_ACTION

    與您在 skaffold.yaml 中使用的 ACTION_NAME 相同,可定義要在部署前執行的自訂動作。

  • POSTDEPLOY_ACTION

    與您在 skaffold.yaml 中用來定義部署後要執行的自訂動作的 ACTION_NAME 相同。

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

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

後續步驟