为启用应用的文件夹设置 App Hub

本文档介绍了如何使用启用应用的文件夹设置 App Hub,以便在 Google Cloud上构建、运行和管理 App Hub 应用。本指南适用于设置和管理应用中心的人员。

您还可以在宿主项目中设置 App Hub。不过,我们建议您使用已启用应用的文件夹(而非托管项目)来管理应用,因为已启用应用的文件夹可以使用应用设计中心和 Gemini Cloud Assist 等功能。如需详细了解如何在托管项目中设置 App Hub,请参阅在托管项目中设置 App Hub

在支持应用的文件夹中设置 App Hub 应用后,您可以使用自然语言助理检索应用的相关信息。如需了解详情,请参阅在 Google Cloud 控制台中使用 Gemini Cloud Assist

服务和工作负载

借助 App Hub,您可以将启用了应用的文件夹的子项项目中的资源作为服务和工作负载使用。 Google Cloud 将服务和工作负载注册到应用后,您就可以观察和监控这些资源。App Hub 支持全球和区域资源。如需详细了解您可以添加到应用中的资源,请参阅 App Hub 支持的资源

整体设置流程

以下列表总结了设置 App Hub 的步骤:

  1. 确定要将哪些现有资源添加到应用中,以及它们所属的项目。如需详细了解如何管理应用,请参阅应用管理
  2. 为文件夹启用应用管理功能。 现在,您可以管理启用了应用的文件夹的所有后代项目中的资源。如果向该文件夹添加了包含应用所需底层资源的新项目,系统会自动为这些项目启用应用管理功能。
    请注意以下事项:
    1. 这些项目必须与启用了应用的文件夹位于同一组织中。将项目附加到启用了应用的文件夹后,如果您想将项目移至其他组织,则必须迁移项目。如需了解详情,请参阅在组织资源之间迁移项目
    2. 将项目附加到启用了应用的文件夹后,查询启用了应用的文件夹中的服务或工作负载会自动返回附加到启用了应用的文件夹的所有项目中的所有服务和工作负载。
    3. 如果将启用了应用的文件夹移至其他组织,则所有已注册的服务和工作负载都将分离。
  3. 将 App Hub 用户指定为 App Hub 管理员、App Hub 编辑者或 App Hub 查看者。
  4. 创建应用来整理多个工作负载和服务。
    请注意以下事项:
    1. 确保应用在支持应用的文件夹和位置中具有唯一的名称。
    2. 一个项目可以附加到包含多个应用的已启用应用的文件夹,但其各个资源只能注册到一个应用。
    3. 如果将项目移至其他文件夹或组织,应用将继续保留在启用了应用的文件夹中,其服务和工作负载处于分离状态。
  5. 查询服务和工作负载,并将其注册到您的应用。创建应用后,您可以查询启用了应用的文件夹,了解可用的服务和工作负载。查询会针对启用了应用的文件夹以及附加到启用了应用的文件夹的所有项目运行。该查询还会返回这些项目中的所有服务和工作负载。请注意以下几点:
    1. 您只能将服务或工作负载注册到单个应用。
    2. 您必须将特定区域的服务和工作负载注册到同一区域内的区域性应用或全球性应用。以下说明和命令假定所有资源都在同一区域。如需了解您可以指定哪些区域,请参阅位置
    3. 已注册的服务和工作负载不会受到底层基础架构资源更新的影响。换句话说,如果您删除用作服务和工作负载的基础资源,App Hub 不会从您的应用中删除关联的工作负载和服务。您必须单独取消注册工作负载或服务。

前提条件

在设置 App Hub 之前,请完成以下任务。

  1. 确保您拥有为管理项目激活或创建结算账号所需的 IAM 角色
  2. 选择一个现有文件夹,或创建一个新文件夹,以便在其中启用应用管理功能。如需详细了解如何创建文件夹,请参阅创建文件夹
  3. 确保您已确定哪些用户拥有 App Hub 的 Identity and Access Management (IAM) 角色:App Hub 管理员、App Hub 编辑者和 App Hub 查看者。如需详细了解这些角色和权限,请参阅 App Hub 角色和权限

