本页介绍了设置 Cloud Build 触发器的过程,以便使用现有代码库和 Infrastructure Manager 自动部署 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:您指定的部署标识符。如需详细了解部署标识符的限制,请参阅部署名称。
- GIT_REPO:Git 代码库的 URI。
- REF:配置的 Git 参考。引用是可选的。如果您未指定引用,则系统会使用 Git 代码库的默认配置分支。
- GIT_APP_ID:用于拉取和推送请求触发器的 Cloud Build GitHub 应用的安装 ID。
- TOKEN:GitHub 代码库的个人访问令牌。如果提供,则在 Secret Manager 中创建 Secret。
使用
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:您指定的部署标识符。如需详细了解部署标识符的限制,请参阅部署名称。
- 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 查看已部署的资源。
- 使用Infrastructure Manager 审核日志记录监控您的 Google Cloud 资源。