将 Cloud Build 构建触发器与 Infrastructure 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。
使用 the
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 资源。