所需的角色

如需获得修改 App Hub 资源所需的权限,请让管理员向您授予启用了应用的文件夹的以下 IAM 角色:

  • 如需创建和更新应用,以及注册和取消注册服务和工作负载,请执行以下操作:
  • 如需为文件夹启用应用管理功能,请使用 Folder Admin (resourcemanager.folderAdmin)
  • 如需查看 Google Cloud 支持应用管理的服务中的应用、服务和工作负载及其属性,请使用以下工具: App Hub 管理查看器 (roles/apphub.appManagementViewer)
    如需详细了解如何在一个位置查看应用的数据,请参阅 Cloud Hub 概览

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

启用应用管理

在本部分中,您将选择一个文件夹,并为该文件夹启用应用管理功能。为文件夹配置应用管理功能时,启用流程包括以下操作:

  • 在该文件夹中创建新的管理项目。管理项目是 Google 拥有的项目,您无法移动或删除。一个已启用应用的文件夹只能与一个管理项目相关联。管理项目用于管理与启用了应用的文件夹关联的所有子项目的配额和结算。
  • 为支持应用管理的 App Hub 和 Gemini Cloud Assist 等服务启用 API。
  1. 在 Google Cloud 控制台中,前往 App Hub 页面。

    前往 App Hub

  2. 根据以下场景,请按以下步骤操作:

    • 如果您所在的 Google Cloud 项目或 Google Cloud文件夹未启用应用,请执行以下操作:
      1. 点击选择文件夹
      2. 选择文件夹对话框中,选择已启用应用的文件夹。如需了解已启用应用的文件夹的相关信息,请咨询您的管理员。如果您选择的文件夹未启用应用,并且您拥有“文件夹管理员”(resourcemanager.folderAdmin) IAM 角色,请为该文件夹启用应用管理。如需了解详情,请参阅为文件夹启用应用管理和 API
    • 如果您当前所在的 Google Cloud 文件夹启用了应用,请在此页面上前往指定 App Hub 用户

    为文件夹启用应用管理功能会创建一个名为“管理项目”的 Google 自有项目,其格式为 FOLDER_DISPLAY_NAME-mp。管理项目托管启用了应用的文件夹的后代项目,并有助于管理跨项目功能。现在,您可以为此启用应用的文件夹中的后代项目创建 App Hub 应用。

  3. 可选:在此管理项目上启用共享 VPC。如需了解详情,请参阅将 VPC Service Controls 与 App Hub 搭配使用

  4. 可选:您可以创建项目,也可以将项目从其他文件夹移至已启用应用的文件夹。然后,您可以在启用了应用的文件夹中创建应用,以管理项目中的服务和工作负载。如需详细了解如何创建项目,请参阅创建项目。如需详细了解如何移动项目,请参阅移动项目

指定 App Hub 用户

如果您是项目创建者,则会被授予基本 Owner 角色 (roles/owner)。默认情况下,此 IAM 角色包含对大多数Google Cloud 资源的完整访问权限。

如果您不是项目创建者,则必须向主账号授予项目的必需权限。例如,主账号可以是 Google 账号(针对最终用户)或服务账号(针对应用和计算工作负载)。如需获得完成本教程所需的权限,请让您的管理员为您授予项目的以下 IAM 角色:

