使用 Cloud Deploy 執行環境

Cloud Deploy 執行環境是 Cloud Deploy 執行轉譯、預先部署、部署、驗證和後部署作業的環境。執行環境包含下列元件:

  • Cloud Build 工作站集區 (預設或私人),Cloud Deploy 會在其中執行轉譯、預先部署、部署、驗證和後部署作業

  • 呼叫 Cloud Deploy 以執行這些動作的服務帳戶 (預設或替代)

  • Cloud Storage 中算繪資訊清單的儲存位置 (預設或替代)

  • 作業 (預設或自訂) 的 Cloud Build 逾時時間

本文將說明 Cloud Deploy 的預設執行環境、服務帳戶和儲存空間,以及變更這些預設項目的原因和方法。

預設值

以下是 Cloud Deploy 用於執行、執行算繪和部署作業,以及儲存算繪資訊清單等資產的預設值:

  • 預設工作站集區

    根據預設,Cloud Deploy 會在預設的 Cloud Build 工作站集區中執行。不過,您可以設定 Cloud Deploy 使用 Cloud Build 私人工作站集區

    如要進一步瞭解工作站集區,請參閱 Cloud Build 的「預設集區和私人集區總覽」一文。

  • 預設執行作業服務帳戶

    根據預設,Cloud Deploy 會使用預設的 Compute Engine 服務帳戶

  • 預設 Cloud Deploy 儲存位置

    這個值是 Cloud Storage 值區,Cloud Deploy 會在該值區儲存算繪的資訊清單。根據預設,Cloud Deploy 會在 Cloud Deploy 資源所在的區域建立 Cloud Storage 值區,格式如下:

    <location>.deploy-artifacts.<project ID>.appspot.com

  • Cloud Build 的預設逾時時間

    根據預設,Cloud Build 為 Cloud Deploy 執行的作業設有 1 小時的逾時期限。您可以在目標設定中,變更執行環境規格中的逾時時間。

  • Skaffold、gcloud CLI 和 kubectl 的預設詳細程度

    根據預設,這些工具的日誌層級會設為各自的預設值,通常是 warn 或等同的值。您可以變更debug 或等效項目。

以下各節將說明您在何種情況下需要變更這些值,並提供相關操作說明的連結。

關於 Cloud Build 工作站集區

Cloud Deploy 執行環境可使用下列任一選項:

  • Cloud Build 預設集區

    預設工作站集區是安全的代管環境,可存取公開網際網路。算繪、部署、預先部署、後期部署和驗證作業會在該集區中執行,與其他工作負載隔離。

  • 私人集區

    私人工作站集區是私人專屬集區,可進行比預設工作站集區更深入的客製化。這項自訂設定可包括私人網路中資源的存取權。與預設工作站集區一樣,私人工作站集區會由 Cloud Build 代管並完全管理。這些資源池可擴充或縮減至零,完全不需設定、升級或擴充基礎架構。

    Cloud Build 私人工作站集區總覽會更詳細說明預設工作站集區和私人工作站集區,並提供一張表格比較兩者的功能。

變更 Cloud Deploy 執行環境

您可能會在下列情況下變更 Cloud Deploy 執行環境:

  • 您想部署至私人 Google Kubernetes Engine 叢集

  • 您希望在與其他機構隔離的環境中執行轉譯、部署、預先部署、事後驗證或驗證作業,或這五種作業的組合。

  • 您希望在未連上公開網際網路的環境中執行這些作業。

  • 您需要為轉譯和部署作業建立不同的環境。

  • 您想使用具備特定權限的專屬服務帳戶,這些權限比預設服務帳戶提供的權限更符合您的使用需求。

  • 您想將轉譯後的資訊清單儲存在與預設 Cloud Storage 值區不同的位置。

您可以在每個目標的 YAML 設定中,為每個目標設定執行環境的所有三個部分 (工作站集區、服務帳戶和儲存空間)。

從預設集區變更為私人集區

您可以為每個目標設定 worker 集區,以便將集區用於 RENDERDEPLOYPREDEPLOYPOSTDEPLOYVERIFY (或這五者的組合),但僅限於該目標

如要同時使用預設工作站集區進行轉譯和部署作業,您不必採取任何行動。

以下是目標設定範例,其中指定 DEPLOY 的私人工作站集區,以及 RENDERPREDEPLOYPOSTDEPLOYVERIFY 的預設工作站集區:

executionConfigs:
- usages:
  - DEPLOY
  privatePool:
    workerPool: "projects/p123/locations/us-central1/workerPools/wp123"
- usages:
  - RENDER
  - PREDEPLOY
  - VERIFY
  - POSTDEPLOY

如要進一步瞭解如何為目標設定私人集區,請參閱發布管道設定說明文件

從預設執行服務帳戶變更為自訂執行服務帳戶

如同工作者集區,您可以指定備用服務帳戶,用於每個目標的算繪或部署作業 (或兩者皆是)。如要這麼做,請在目標設定的 workerPool 元素後方加入以下這一行:

serviceAccount: "[name]@[project_name].iam.gserviceaccount.com"

指定的服務帳戶必須包含 clouddeploy.jobRunner 角色,如 Cloud Deploy 服務帳戶 文件所述。

如要進一步瞭解這項設定,請參閱「目標定義」。

變更儲存位置

如要變更 Cloud Deploy 預設的儲存值區,請在 workerPool 段落的目標定義中新增下列行:

artifactStorage: "gs://[bucket_name]/[dir]"

這項設定會變更算繪後的資訊清單儲存位置,但不會影響算繪來源的儲存位置

變更 Skaffold、gcloud CLI 和 kubectl 的記錄層級

如要將 Skaffold、gcloud CLI 和 kubectl 的記錄層級從各自的預設值變更為 debug (或等同的值),請在執行設定中將 verbose 設為 true。範例如下:

executionConfigs:
- usages:
  - [RENDER | PREDEPLOY|  DEPLOY | VERIFY | POSTDEPLOY]
  workerPool:
  serviceAccount:
  artifactStorage:
  executionTimeout:
  verbose: true

在 VPC Service Controls 範圍內使用 Cloud Deploy

Cloud Deploy 支援 VPC Service Controls

您可以按照 VPC Service Controls 快速入門導覽課程設定服務範圍。

限制

  • 您必須使用 Cloud Build 私人工作站集區,而不是預設工作站集區,用於目標的執行環境。

  • 包含工作站集區的專案和包含 Cloud Deploy 資源的專案,必須位於同一個 VPC Service Controls 安全範圍內。

  • 您在 VPC Service Controls 範圍內部署的任何 GKE 叢集都必須是私人叢集。

    如要為私人叢集設定私人集區,請參閱這份教學課程

後續步驟