本文件說明 Cloud Deploy 與其用於部署應用程式的外部系統之間的關係。這些系統是其他 Google Cloud 服務和第三方工具。
概觀
下圖顯示 Cloud Deploy 與其所依賴的個別系統之間的關係。
如圖所示,Cloud Deploy 會與下列系統互動:
您的 CI 系統
Cloud Deploy 支援大多數 CI 工具,只要 CI 程序的其中一個輸出內容可呼叫 Cloud Deploy API 或 CLI,即可建立版本。
-
Cloud Deploy 會呼叫 Cloud Build 來轉譯資訊清單,並將其部署至目標執行階段。
-
Cloud Deploy 會透過 Cloud Build 使用 Skaffold 算繪及部署資訊清單,進而部署應用程式。
-
Cloud Deploy 會將算繪來源和算繪資訊清單儲存在 Cloud Storage 值區中。
Google Cloud Observability 和 Cloud 稽核記錄。
Google Cloud Observability 會收集並提供 Cloud Deploy 的記錄資料。
另請參閱「稽核記錄」。
-
Cloud Deploy 會將訊息發布至多個 Pub/Sub 主題。您可以使用這項服務整合外部工作流程、測試和其他相關系統。
詳情請參閱「訂閱 Cloud Deploy 通知」。
目標執行階段
Cloud Deploy 會透過 Cloud Build 使用
skaffold apply
,將應用程式部署至目標執行階段 (GKE 或 GKE Enterprise)。
Cloud Deploy 資源
下圖顯示 Cloud Deploy 用於提交應用程式的資源,以及這些資源之間的關係:
如圖所示,資源之間的關係如下:
提交管道也可以參照一或多個自動化動作,自動執行 Cloud Deploy 資源的動作。
每個版本可產生零個或多個推出作業,並可參照零個或多個構件。
每個推出作業至少包含一個階段,代表推出作業中邏輯上分組的一系列作業 (工作),例如部署或部署和驗證。
每個階段都包含一或多個工作,代表在推行時要執行的作業,包括部署或驗證。每個工作都包含一或多個工作執行作業,也就是工作的例項,例如嘗試部署。工作執行作業是推出作業的子項資源。
每個推行計畫都會與一個目標相關聯。
每個目標都會與一個 GKE 或 Anthos 叢集或應用程式的其他執行階段目的地相關聯。
目標可以與一或多個提交管道建立關聯。
在推行期間,持續整合程序會將任何輸出項目 (例如容器映像檔) 部署至目標執行階段。
此外,推出作業包含一或多個階段,而階段則包含一或多個工作和一或多個工作執行作業。
如圖所示,推出作業包括以下項目:
階段
一個階段包含一或多個工作 (例如部署或部署及驗證)。每個推行計畫都會有一或多個階段。階段是指在推出期間內的子訊息。
工作
在推出作業中執行的特定作業,例如部署或驗證。工作是推出作業中的子訊息。
JobRuns
工作例項,例如驗證嘗試。每個工作可能會有零個或多個 JobRun。JobRun 是推出作業的子項資源。
自動化動作包含自動化規則,可能會由零或多個 AutomationRun 資源參照。AutomationRuns 是執行的自動化規則例項,例如從一個目標自動推廣至另一個目標。Automation 和 AutomationRun 資源是提交管道中的同層子資源。
如何搭配使用這些工具來發布內容
本節說明 Cloud Deploy 如何與本文件所列元件互動,自動將應用程式提交為版本。
您的 CI 系統會叫用 Cloud Deploy 提交管道。
CI 程序會使用 CLI 或 API 呼叫 Cloud Deploy,藉此建立新版本,並將建構構件或參照傳遞至映像檔。
如要進一步瞭解如何整合 CI 系統,請參閱「將 Cloud Deploy 與其他系統整合」。
建立新版本時,Cloud Deploy 會執行下列操作:
將發布版本的推送管道例項儲存為發布版本的一部分。
即使發布管道設定有所變更,這個管道例項仍會維持不變。詳情請參閱「每個版本的管道執行個體」。
此外,Skaffold 版本會儲存在發布版本中。在大多數情況下,這會是預設的 Skaffold 版本,但由於您可以指定其他版本,因此系統會儲存該資訊。
呼叫 Cloud Build,該服務會從 Cloud Storage 取得 Skaffold 轉譯來源。
Cloud Deploy 會將轉譯來源儲存在預設或替代 Cloud Storage 值區中。
呼叫
skaffold diagnose
(使用建立版本時儲存的 Skaffold 版本),產生單一有效資訊清單。呼叫
render
運算。如果您使用內建目標,Cloud Deploy 會呼叫
skaffold render
,使用提供的映像檔或建構成果轉譯資訊清單。Cloud Deploy 會將spec.templates.spec.containers.image
中的映像檔名稱,替換為gcloud deploy releases create
指令或該指令參照的建構構件檔案中提供的完整映像檔路徑 (包括摘要或標記)。如果您使用自訂目標,Cloud Deploy 會呼叫為自訂目標類型定義的
render
作業。Cloud Deploy 會將算繪的資訊清單儲存在預設或替代 Cloud Storage 值區中。
Cloud Deploy 會使用預設或其他執行環境執行這些動作。
建立推行作業 (在版本建立後自動執行,或稍後視需要執行) 時,Cloud Deploy 會執行下列操作:
呼叫預先部署鉤子 (如有)。
如果您使用的是測試版部署策略,系統會在第一個階段開始時呼叫預先部署掛鉤。
呼叫
deploy
運算。如果您使用內建目標,Cloud Deploy 會呼叫
skaffold apply
,自動建立並部署至第一個目標。如果您使用內建目標,系統會在建立版本時自動建立第一個推出作業。如果您使用自訂目標,Cloud Deploy 會自動為第一個目標建立推出作業,並呼叫為其自訂目標類型定義的
deploy
作業。對於內建目標和自訂目標,只有在使用指令列建立版本時,系統才會自動推出至第一個目標。
部署至第一個目標的程序與宣傳相同,如後續步驟所述。
如果
verify
是傳送管道 config 中目標的true
,且驗證已在 Skaffold 設定中指定,則會呼叫skaffold verify
。如果指定了
verify
,則會在verify
之後呼叫部署後掛鉤 (如有)。否則,系統會在deploy
之後呼叫部署後掛鉤。如果您採用初期測試版部署策略,系統會在最終推出階段執行部署後掛鉤,做為最後一項工作。
當需要將版本推送至下一個目標時,Cloud Build 會從 Cloud Storage 擷取目標專屬資訊清單。接著,Cloud Build 會叫用
skaffold apply
,將轉譯的資訊清單套用至指定的目標執行階段。如果目標需要核准,您可以透過 CLI 或使用控制台核准或拒絕。
此外,Cloud Deploy 會產生 Pub/Sub 訊息,您可以訂閱這些訊息,以便自動啟動核准工作流程。
Cloud Deploy 會使用與此版本相關聯的 Skaffold 版本和管道執行個體,並在預設或自訂執行環境中執行此步驟。
這項程序不僅適用於促銷活動,也適用於回溯和重新部署。
在整個 Cloud Deploy 作業期間,服務會向多個 Pub/Sub 主題發布通知 (例如,當需要核准的推出作業)。
如要進一步瞭解這項和其他整合作業,請參閱「將 Cloud Deploy 與外部系統整合」。
您可以指定自動化功能,自動在發布管道中執行各種作業。這些作業可在指定時間執行。
automationRun
代表自動化規則執行作業。在整個 Cloud Deploy 作業期間,這項服務會將平台記錄和稽核記錄寫入 Google Cloud Observability 和 Cloud 稽核記錄。
在執行所有這些步驟時,會使用 Identity and Access Management 限制流程控管和資源存取權。
後續步驟
進一步瞭解如何將 Cloud Deploy 與其他系統整合
請參閱 Skaffold 版本生命週期相關重要資訊。
瞭解 Cloud Deploy 執行環境。