控制台

  1. 在 Google Cloud 控制台中,转到 IAM 页面。

    转到 IAM

  2. 确保顶部导航栏中的项目选择器显示已启用应用的文件夹。范围选择器可让您了解当前正在查看的组织、文件夹或项目。如果您当前所在的文件夹不支持应用,请按以下步骤选择支持应用的文件夹:

    1. 在范围选择器中,点击所选选项。
    2. 选择资源对话框中,执行以下操作之一:
      • 从文件夹列表中,选择 FOLDER_DISPLAY_NAME 文件夹。
      • 搜索 FOLDER_DISPLAY_NAME 文件夹,然后选择该文件夹。
  3. IAM 页面上,点击 授予访问权限授予访问权限窗格随即会打开。

  4. 新主账号字段中,输入负责管理 App Hub 的个人的电子邮件地址,即“已启用应用”文件夹中的“App Hub 管理员”角色。

  5. 点击选择角色,然后在过滤条件字段中输入 App Hub

  6. 选择 App Hub Admin 角色,然后点击 Save(保存)。

  7. 重复上述步骤,向用户授予 App Management Viewer 角色,以便他们查看支持应用管理的Google Cloud 服务中的应用数据及其属性。此角色会授予个人对启用了应用的文件夹的所有项目和子文件夹的访问权限。

  8. 点击保存

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. 确保安装了最新版本的 Google Cloud CLI。 从 Cloud Shell 运行以下命令:

    gcloud components update
  3. 向将管理 App Hub 的用户授予启用应用的文件夹中的 App Hub 管理员角色。对每位管理员重复运行以下命令。他们必须拥有 App Hub 管理员角色才能创建应用。

    gcloud projects add-iam-policy-binding MANAGEMENT_PROJECT_ID \
        --member='user:MANAGEMENT_PROJECT_ADMIN' \
        --role='roles/apphub.admin'
    

    替换以下内容:

    • MANAGEMENT_PROJECT_ID:管理项目的 ID,格式为 google-mpf-FOLDER_ID。您可以在 Google Cloud 控制台的“身份和访问管理 (IAM)”&“管理”设置页面上找到管理项目 ID。如果您找不到“管理”项目 ID,则可能是因为您所在的文件夹未启用应用。从项目选择器中,选择已启用应用的文件夹。
    • MANAGEMENT_PROJECT_ADMIN:在项目中具有“App Hub 管理员”角色的用户。此值的格式为 username@yourdomain,例如 robert.smith@example.com
  4. 向个人授予启用了应用的文件夹中的“应用管理查看者”角色,以便他们在支持应用管理的服务中查看应用数据及其属性。 Google Cloud 此角色会授予个人对启用了应用的文件夹的所有项目和子文件夹的访问权限。

    gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \
        --member='user:MANAGEMENT_PROJECT_ADMIN' \
        --role='roles/apphub.appManagementViewer'
    

    FOLDER_ID 替换为相应项目的 ID。您可以在 Google Cloud 控制台的“IAM 和管理”设置页面上找到已启用应用的文件夹 ID。为确保文件夹已启用应用,设置页面应显示“管理”项目 ID。如果您找不到“管理”项目 ID,则可能是因为您所在的文件夹未启用应用。从项目选择器中,选择已启用应用的文件夹。

创建应用

如果您还没有应用,请创建一个应用来作为服务和工作负载的容器。根据启用了应用的文件夹中的服务和工作负载的范围,创建全球应用或区域应用。

  • 借助全球应用,您可以注册从区域性和全球性 Google Cloud 资源中发现的服务和工作负载。
  • 借助区域应用,您可以注册从区域 Google Cloud 资源发现的服务和工作负载。

请注意,应用创建后,您将无法更改应用范围。如需详细了解全球应用和区域性应用,请参阅 App Hub 中的全球应用和区域性应用

