您可以使用 Cloud Deploy 部署至代表多個目標的目標,並將應用程式並行 (同時) 部署至這些目標。您在管道中指定為階段的目標稱為多部署目標,而多部署目標所包含的目標稱為子目標。
您可以使用平行部署功能,搭配 Cloud Deploy 支援的任何目標類型。
為何要平行部署
舉例來說,您可以使用平行部署功能,將應用程式部署至多個正式發布目標。在這種情況下,您不需要依序部署至各個目標,因為沒有任何進展 (例如從開發、前置環境到實際環境)。
而這項並行部署作業可納入一般發布管道流程:
dev -> staging -> prod [prod1, prod2, prod3, prod4, ...]
。
用於平行部署的 Cloud Deploy 資源
並行部署作業會使用下列 Cloud Deploy 專屬資源:
多目標
多目標是指在目標設定 YAML 的頂層,使用
multiTarget
屬性設定的目標。與參照執行階段叢集或服務不同,多目標會使用multiTarget.targetIds
參照一或多個其他目標。子目標
子目標是指多部署目標以
multiTarget.targetIds
形式參照的任何目標。控制器推出作業
控制器推出作業是對應多個目標的推出作業。
如要進一步瞭解控制器的發布作業可做和不可做的事情,請參閱「限制」。
-
如要進一步瞭解子版本的使用限制,請參閱「限制」一節。
設定並行部署
設定並行部署作業,包括定義一個多部署目標和所需的子目標數量 (最多為限制)。目標定義與所有目標相同,但以下例外:
- 多個目標包含
multiTarget
屬性。 - 子目標不包含
multiTarget
屬性,但會透過multiTarget.targetIds
屬性從多部署目標參照。 - 您可以設定多個目標進行核准,但無法設定子目標,因為子目標無法包含
requireApproval:true
。
多部署目標和子目標可以包含自訂的執行環境設定。如果子目標未指定執行環境,則會繼承多部署目標定義中定義的環境,或預設值。詳情請參閱「執行環境和平行部署」。
設定多目標
多部署目標是指在推送管道中,以單一目標的形式識別,但指向一或多個子目標。
多目標設定包含 multiTarget
屬性。多目標不得包含 gke
或 run
或 anthosCluster
屬性。無論您要部署至哪個執行階段,多目標的設定都相同。
在推送管道 YAML 或個別的 YAML 檔案中,建立基本目標定義,包括 multiTarget
:
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: TARGET_NAME
description: TARGET_DESCRIPTION
multiTarget:
targetIds: [ CHILD_TARGET1, CHILD_TARGET2, CHILD_TARGETn ]
在這個 YAML 中...
TARGET_NAME 是這個多重目標的名稱,用於提交管道定義的
stages.targetId
屬性。CHILD_TARGET1, CHILD_TARGET2,...CHILD_TARGETn 是這個多部署目標部署至的子目標名稱。每個名稱都對應至子項目標定義中的
name
屬性。
multiTarget.targetIds
屬性會將這個目標設為多重目標。
設定子目標
針對多部署設定中標示為子項的每個目標,設定另一個目標做為子目標:
在推送管道 YAML 或個別的 YAML 檔案中,建立基本目標定義:
GKE
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: CHILD_TARGET1
description: TARGET_DESCRIPTION
gke:
cluster: projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_NAME
在這個 YAML 中...
CHILD_TARGET1 是這個子目標的名稱。名稱會對應至多目標定義中
multiTarget.targetIds
屬性目標清單中的一個成員。gke.cluster
屬性的值是這個目標參照的叢集資源名稱,包括專案 ID、區域和叢集名稱。
這個目標的設定與標準 GKE 目標相同。唯一使其成為子目標的情況,是多部署目標中的 multiTarget.targetIds
屬性參照了這個目標。
Cloud Run
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: CHILD_TARGET1
description: TARGET_DESCRIPTION
run:
location: projects/PROJECT_ID/locations/REGION
在這個 YAML 中...
CHILD_TARGET1 是這個子目標的名稱。名稱會對應至多目標定義中
multiTarget.targetIds
屬性目標清單中的一個成員。run.location
屬性的值是這個目標參照的 Cloud Run 服務資源名稱,包括專案 ID 和區域。
這個目標的設定與標準 Cloud Run 目標相同。唯一使其成為子目標的情況,是多部署目標中的 multiTarget.targetIds
屬性參照了這個資源。
GKE Enterprise
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: CHILD_TARGET1
description: TARGET_DESCRIPTION
anthosCluster:
membership: projects/PROJECT_ID/locations/global/memberships/MEMBERSHIP_NAME
在這個 YAML 中...
CHILD_TARGET1 是這個子目標的名稱。名稱會對應至多目標定義中
multiTarget.targetIds
屬性目標清單中的一個成員。MEMBERSHIP_NAME 是您將 GKE Enterprise 使用者叢集註冊至機群時選擇的名稱。
自訂目標
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: CHILD_TARGET1
description: TARGET_DESCRIPTION
customTarget:
customTargetType: CUSTOM_TARGET_TYPE_NAME
在這個 YAML 中...
將部署參數傳遞至目標
您可以在資訊清單中加入參數,並在提交管道定義中加入值,藉此區分子目標。這些值可以根據對應目標的標籤比對結果,個別套用至個別資訊清單。
舉例來說,您可能希望為每個子目標建立不同的副本數量。如要這麼做,請在提交管道的進度中加入參數和值,以及子目標的標籤,以便比對每個參數值組合。
進一步瞭解部署參數。
建立版本
設定多目標和子目標後,請建立推送管道和目標資源,然後照常建立版本。
推送管道的生命週期與任何 Cloud Deploy 管道和目標相同,但在進入多重目標階段時,Cloud Deploy 會為多重目標建立控制器推播,並建立子推播,將應用程式部署至每個子目標。
回應 Cloud Deploy 作業的 Pub/Sub 訊息會區分控制器推出作業和子項推出作業。
限制
多部署目標最多只能有 100 個子目標。
單一多部署目標的所有子目標都必須使用相同的目標執行階段 (例如,所有 GKE 或所有 GKE Enterprise)。
在推送管道中,子目標只能有一個多部署目標父項。
多部署目標不能沒有子項,也不能將自身或其他多部署目標做為子目標。
您無法在單一推送管道中使用子目標多次,但可以在不同管道中重複使用。
預設集區有並行限制,但私人集區則沒有。
當您部署至多個目標時,所有子項的推出作業都會同時進行,最多可達 Cloud Build 並行處理限制。如果子目標數量超過此限制,部分目標的部署工作會在其他目標完成後才執行,也就是說,Cloud Deploy 不會同時部署至所有子目標。
此外,如果目標包含驗證工作,則在應用程式部署至所有子目標之前,可能會先啟動一或多個驗證工作。
如果您需要同時部署至比 Cloud Build 說明文件中所述上限更多的目標,有兩種方法可供選擇:
要求增加可執行的並行建構數量。
執行環境和平行部署
每個目標都可以設定為使用非預設執行環境。
如果多部署目標具有非預設執行環境,所有使用預設執行環境的子目標,都會從多部署目標繼承非預設執行環境
如果多部署目標使用預設執行環境,則任何以非預設執行環境設定的子目標都會使用該非預設執行環境。
這些規則可讓您更輕鬆地將執行環境從多部署目標傳播至子目標,因此您不必為每個子目標定義或變更執行環境,但仍可視需要為一或多個子目標自訂執行環境。
如要進一步瞭解 Cloud Deploy 中的執行環境,請參閱「使用 Cloud Deploy 執行環境」。
復原並行部署
如果您需要從多個平行目標中回復部署作業,請參閱「回復目標」一文,瞭解如何回復多個目標。
平行部署的核准
如同其他目標,您可以將平行部署作業設為需要核准。不過,如果是並行部署,您只能在多目標上設定核准。核准或拒絕會同時影響所有子目標。
在 Google Cloud 控制台中查看平行部署作業
您可以在 Google Cloud 控制台中查看多個目標、子目標、控制器推播和子推播的詳細資料。
查看特定推送管道的目標清單時,在「推送管道詳細資料」中,系統會列出多部署目標,但不會列出子目標。不過,您可以查看版本詳細資料,瞭解控制器推出作業和子項推出作業。您也可以在「推送管道」詳細資料頁面的「推出作業」分頁中,查看控制器和子項推出作業。
您可以在版本檢查工具中查看子版本的轉換作業,並進行比對。
搭配部署策略使用並行部署
使用初期測試版部署策略時,您可以並行部署。詳情請參閱「使用平行部署功能搭配初期測試版部署策略」。
後續步驟
進一步瞭解如何使用部署參數。
請參閱目標設定結構定義。
請參閱「Cloud Deploy 服務架構」一文。