借助 App Hub 宿主项目,您可以在已使用 App Hub 的环境中创建多项目边界。您可以将服务项目关联到宿主项目,并分配 App Hub 角色来管理这些项目中的应用资源。由于宿主项目是一种旧版设置模型,因此请为新部署设置已启用应用的文件夹,以访问所有以应用为中心的 Google Cloud 功能,例如 Application Design Center 和 Gemini Cloud Assist。如需比较可用的设置模型,请参阅选择应用设置模型。
宿主项目和服务项目概览
宿主项目是 Google Cloud项目,您可将其他项目关联到该项目,这些项目包含您要分组为 App Hub 应用的服务和工作负载。您关联到宿主项目的项目称为服务项目。宿主项目和服务项目的关联定义了多项目边界。
宿主项目可以通过附加到自身来直接管理自己的资源。不过,对于单项目设置,我们建议使用单项目方法。
准备工作
在将 Google Cloud 项目设置为宿主项目并向其关联服务项目之前,请完成以下步骤:
- 确定要用作宿主项目的 Google Cloud 项目。您可以使用现有项目,也可以创建新项目。
确定要作为服务项目关联到宿主项目的 Google Cloud 项目。您必须确定包含您打算注册到 App Hub 应用的服务和工作负载的所有项目。App Hub 无法看到其他项目中的资源。服务项目具有以下要求:
所需的角色
如需获得将服务项目关联到宿主项目所需的权限,请让您的管理员为您授予宿主项目以及您要关联的每个服务项目的 App Hub Admin (roles/apphub.admin) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
设置宿主项目
如需将 Google Cloud 项目配置为主机项目,请按以下步骤操作:
控制台
在 Google Cloud 控制台中,使用项目选择器选择您的项目。
从 App Hub 前往概览页面:
点击设置 App Hub。
在启用 App Hub 页面中,选择完整设置以创建多项目边界。
记下项目名称和 ID。此信息用于标识宿主项目,您将使用这些值来授予访问权限。
查看正在启用的 API 列表。 某些 API 会产生相关费用。 详细了解 API 的费用,或点击每个 API 以查看相关费用。
点击继续。
在定义边界标签页中,验证您的项目信息。
点击 添加项目,将广告服务项目添加到边界,或稍后添加。
点击继续。
在授予访问权限标签页中,为项目中的管理员选择适当的 IAM 角色和权限。如需查看各种Google Cloud 产品推荐的以应用为中心的角色列表,请参阅向用户授予以应用为中心的角色。
在新的主账号框中,输入应具有项目中以应用为中心的任务的管理员访问权限的用户、群组或服务账号。
点击授予角色,然后点击完成。
之后,您可以在 IAM 页面中向主账号授予其他 IAM 角色。如需了解详情,请参阅使用 Google Cloud 控制台授予 IAM 角色。
gcloud
-
在 Google Cloud 控制台中,激活 Cloud Shell。
Cloud Shell 会话随即会在 Google Cloud 控制台的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。
确保已安装最新版本的 Google Cloud CLI:
gcloud components update查找 要配置为宿主 项目的 Google Cloud 项目的项目 ID。
将宿主项目设置为命令的默认项目:
gcloud config set project HOST_PROJECT_ID将
HOST_PROJECT_ID替换为您要配置为宿主项目的项目的 ID。在宿主项目中启用 App Hub API:
gcloud services enable apphub.googleapis.com \ --project=HOST_PROJECT_ID
添加服务项目
将服务项目关联到宿主项目,从而将服务项目添加到应用管理边界。
如需将服务项目关联到宿主项目并创建多项目边界,请按照以下步骤操作:
控制台
gcloud
- 查找您要配置为服务项目的每个 Google Cloud 项目的项目 ID。
关联每个服务项目:
gcloud apphub service-projects add SERVICE_PROJECT_ID \ --project=HOST_PROJECT_ID替换以下内容:
SERVICE_PROJECT_ID:要关联的服务项目的 ID。HOST_PROJECT_ID:宿主项目的 ID。
对要附加到宿主项目的每个服务项目重复上述过程。
Terraform
如需使用 Terraform 将服务项目附加到宿主项目,请使用 google_apphub_service_project_attachment 资源,例如:
resource "google_apphub_service_project_attachment" "example" {
service_project_attachment_id = google_project.service_project.project_id
depends_on = [time_sleep.wait_120s]
}
resource "google_project" "service_project" {
project_id ="project-1"
name = "Service Project"
org_id = "123456789"
deletion_policy = "DELETE"
}
resource "time_sleep" "wait_120s" {
depends_on = [google_project.service_project]
create_duration = "120s"
}
如需将服务项目与宿主项目分离,请参阅移除服务项目。
分配 App Hub 角色和权限
如需向宿主项目和服务项目中的 App Hub 用户授予适当的 App Hub 角色和权限,请按照以下步骤操作:
控制台
在 Google Cloud 控制台中,使用项目选择器选择宿主项目。
前往 IAM 页面:
点击 授予访问权限。 此时会打开授予访问权限窗格。
在新主账号字段中,输入您要向其授予 App Hub 访问权限的主账号的邮箱。
点击选择角色,然后在过滤条件字段中输入 App Hub。
选择您要分配给主账号的 App Hub IAM 角色,然后点击保存。
在您关联到宿主项目的每个 App Hub 服务项目中,重复上述流程,向同一用户授予相同角色。
gcloud
查找您配置为宿主项目和 服务项目 的每个 Google Cloud 项目的项目 ID。
向宿主项目中的主账号授予访问权限:
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member='user:EMAIL_ADDRESS' \ --role='ROLE_NAME'替换以下内容:
HOST_PROJECT_ID:宿主项目的 ID。EMAIL_ADDRESS:必须在宿主项目中获取 App Hub 访问权限的主账号的邮箱。此值必须采用username@yourdomain格式,例如my.user@example.com。ROLE_NAME:您要分配给主账号的 App Hub IAM 角色,例如roles/apphub.admin。
在您附加到宿主项目的每个 App Hub 服务项目中,向同一用户授予相同的角色:
gcloud projects add-iam-policy-binding SERVICE_PROJECT_ID \ --member='user:EMAIL_ADDRESS' \ --role='ROLE_NAME'将
SERVICE_PROJECT_ID替换为您要授予访问权限的服务项目的 ID。
设置 VPC Service Controls
如需使用 VPC Service Controls 边界保护应用,请在创建应用之前将 App Hub 宿主项目和服务项目添加到边界。如需了解详情,请参阅将 VPC Service Controls 与 App Hub 搭配使用。
可选:配置指标范围
如需在 Cloud Monitoring 中查看宿主项目中应用的系统指标,请将关联的服务项目添加到宿主项目的指标范围。宿主项目充当时序数据的范围项目,可用于绘制图表和监控数据。如需了解详情和配置说明,请参阅配置指标范围和使用 API 配置指标范围。
移除服务项目
通过将服务项目与宿主项目解除关联,从应用管理边界中移除服务项目。
如需将服务项目与宿主项目解除关联,请按以下步骤操作:
控制台
gcloud
- 查找要从宿主项目中移除的每个服务项目的项目 ID。
移除每个服务项目:
gcloud apphub service-projects remove SERVICE_PROJECT_ID \ --project=HOST_PROJECT_ID替换以下内容:
SERVICE_PROJECT_ID:要移除的服务项目的 ID。HOST_PROJECT_ID:宿主项目的 ID。
对于要从宿主项目中移除的每个服务项目,重复上述过程。
从宿主项目中移除服务项目时,如果您之前配置了指标范围,请考虑同时从宿主项目的指标范围中移除该服务项目。如需了解详情,请参阅从指标范围中移除项目。