用於開發及推送容器化應用程式的 CI/CD pipeline

Last reviewed 2022-11-18 UTC

本文說明一套整合式 Google Cloud 工具,可用於設定開發、持續整合 (CI) 和持續推送軟體更新 (CD) 系統,協助您開發應用程式並部署至 Google Kubernetes Engine (GKE)。這份參考架構文件適用於軟體開發人員和作業人員。本指南假設您熟悉在Google Cloud 上執行 gcloud 指令,以及將應用程式容器部署至 GKE 的相關作業。

架構

下圖顯示這個架構中使用的資源:

使用 Cloud Code、Cloud Build、Artifact Registry、Cloud Deploy 和 GKE 開發及部署系統

這個架構包含下列元件:

  1. Cloud Code 做為開發工作區。在這個工作區中,您可以查看開發叢集的變更,該叢集會在 minikube 上執行。您會在 Cloud Shell 中執行 Cloud Code 和 minikube 叢集。Cloud Shell 是可透過瀏覽器存取的線上開發環境。它包含運算資源、記憶體、整合式開發環境 (IDE),並已安裝 Cloud Code。
  2. Cloud Build:用於建構及測試應用程式,也就是管道的「持續整合」部分

    管道中的這一部分包含下列動作:

    • Cloud Build 會使用 Cloud Build 觸發條件,監控來源存放區的變更。
    • 當變更提交至主分支版本時,Cloud Build 觸發條件會執行下列操作:
      • 重新建構應用程式容器。
      • 將建構成果放入 Cloud Storage 值區。
      • 將應用程式容器放入 Artifact Registry。
      • 在容器上執行測試。
      • 呼叫 Cloud Deploy 將容器部署至測試環境。在這個範例中,測試環境是 Google Kubernetes Engine 叢集。
    • 如果建構和測試成功,您就可以使用 Cloud Deploy 將容器從測試環境推送至實際工作環境。
  3. Cloud Deploy 可用於管理部署作業,也就是管道中的「CD」部分。在管道的這個部分,Cloud Deploy 會執行下列操作:

    • 註冊推送管道目標。目標代表了測試和實際工作環境叢集。
    • 建立 Cloud Storage 值區,並在該值區中儲存 Skaffold 算繪來源和算繪資訊清單。
    • 針對每個原始程式碼變更產生新的發布版本
    • 將應用程式部署至實際工作環境。對於這項正式部署作業,操作員 (或其他指定人員) 會手動核准部署作業。在這個架構中,實際環境是 Google Kubernetes Engine 叢集。

在這個架構中,設定會透過 Skaffold 在開發、測試和實際工作環境之間共用,這是一項指令列工具,可協助原生 Kubernetes 應用程式持續開發。

Google Cloud 會將應用程式原始碼儲存在 GitHub 中。

這種架構會將 Google Cloud 產品用於系統的大部分元件,並透過 Skaffold 啟用系統整合功能。由於 Skaffold 是開放原始碼,您可以運用這些原則,結合 Google Cloud、內部和第三方元件,建立類似的系統。這項解決方案的模組化特性,表示您可以逐步將其納入開發和部署管道。

用途

以下是這套整合系統的主要功能:

  • 加快開發及部署速度

    開發循環效率高,因為您可以在開發人員工作區驗證變更。自動化持續整合/持續推送軟體更新系統和各環境間的一致性提升,可在將變更部署至實際工作環境時偵測更多問題,因此部署作業速度較快。

  • 在開發、測試和實際環境中享有更高的一致性

    這個系統的元件會使用一組常見的 Google Cloud 工具。

  • 在不同環境中重複使用設定

    這項重複使用功能是透過 Skaffold 完成,可為不同環境提供通用的設定格式。開發人員和作業人員也可以更新及使用相同的設定。

  • 在工作流程初期套用管理機制

    這套系統會在實際工作環境、CI 系統和開發環境中,為治理機制套用驗證測試。在開發環境中套用管理機制,可讓您及早發現並修正問題。

  • 意見工具管理軟體提交作業。

    持續性交付作業是全代管服務,可將 CD 管道的階段與轉譯和部署作業的詳細資料分開。

部署作業

如要部署這個架構,請參閱「使用 CI/CD 管道開發及部署容器化應用程式」一文。

後續步驟