控制台

  1. 确保您位于已启用应用的文件夹中。
  2. 在 Google Cloud 控制台中,前往 App Hub 的应用页面。

    打开“应用”

  3. 点击创建应用

  4. 创建应用页面的选择应用区域和名称窗格中,根据您要向应用注册的服务和工作负载的范围,执行以下任一操作:

    • 如需创建一个可让您从全球任意位置注册服务和工作负载的应用,请选择全球

    • 如需创建一个应用,以便您从单个位置注册服务和工作负载,请执行以下操作:

      1. 选择区域级
      2. 选择区域
  5. 输入应用名称,然后点击继续

  6. 可选:在添加属性部分中,输入显示名称

  7. 可选:在重要性列表中,选择以下选项之一,以指明应用的重要性:

    • 任务关键型
  8. 可选:在环境列表中,选择以下选项之一以指明软件生命周期的阶段:

    • 生产
    • 预演
    • 开发
    • 测试
  9. 可选:根据开发者所有者运营商所有者企业所有者的要求,添加以下详细信息。请注意,如果您添加显示名称,则必须输入所有者的电子邮件地址。

    1. 输入所有者的显示名称。
    2. 输入所有者的电子邮件地址。此值必须采用 username@yourdomain 格式,例如 222larabrown@gmail.com
  10. 对每个开发者、运营商和企业所有者重复上述步骤。

  11. 点击创建

gcloud

  1. 创建一个名为 APPLICATION_NAME 的新应用,并为其指定显示名称 APPLICATION_DISPLAY_NAME

    gcloud apphub applications create APPLICATION_NAME \
        --display-name='APPLICATION_DISPLAY_NAME' \
        --scope-type=SCOPE_TYPE \
        --criticality-type='CRITICALITY_LEVEL' \
        --environment-type='ENVIRONMENT' \
        --developer-owners=display-name=DISPLAY-NAME-DEVELOPER,email=EMAIL-DEVELOPER \
        --operator-owners=display-name=DISPLAY-NAME-OPERATOR,email=EMAIL-OPERATOR \
        --business-owners=display-name=DISPLAY-NAME-BUSINESS,email=EMAIL-BUSINESS \
        --project=MANAGEMENT_PROJECT_ID \
        --location=REGION
    

    替换以下内容:

    • APPLICATION_NAME:应用的名称。名称只能包含小写字母数字字符,且不得包含空格。
    • APPLICATION_DISPLAY_NAME:应用的显示名称。
    • SCOPE_TYPE:应用的范围,用于定义您可以向应用注册哪些服务和工作负载。请使用以下某个值:
      • REGIONAL
      • GLOBAL
    • CRITICALITY_LEVEL:(可选)表示应用、服务或工作负载对业务运营的重要性。提供以下某个值:
      • MISSION_CRITICAL
      • HIGH
      • MEDIUM
      • LOW
    • ENVIRONMENT:(可选)表示软件生命周期的阶段。提供以下某个值:
      • PRODUCTION
      • STAGING
      • DEVELOPMENT
      • TEST
    • DISPLAY-NAME-DEVELOPERDISPLAY-NAME-OPERATORDISPLAY-NAME-BUSINESS:开发者、运营商和商家所有者的显示名称(可选)。
    • EMAIL-NAME-DEVELOPEREMAIL-NAME-OPERATOREMAIL-NAME-BUSINESS:开发者、运营商和企业所有者的电子邮件地址(可选)。这些值的格式必须为 username@yourdomain,例如 222larabrown@gmail.com
    • MANAGEMENT_PROJECT_ID:管理项目的 ID,格式为 google-mpf-FOLDER_ID
    • REGION:应用的区域。根据 --scope-type,为此设置值 us-east1global

    例如:

    gcloud apphub applications create my-application \
        --display-name='application-display-name' \
        --scope-type=REGIONAL \
        --criticality-type='MEDIUM' \
        --environment-type='STAGING' \
        --developer-owners=display-name=developer-name,email=username@yourdomain \
        --project=host-project \
        --location=us-east1
    
  2. 列出已启用应用的文件夹中的应用。

    gcloud apphub applications list \
        --project=MANAGEMENT_PROJECT_ID \
        --location=REGION
    

    输出类似于以下内容:

    ID                DISPLAY_NAME              CREATE_TIME
    APPLICATION_NAME  APPLICATION_DISPLAY_NAME  2023-10-31T18:33:48
    

注册服务和工作负载

