本頁說明設定 Cloud Build 觸發條件的程序,以便使用現有的存放區和基礎架構管理工具,自動部署 Google Cloud 資源。
當 Infra Manager 連線至您的 Git 存放區後,拉取要求會觸發部署預覽,而提交會觸發建立部署預覽或更新部署。
事前準備
- 確認已啟用 Infra Manager。
- 請確認您具備建立部署所需的 IAM 權限:
roles/config.admin
- 請確認您有具備必要權限的服務帳戶。詳情請參閱「設定服務帳戶」。
- 找出含有 Terraform 設定的現有 Git 存放區。設定本頁所述的自動化功能時,這就是 Infra Manager 用來更新資源的 Terraform 設定。
- 建議做法:為 Git 存放區設定分支保護。
自動部署 Google Cloud 資源
下列步驟說明如何設定自動預覽及部署儲存在 Git 存放區中的 Terraform 設定。Terraform 設定的部署作業可以是現有部署作業的修訂版本。修訂版本可能會刪除或取代已配置的 Google Cloud 資源。
設定完成後,Git 存放區中的提取要求會導致 Infra Manager 建立部署預覽畫面。合併提取要求後,Infra Manager 會自動部署 Terraform 設定。
im_cloudbuild_workspace
模組會建立多個資源,包括:
- Cloud Build 存放區連線。
- 在建立提取要求時叫用 Cloud Build 觸發條件。這個觸發事件會讓 Infra Manager 使用存放區中的 Terraform 設定建立預覽部署作業。
- 當提取要求與 Git 存放區合併時,系統會叫用 Cloud Build 觸發條件。這個觸發事件會讓 Infra Manager 使用存放區中的 Terraform 設定建立或更新部署作業。
如要自動化 Terraform 設定部署作業,請在存放區更新時執行下列操作:
- 在您的 GitHub 帳戶或組織中安裝 Cloud Build GitHub 應用程式。
-
請務必將權杖設為無效期,並在 GitHub 提示時選取下列權限:
repo
和read:user
。如果應用程式已安裝在機構中,請務必一併選取read:org
權限。產生個人存取權杖後,請將產生的權杖儲存在安全的位置。您會在後續步驟中使用產生的權杖。
將
im_cloudbuild_workspace
模組複製到 Git 存放區中的main.tf
檔案:module "im-workspace" { source = "terraform-google-modules/bootstrap/google//modules/im_cloudbuild_workspace" version = "~> 7.0" project_id = "PROJECT_ID" deployment_id = "DEPLOYMENT_ID" im_deployment_repo_uri = "GIT_REPO" im_deployment_ref = "REF" github_app_installation_id = "GIT_APP_ID" github_personal_access_token = "TOKEN" }
取代:
- PROJECT_ID:Infrastructure Manager 執行的專案 ID。
- DEPLOYMENT_ID:您指定的部署 ID。如要進一步瞭解部署 ID 的限制條件,請參閱「部署名稱」。
- GIT_REPO:Git 存放區的 URI。
- REF:設定的 Git 參照。參考資料為選用項目。如果您未指定參照,系統會使用 Git 存放區的預設設定分支。
- GIT_APP_ID:用於提取和推送要求觸發條件的 Cloud Build GitHub 應用程式安裝 ID。
- TOKEN:GitHub 存放區的個人存取權杖。如果提供,則會在 Secret Manager 中建立密鑰。
使用
im_cloudbuild_workspace
模組建立部署作業 (或更新現有部署作業):gcloud infra-manager deployments apply projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \ --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \ --git-source-repo=GIT_REPO \ --git-source-directory=DIRECTORY \ --git-source-ref=REF
替換:
- PROJECT_ID:Infrastructure Manager 執行的專案 ID。
- LOCATION:執行 Infra Manager 的位置。如需位置清單,請參閱 Infrastructure Manager 位置。
- DEPLOYMENT_ID:您指定的部署 ID。如要進一步瞭解部署 ID 的限制條件,請參閱「部署名稱」。
- SERVICE_ACCOUNT:您用來呼叫 Infra Manager 的服務帳戶名稱。
- SERVICE_ACCOUNT_PROJECT_ID 是服務帳戶的專案 ID。這通常是 Infrastructure Manager 執行的專案。
- GIT_REPO:公開 Git 存放區。
- DIRECTORY:包含 Terraform 設定的目錄。
- REF:設定的 Git 參照。參考資料為選用項目。如果您未指定參照,系統會使用 Git 存放區的預設設定分支。
如要確認 Git 存放區是否已正確連結至 Infra Manager,請在存放區中建立提取要求。
如要查看分支 Terraform 設定的驗證結果,請在 GitHub 中查看提取要求。
自動化動作設定完成後,Cloud Build 觸發條件會導致下列情況:
- 當存放區收到提取要求時,Infra Manager 會使用儲存在 Git 存放區中的分支 Terraform 設定,建立預覽部署作業。
- 當合併至存放區的提取要求時,Infra Manager 會使用儲存在 Git 存放區中的分支 Terraform 設定來更新部署作業。
後續步驟
- 使用 Cloud Build 查看建構觸發事件的建構結果。
- 使用 Infra Manager 查看已部署的資源。
- 使用基礎架構管理工具稽核記錄監控 Google Cloud 資源。