本文說明如何設定及使用自訂 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-25
、canary-75
、stable
)。不過,使用自訂 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
,則視為自訂自動初期測試。
後續步驟
瞭解如何管理 Canary 推出作業的生命週期。
進一步瞭解平行部署。
進一步瞭解 Cloud Deploy 部署策略。