将基础架构服务和工作负载注册到应用后,这些服务和工作负载会注册为 App Hub 资源。使用全局应用注册全球性资源或分布在多个区域的资源。使用地区性应用注册与应用位于同一区域的资源。

控制台

  1. 在 Google Cloud 控制台中,前往 App Hub 的应用页面。

    打开“应用”

  2. 点击应用的名称。 系统会显示服务和工作负载标签页,其中列出了已启用应用的文件夹中的已注册服务和工作负载。

  3. 对于要注册的每项服务或工作负载,请执行以下操作:

    1. 服务和工作负载标签页上,点击注册服务/工作负载
    2. 注册服务或工作负载页面的选择资源窗格中,点击浏览,然后选择服务或工作负载作为资源
    3. 选择资源窗格中,选择一项服务或工作负载,然后点击选择
    4. 选择资源窗格中,为服务或工作负载输入名称,然后点击继续
    5. (可选)在添加属性窗格中,在后续字段中为服务或工作负载添加更多详细信息。如需了解详情,请参阅本文档中的创建应用部分。请注意,您可以为重要性环境字段选择与您在创建应用时设置的值不同的值。
    6. 点击继续
    7. 您可以选择在添加所有者部分中,在后续字段中添加有关服务或工作负载所有者的更多详细信息。如需了解详情,请参阅本文档中的创建应用部分。
    8. 点击注册

服务和工作负载标签页会显示已注册的服务或工作负载。如需详细了解注册状态,请参阅 App Hub 的属性和属性

