本文說明如何設定及使用自訂 Canary 部署作業,透過 Cloud Deploy 將應用程式部署至所有目標類型。
自訂初期測試部署的運作方式
使用自訂初期測試版部署策略進行部署時,Cloud Deploy 不會修改資訊清單,以利所選的流量平衡設定。您必須負責提供資訊清單,並套用至每個 Canary 階段的目標執行階段。
請確認您具備必要權限。
除了使用 Cloud Deploy 時所需的其他 Identity and Access Management 權限外,您還需要下列權限,才能執行可能需要用於 Canary 部署作業的其他動作:
clouddeploy.rollouts.advanceclouddeploy.rollouts.ignoreJobclouddeploy.rollouts.cancelclouddeploy.rollouts.retryJobclouddeploy.jobRuns.getclouddeploy.jobRuns.listclouddeploy.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-25、canary-75、stable)。不過,使用自訂 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工作。verify、predeploy和postdeploy底下的tasks屬性包含一或多個要執行的工作,做為該項工作的一部分。系統會按照定義順序,依序執行所有設定的工作。
最後階段的百分比必須為 100。系統會按照您在這個 customCanaryDeployment 節中設定的順序執行階段,但如果百分比值不是遞增順序,註冊傳送管道的指令就會失敗並顯示錯誤。
請注意,自訂 Canary 的設定不包含 runtimeConfig 節。如果加入 runtimeConfig,則會視為自訂自動初期測試。
後續步驟
請嘗試初期測試部署快速入門導覽課程。
瞭解如何管理 Canary 推出作業的生命週期。
進一步瞭解平行部署。
進一步瞭解 Cloud Deploy 部署策略。