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

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

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

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

服务和工作负载

借助 App Hub,您可以将已启用应用的文件夹的后代 Google Cloud 项目中的资源作为服务和工作负载来使用。将服务和工作负载注册到应用后,您便可以观测和监控这些资源。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 角色和权限

所需的角色

如需获得修改应用中心资源所需的权限,请让管理员向您授予已启用应用的文件夹的以下 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 页面。

    前往应用中心

  2. 根据以下情形,请按照以下步骤操作:

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

    在文件夹中启用应用管理功能会创建一个 Google 拥有的项目,称为管理项目,其格式如下:FOLDER_DISPLAY_NAME-mp。管理项目托管已启用应用的文件夹的后代项目,并有助于管理跨项目功能。您现在可以为启用应用的文件夹中的后代项目创建 App Hub 应用。

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

指定 App Hub 用户

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

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

控制台

  1. 在 Google Cloud 控制台中,前往 IAM 页面。

    转到 IAM

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

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

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

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

  6. 选择 App Hub 管理员角色,然后点击保存

  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 控制台的 Identity and Access Management (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. 可选:在环境列表中,选择以下选项之一以指明软件生命周期的阶段:

    • 生产
    • Staging
    • 开发
    • 测试
  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

后续步骤