gcloud

  1. 列出从启用了应用的文件夹中发现的服务。在以下命令中,您可以选择指定 filter 标志,以返回可注册到应用的指定项目中的服务。

    gcloud apphub discovered-services list \
        --filter='FILTER_RESOURCES' \
        --project=MANAGEMENT_PROJECT_ID \
        --location=REGION
    

    FILTER_RESOURCES 替换为过滤条件,例如:

    • service_properties.gcp_project=projects/PROJECT_ID
    • service_properties.gcp_project=projects/PROJECT_ID AND service_reference.uri~"forwardingRules" 输出类似于以下内容:
    ID                           SERVICE_REFERENCE                                                                                                                    SERVICE_PROPERTIES
    [DISCOVERED_SERVICE_ID]    {'uri': '//compute.googleapis.com/projects/[PROJECT_NUMBER]/regions/REGION/forwardingRules/forwarding-rule'}     {'gcpProject': 'projects/PROJECT_1', 'location': 'REGION'}
    

    从输出中复制服务 ID DISCOVERED_SERVICE_ID,以便在下一步中使用。

  2. 将转发规则 forwarding-rule-name 注册为应用的服务。

    gcloud apphub applications services create SERVICE_NAME \
        --discovered-service='projects/MANAGEMENT_PROJECT_ID/locations/REGION/discoveredServices/DISCOVERED_SERVICE' \
        --display-name='SERVICE_DISPLAY_NAME' \
        --application=APPLICATION_NAME \
        --criticality-type='CRITICALITY_LEVEL' \
        --environment-type='ENVIRONMENT' \
        --developer-owners=display-name=DISPLAY-NAME-DEVELOPER,email=EMAIL-DEVELOPER \
        --operator-owners=display-name=DISPLAY-NAME-OPERATOR,email=EMAIL-OPERATOR \
        --business-owners=display-name=DISPLAY-NAME-BUSINESS,email=EMAIL-BUSINESS \
        --project=MANAGEMENT_PROJECT_ID \
        --location=REGION
    

    替换以下内容:

    • SERVICE_NAME:用于注册服务的名称。
    • DISCOVERED_SERVICE_ID:上一步输出中的服务 ID。
    • SERVICE_DISPLAY_NAME:应用的显示名称。

    注意:

    • criticality-typeenvironment-type:(可选)您必须提供指定值之一,但这些值可以与您在创建应用时设置的值不同。如需了解详情,请参阅本文档中的创建应用部分。
    • developer-ownersoperator-ownersbusiness-owners:(可选)。如需了解详情,请参阅本文档中的创建应用部分。

    例如:

    gcloud apphub applications services create my-service \
        --display-name='mywebserver-service' \
        --application=my-application \
        --criticality-type='MEDIUM' \
        --environment-type='STAGING' \
        --developer-owners=display-name=developer-name,email=username@yourdomain \
        --folder=folder-ID \
        --location=us-east1
    
  3. 列出从启用了应用的文件夹中发现的工作负载。在以下命令中,您可以选择指定 filter 标志,以返回可注册到应用的指定项目中的工作负载。

    gcloud apphub discovered-workloads list \
        --filter='FILTER_RESOURCES' \
        --project=MANAGEMENT_PROJECT_ID \
        --location=REGION
    

    FILTER_RESOURCES 替换为过滤条件,例如 workload_properties.gcp_project=projects/PROJECT_ID

    您将看到类似如下所示的输出,其中包含未注册的 MIG:

    ID                           WORKLOAD_REFERENCE                                                                                                      WORKLOAD_PROPERTIES
    [DISCOVERED_WORKLOAD]   {'uri': '//compute.googleapis.com/projects/[PROJECT_NUMBER]/regions/REGION/instanceGroups/mig-name'}     {'gcpProject': 'projects/PROJECT', 'location': 'REGION'}
    

    复制输出中的工作负载 ID,以便在下一步中使用。

  4. 将项目中的 MIG mig-name 注册为应用的工作负载。

    gcloud apphub applications workloads create WORKLOAD_NAME \
        --discovered-workload='projects/MANAGEMENT_PROJECT_ID/locations/REGION/discoveredWorkloads/DISCOVERED_WORKLOAD_ID' \
        --display-name=WORKLOAD_DISPLAY_NAME' \
        --application=APPLICATION_NAME \
        --criticality-type='CRITICALITY_LEVEL' \
        --environment-type='ENVIRONMENT' \
        --developer-owners=display-name=DISPLAY-NAME-DEVELOPER,email=EMAIL-DEVELOPER \
        --operator-owners=display-name=DISPLAY-NAME-OPERATOR,email=EMAIL-OPERATOR \
        --business-owners=display-name=DISPLAY-NAME-BUSINESS,email=EMAIL-BUSINESS \
        --project=MANAGEMENT_PROJECT_ID \
        --location=REGION
    

    替换以下内容:

    • WORKLOAD_NAME:用于注册工作负载的名称。
    • DISCOVERED_WORKLOAD_ID:上一步输出中的工作负载 ID。
    • WORKLOAD_DISPLAY_NAME:应用的显示名称。

    注意:

    • criticality-typeenvironment-type:(可选)您必须提供指定值之一,但这些值可以与您在创建应用时设置的值不同。如需了解详情,请参阅本文档中的创建应用部分。
    • developer-ownersoperator-ownersbusiness-owners:(可选)。如需了解详情,请参阅本文档中的创建应用部分。

    例如:

    gcloud apphub applications workloads create my-workload \
        --display-name='mywebserver-deployment1' \
        --application=my-application \
        --criticality-type='MEDIUM' \
        --environment-type='STAGING' \
        --developer-owners=display-name=developer-name,email=username@yourdomain \
        --folder=folder-ID \
        --location=us-east1
    

App Hub 设置流程已完成。

添加或移除项目

您可以修改项目附件,以便将不同的基础架构资源分组到一个应用中。

控制台

将项目添加到已启用应用的文件夹

  1. In the Google Cloud console, go to the project selector page.

    Go to project selector

  2. Click Create project.

  3. Name your project. Make a note of your generated project ID.

  4. Edit the other fields as needed.

  5. Click Create.

从已启用应用的文件夹中移除项目

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

gcloud

将项目添加到已启用应用的文件夹

gcloud projects create PROJECT_ID \
    --folder FOLDER_ID

从已启用应用的文件夹中移除项目

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

后续步骤