本文說明 Cloud Deploy 與外部系統之間的關係,這些系統會與 Cloud Deploy 搭配運作,以部署應用程式。這些系統是其他 Google Cloud 服務和第三方工具。
高階檢視畫面
下圖顯示 Cloud Deploy 與其所依附的個別系統之間的關係。
如圖所示,Cloud Deploy 會與下列系統互動:
您的 CI 系統
只要 CI 程序能輸出對 Cloud Deploy API 或 CLI 的呼叫,即可建立版本,因此 Cloud Deploy 支援大多數 CI 工具。
-
Cloud Deploy 會呼叫 Cloud Build 算繪資訊清單,並部署至目標執行階段。
-
Cloud Deploy 會透過 Cloud Build 使用 Skaffold 算繪及部署資訊清單,進而部署應用程式。
-
Cloud Deploy 會將算繪來源和算繪資訊清單儲存在 Cloud Storage bucket 中。
Google Cloud Observability 和 Cloud 稽核記錄。
Google Cloud Observability 會收集 Cloud Deploy 的記錄資料並提供存取權。
另請參閱「稽核記錄」。
-
Cloud Deploy 會將訊息發布至多個 Pub/Sub 主題。您可以透過這項服務與外部工作流程、測試和其他相關系統整合。
詳情請參閱「訂閱 Cloud Deploy 通知」。
目標執行階段
Cloud Deploy 會透過 Cloud Build,將應用程式部署至目標執行階段 (GKE、Cloud Run 或自訂目標)。
skaffold apply
Cloud Deploy 資源
下圖顯示 Cloud Deploy 用於交付應用程式的資源,以及這些資源之間的關係:
如圖所示,資源之間的關係如下:
傳送管道也可以參照一或多項自動化作業,自動對 Cloud Deploy 資源執行動作。
每個版本可產生零或多個推出作業, 並可參照零或多個構件。
每個推出作業至少包含一個階段,代表推出作業中邏輯上歸為一組的作業 (工作) 集合,例如部署或部署及驗證。
每個階段都包含一或多個工作,代表要在推出作業中執行的動作,也就是部署或驗證。每項工作可包含一或多個工作執行作業 (即工作執行個體),例如部署嘗試。工作執行是推出作業的子項資源。
每個推出作業都會與一個目標相關聯。
每個目標都與一個 GKE 叢集或應用程式的其他執行階段目的地相關聯。
目標可以與一或多個推送管道建立關聯。
構件是持續整合程序中的任何輸出內容 (例如容器映像檔),會部署至目標執行階段,做為推出程序的一部分。
此外,推出作業包含一或多個階段,而階段則包含一或多個工作和一或多個工作執行作業。
如圖所示,推出作業包含下列步驟:
階段
一個階段包含一或多個作業 (例如部署,或部署及驗證)。 每個推出作業都有一或多個階段。階段是推出程序中的子訊息。
工作
要在推出作業中執行的特定作業,例如部署或驗證。作業是推出作業中的子訊息。
JobRuns
工作例項,例如驗證嘗試。每個工作可以有零或多個 JobRun。JobRun 是推出作業的子項資源。
自動化作業包含自動化作業規則,可供零或多個 AutomationRun 資源參照。AutomationRun 是已執行的自動化規則執行個體,例如從一個目標自動升級至另一個目標。Automation 和 AutomationRun 資源是傳送管道下方的同層子項資源。
如何搭配使用這些工具來發布版本
本節說明 Cloud Deploy 如何與本文列出的元件互動,自動將應用程式提交為版本。
持續整合系統會叫用 Cloud Deploy 推送管道。
您的 CI 程序會使用 CLI 或 API 呼叫 Cloud Deploy,藉此建立新版本,並傳遞建構構件或映像檔參照。
如要進一步瞭解如何整合 CI 系統,請參閱「整合 Cloud Deploy 與其他系統」。
建立新版本時,Cloud Deploy 會執行下列動作:
將推送管道的執行個體儲存為版本的一部分。
即使變更推送管道設定,這個管道執行個體也不會受到影響。詳情請參閱「每個版本的管道執行個體」。
此外,工具版本會儲存為發行版本的一部分。在大多數情況下,這會是預設工具版本,但由於您可以指定其他版本,因此系統會儲存該資訊。
呼叫 Cloud Build,從 Cloud Storage 取得 Skaffold 算繪來源。
Cloud Deploy 會將算繪來源儲存在預設或替代的 Cloud Storage bucket 中。
呼叫
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作業。如果是內建目標和自訂目標,只有透過指令列建立版本時,系統才會自動推出至第一個目標。
部署至第一個目標的程序與宣傳活動相同,請參閱下一個步驟。
如果推送 pipeline 設定中的目標為
verify,且在 Skaffold 設定中指定驗證,則會呼叫skaffold verify。true如果指定
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 與其他系統
請參閱工具版本生命週期的重要資訊。
瞭解 Cloud Deploy 執行環境。