如需使用 Infrastructure Manager 创建、更新或删除部署,您必须使用服务账号。Infra Manager 使用此服务账号的身份执行 Terraform。
您无需服务账号即可查看 Infra Manager 部署的相关信息。
本页介绍了如何配置服务账号,以便您使用 Infrastructure Manager 部署资源。
准备工作
- 启用 Infra Manager 服务。
- 创建服务账号或指定要与 Infra Manager 搭配使用的现有服务账号。
向服务账号授予访问权限
如需使用基础架构管理器创建、更新或删除部署,个人用户需要有权访问服务账号。
向用户授予服务账号的 Service Account User (roles/iam.serviceAccountUser
) IAM 角色。
为 Infra Manager 授予权限
如需使用 Infra Manager,服务账号需要拥有 Infra Manager Agent (roles/config.agent
) 角色。此角色会授予 Infra Manager 创建、更新和删除资源的权限。
如需详细了解如何向服务账号授予权限,请参阅管理对服务账号的访问权限。
授予存储桶的读取权限
您可以使用存储桶存储由 Infra Manager 部署的 Terraform 配置。
如果您为配置使用存储桶,并且此存储桶位于与运行 Infra Manager 的项目不同的项目中,则需要确保您用于调用 Infra Manager 的服务账号对该存储桶拥有读取权限。如需详细了解 Cloud Storage 权限,请参阅 Cloud Storage 的 IAM 权限。
如果存储桶与 Infra Manager 位于同一项目中,并且您已向服务账号授予 roles/config.agent
,则系统已为该存储桶启用读取权限。
如需详细了解如何将配置上传到存储桶,请参阅上传 Terraform 配置。
为配置中定义的资源授予权限
若要创建和管理 Terraform 配置中定义的 Google Cloud 资源,服务账号需要对这些资源拥有特定的权限。
特定于您要部署的 Terraform 配置中定义的 Google Cloud 资源的权限。例如,用于创建 Compute Engine 虚拟机实例的权限为
compute.instances.create
。特定于您要更新的部署的 Terraform 配置中定义的 Google Cloud 资源的权限。
例如,假设您的部署预配了 Compute Engine 虚拟机,然后您使用不包含 Compute Engine 虚拟机的配置更新了部署。在这种情况下,当您更新修订版时,服务账号需要:
对新配置中定义的资源的权限。
要删除的资源的权限,例如本例中的 Compute Engine 虚拟机。
如需有关确定 Terraform 配置中资源所需权限的帮助,请参阅选择预定义角色。
如需详细了解如何向服务账号授予权限,请参阅管理对服务账号的访问权限。
授予项目访问权限
如果服务账号与运行 Infra Manager 服务的项目位于不同的项目中,则需要额外的权限。
如需授予这些额外权限,请执行以下操作:
在具有服务账号的项目中,确保未强制执行
iam.disableCrossProjectServiceAccountUsage
组织政策限制条件。默认情况下,系统会强制执行此限制条件。如需停用此组织政策限制条件,请运行以下命令:
gcloud resource-manager org-policies disable-enforce iam.disableCrossProjectServiceAccountUsage --project=SERVICE_ACCOUNT_PROJECT_ID
将 SERVICE_ACCOUNT_PROJECT_ID 替换为包含服务账号的项目的 ID。
在包含服务账号的项目中,为您要创建部署的项目的 Infra Manager 服务代理授予
roles/iam.serviceAccountUser
角色:gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member="serviceAccount:service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-config.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountUser"
将上述命令中的占位值替换为以下内容:
- SERVICE_ACCOUNT_PROJECT_ID:服务账号所在项目的项目 ID。
- INFRA_MANAGER_PROJECT_NUMBER:您要创建部署的项目的项目编号。这样便可构成服务代理的电子邮件 ID:
service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-config.iam.gserviceaccount.com
如需允许 Infra Manager 代表服务账号创建 Cloud Build 作业,请向服务账号授予
roles/iam.serviceAccountTokenCreator
角色。此角色适用于您要创建部署的项目的 Infra Manager 服务代理:gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member="serviceAccount:service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountTokenCreator"
后续步骤
- 了解 IAM。
- 详细了解如何将 Terraform 与 Google Cloud搭配使用。
- 使用 Infra Manager 部署基础架构。
- 更新部署。
- 查看部署的状态。