本文档介绍了如何在 App Hub 中设置宿主项目。
宿主项目是一种旧版应用设置模型,适用于现有 App Hub 用户。我们建议为新实现设置已启用应用的文件夹,以定义文件夹级边界。文件夹级边界可提供对全套以应用为中心的 Google Cloud 功能的访问权限,例如应用设计中心和 Gemini Cloud Assist。如需比较应用管理可用模型之间的主要区别,请参阅选择应用设置模型。
宿主项目和服务项目概览
宿主项目是一个 Google Cloud项目,您可以将其他项目关联到该项目,这些项目包含您要分组为 App Hub 应用的服务和工作负载。您关联到宿主项目的项目称为服务项目。
宿主项目可以通过附加到自身来直接管理自己的资源。不过,对于单项目设置,我们建议使用单项目方法。
准备工作
在将 Google Cloud 项目设置为宿主项目并向其关联服务项目之前,请完成以下步骤:
- 确定要用作宿主项目的 Google Cloud 项目。您可以使用现有项目,也可以创建新项目。
确定要作为服务项目关联到宿主项目的 Google Cloud 项目。您必须确定包含您打算注册到 App Hub 应用的服务和工作负载的所有项目。应用中心无法看到其他项目中的资源。服务项目有以下要求:
- 服务项目必须与宿主项目位于同一组织中。
- 一个服务项目一次只能关联到一个宿主项目。
- 宿主项目可以充当自己的服务项目来管理自己的资源,但您无法将其作为服务项目关联到任何其他宿主项目。
所需的角色
如需获得将服务项目附加到宿主项目所需的权限,请让您的管理员为您授予宿主项目以及您要附加的每个服务项目的 App Hub Admin (roles/apphub.admin) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
设置宿主项目
如需将 Google Cloud 项目配置为宿主项目,请按以下步骤操作:
控制台
在 Google Cloud 控制台中,使用项目选择器选择要配置为宿主项目的项目。
-
Enable the required API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
确保已安装最新版本的 Google Cloud CLI:
gcloud components update将宿主项目设置为命令的默认项目:
gcloud config set project HOST_PROJECT_ID将
HOST_PROJECT_ID替换为您要配置为宿主项目的项目的 ID。在宿主项目中启用 App Hub API:
gcloud services enable apphub.googleapis.com \ --project=HOST_PROJECT_ID
关联服务项目
将包含要在 App Hub 应用中注册的服务和工作负载的服务项目关联到宿主项目:
控制台
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。
对于要从宿主项目中移除的每个服务项目,重复执行上述流程。
从宿主项目中移除服务项目时,如果您之前配置了指标范围,请考虑同时从宿主项目的指标范围中移除该服务项目。如需了解详情,请参阅从指标范围中移除项目。