设置 App Hub

本文档介绍了如何设置 App Hub,以便在 Google Cloud 上构建、运行和管理应用。此文档面向设置和管理 App Hub 的人员。

如果您要设置 App Hub,主要任务如下:

  1. 确定是创建新的 App Hub 宿主项目,还是使用现有项目作为宿主项目。
    • 如果您打算创建多个宿主项目,我们强烈建议您在同一文件夹中创建这些项目。
    • App Hub 中的宿主项目不同于共享 VPC 宿主项目,也不具有相同的要求。例如,您无需共享 VPC 网络即可使用 App Hub。在本文档中,所有对宿主项目的引用均是指 App Hub 宿主项目。
    • 宿主项目不能是除自身以外的服务项目。
  2. 在宿主项目中启用 App Hub API。
  3. 将一个或多个 App Hub 服务项目添加到宿主项目。
    • App Hub 中的服务项目不同于共享 VPC 服务项目,也不具有相同的要求。在本文档中,对服务项目的所有引用均是指 App Hub 服务项目。
  4. 将 App Hub 用户指定为 App Hub 管理员、App Hub 编辑者或 App Hub 查看者。
  5. 创建应用。
  6. 将服务和工作负载注册到应用。

服务和工作负载

借助 App Hub,您可以将连接到宿主项目的服务项目中的资源作为服务和工作负载使用。将服务和工作负载注册到应用后,您就可以观察和监控这些资源。您可以将以下资源指定为 App Hub 服务,并将其注册到 App Hub 应用:

  • 转发规则
  • 网址映射
  • 后端服务

您可以将托管实例组 (MIG) 指定为工作负载,但不能将单个虚拟机指定为工作负载,并将其注册到 App Hub 应用。

App Hub 支持全球(预览版)和区域性资源。如需了解详情,请参阅 App Hub 支持的资源

整体设置流程

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

  1. 确定要将哪些现有资源添加到应用中以及它们所属的项目
  2. 创建一个 App Hub 宿主项目,并在该项目中启用 App Hub API。您还可以根据企业的组织结构,创建多个宿主项目。如果您要创建多个项目,我们建议您在新文件夹中创建这些项目。
  3. 关联服务项目。配置宿主项目后,将包含应用所需底层资源的服务项目附加到宿主项目。请注意以下几点:
    1. 服务项目必须与宿主项目位于同一组织中。将服务项目附加到宿主项目后,您便无法将其移至其他组织。如需将服务项目移至其他组织,您必须按照本文档中的说明移除或解除服务项目与宿主项目的关联。然后,您可以将服务项目附加到其他组织。
    2. 一个服务项目不能关联到多个宿主项目。
    3. 宿主项目可以是自己的服务项目,但不能是任何其他宿主项目的服务项目。
    4. 将服务项目附加到宿主项目后,查询宿主项目中的服务或工作负载会自动返回所有服务项目中的所有服务和工作负载。
  4. 创建应用来整理多个工作负载和服务。请注意以下事项:
    1. 确保应用在宿主项目和位置中具有唯一的名称。
    2. 服务项目可以附加到包含多个应用的宿主项目,但其各个资源只能注册到一个应用。
  5. 查询服务和工作负载并将其注册到您的应用。创建应用后,您可以查询宿主项目以了解可用服务和工作负载。这些查询会针对宿主项目以及关联到宿主项目的所有服务项目运行。它们还会返回这些项目中的所有服务和工作负载。请注意以下几点:
    1. 您只能将服务或工作负载注册到单个应用。
    2. 您必须将特定区域的服务和工作负载注册到同一区域内的区域性应用或全球性应用。以下说明和命令假定所有资源都在同一区域。如需了解您可以指定哪些区域,请参阅位置
    3. 已注册的服务和工作负载不会受到底层基础架构资源更新的影响。换句话说,如果您删除用作服务和工作负载的基础资源,App Hub 不会从您的应用中删除关联的工作负载和服务。您必须单独取消注册工作负载或服务。

前提条件

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

  1. 确定哪个现有项目是宿主项目,或创建一个新项目作为宿主项目。我们强烈建议您创建一个新项目。
  2. 确保您已确定哪些用户拥有 App Hub 的 Identity and Access Management (IAM) 角色:App Hub 管理员、App Hub 编辑者和 App Hub 查看者。

请注意以下几点:

  • 宿主项目可以关联一个或多个服务项目。
  • 一个服务项目不能关联到多个宿主项目。
  • 将服务项目附加到宿主项目的用户必须同时在服务项目和宿主项目中拥有 IAM 角色“App Hub Admin”。如需了解详情,请参阅 App Hub 角色和权限

设置 App Hub

在本部分中,您将创建一个 App Hub 架构示例。

在此示例中,某个组织有三个服务项目,其基础架构资源在这些项目中部署如下:

  • 服务项目 1 包含两个基础架构资源,即服务 1 和服务 2。
  • 服务项目 2 包含三个基础架构资源:服务 3、工作负载 1 和工作负载 2。
  • 服务项目 3 包含三个基础架构资源:服务 4、工作负载 3 和工作负载 4。

确保您为创建示例而选择的项目包含本部分中所述的资源,或者准备好在按照说明操作时调整示例。

以下部分包含有关创建 App Hub 示例的说明。您需要创建一个宿主项目并将服务项目添加到该宿主项目,然后创建应用并将服务和工作负载附加到该应用。该示例包含三个服务项目,但您可以添加更多或更少的服务项目。

该示例假定您添加的所有服务项目都已存在,并且包含您添加到应用中的服务和工作负载。在创建示例之前,请确定哪些服务项目包含您要添加到应用中的服务和工作负载。

启用 App Hub

在本部分中,您将选择或创建新的宿主项目、启用 App Hub API,并向组织中的个人授予适当的角色和权限。您还可以将服务项目关联到宿主项目。

控制台

  1. 在 Google Cloud Console 中,转到项目选择器页面。

    转到“项目选择器”

  2. 选择或创建 Google Cloud 项目,以用作 App Hub 托管项目。

  3. Enable the required API.

    Enable the API

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

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

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

      转到 IAM

    2. 点击 授予访问权限。 此时会打开授予访问权限窗格。

    3. 新主账号字段中,输入将负责管理 App Hub 的个人(托管项目中的 App Hub 管理员角色)的电子邮件地址。

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

    5. 选择“App Hub Admin”角色,然后点击保存

    6. 在每个 App Hub 服务项目中,向同一用户授予 App Hub 管理员角色。

  5. 在 Google Cloud 控制台中,前往 App Hub 设置页面。

    前往“设置”

  6. 设置页面上,点击关联项目

  7. 执行下列其中一项操作:

    • 在项目列表中,选中要添加为服务项目的项目对应的复选框。
    • 搜索项目,然后选择要添加为服务项目的项目。
  8. 点击选择已关联的服务项目表会显示所选的服务项目。

  9. 点击关闭

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. 创建或选择一个新项目 HOST_PROJECT_ID,将其用作 App Hub 的宿主项目。

    • 创建 Google Cloud 项目:
      gcloud projects create HOST_PROJECT_ID
    • 选择您创建的 Google Cloud 项目:
      gcloud config set project HOST_PROJECT_ID
  4. 在您刚刚创建的宿主项目中启用 App Hub API。

    gcloud services enable apphub.googleapis.com \
        --project=HOST_PROJECT_ID
    
  5. 如果您是项目创建者,则会被授予基本 Owner 角色 (roles/owner)。默认情况下,此 IAM 角色包含对大多数 Google Cloud 资源的完整访问权限。

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

    1. (可选)向将管理 App Hub 的用户授予宿主项目中的 App Hub 管理员角色。针对每位管理员重复以下命令。

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

      HOST_PROJECT_ADMIN 替换为在宿主项目中具有 App Hub Admin 角色的用户。此值的格式为 username@yourdomain,例如 robert.smith@example.com

    2. 向管理 API Hub 的用户授予服务项目中的“API Hub 管理员”角色。他们必须拥有应用中心管理员角色,才能将服务项目添加到宿主项目。每个服务项目都需要至少有一位用户拥有此角色。一个人可以在多个服务项目中拥有此角色。

      gcloud projects add-iam-policy-binding SERVICE_PROJECT_1 \
          --member='user:HOST_PROJECT_ADMIN' \
          --role='roles/apphub.admin'
      
      gcloud projects add-iam-policy-binding SERVICE_PROJECT_2 \
          --member='user:HOST_PROJECT_ADMIN' \
          --role='roles/apphub.admin'
      
      gcloud projects add-iam-policy-binding SERVICE_PROJECT_3 \
          --member='user:HOST_PROJECT_ADMIN' \
          --role='roles/apphub.admin'
      

      替换以下内容:

      • SERVICE_PROJECT_1:本例中三个服务项目中的第一个。
      • SERVICE_PROJECT_2:本例中三个服务项目中的第二个。
      • SERVICE_PROJECT_3:本例中三个服务项目中的第三个。
  6. 将您的服务项目添加到 App Hub 宿主项目。

    gcloud apphub service-projects add SERVICE_PROJECT_1 \
        --project=HOST_PROJECT_ID
    
    gcloud apphub service-projects add SERVICE_PROJECT_2 \
        --project=HOST_PROJECT_ID
    
    gcloud apphub service-projects add SERVICE_PROJECT_3 \
        --project=HOST_PROJECT_ID
    

可选:将服务项目添加到宿主项目的指标范围

您可以将服务项目作为资源容器添加到宿主项目的指标范围,以查看宿主项目中应用的系统指标。App Hub 宿主项目充当托管指标范围范围限定项目。Google Cloud 项目的指标范围定义了一组资源容器,宿主项目可以绘制和监控这些容器的时间序列数据。如需详细了解资源容器、指标范围和范围限定项目,请参阅 Cloud Monitoring:数据模型

如需查看应用的系统指标,您必须根据需要从宿主项目中手动添加或删除受监控的服务项目。不过,如果您将宿主项目用作自己的服务项目,由于 App Hub 应用位于同一项目中,因此请勿将该项目添加到指标范围。

确保您拥有以下 IAM 角色:

控制台

  1. 在 Google Cloud 控制台中,转到 设置页面:

    前往设置

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 选择指标范围

    Metric Scope(指标范围)标签页列出了当前 Google Cloud 项目监控的资源。它还会列出其指标范围包含当前 Google Cloud 项目的 Google Cloud 项目。

  3. 如需将 Google Cloud 项目添加到指标范围,请执行以下操作:

    1. Google Cloud 项目窗格中,点击添加项目
    2. 添加 Google Cloud 项目对话框中,点击选择项目,然后选中要监控的所需服务项目对应的复选框。
    3. 点击添加项目保存更改。

      系统随即会显示设置页面,其中该页面上的表格会更新为列出您的选择。

将项目添加到指标范围后,更改大约需要 60 秒才能传播到所有 Monitoring 系统。

如需详细了解如何使用 Google Cloud 控制台配置指标范围,请参阅配置指标范围

gcloud

如需将服务项目作为受监控的资源容器添加到 App Hub 宿主项目,请执行以下操作:

gcloud beta monitoring metrics-scopes create projects/SERVICE_PROJECT_1 \
    --project=HOST_PROJECT_ID
gcloud beta monitoring metrics-scopes create projects/SERVICE_PROJECT_2 \
    --project=HOST_PROJECT_ID
gcloud beta monitoring metrics-scopes create projects/SERVICE_PROJECT_3 \
    --project=HOST_PROJECT_ID

如需详细了解如何使用 Google Cloud CLI 配置指标范围,请参阅使用 API 配置指标范围

创建应用

如果您还没有应用,请创建一个应用来充当服务和工作负载的容器。根据服务项目中的服务和工作负载的范围,创建全球(预览版)或区域应用。

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

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

控制台

  1. 请确保您位于宿主项目中。
  2. 在 Google Cloud 控制台中,前往 App Hub 的应用页面。

    打开“应用”

  3. 点击创建应用

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

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

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

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

  6. (可选)在以下字段中为应用添加更多详细信息。如需了解详情,请参阅本文档中的更新现有 App Hub 应用

  7. 点击创建

gcloud

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

    gcloud apphub applications create APPLICATION_NAME \
      --scope-type=SCOPE_TYPE \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    替换以下内容:

    • APPLICATION_NAME:应用的名称。名称只能包含小写字母数字字符,且不得包含空格。
    • SCOPE_TYPE:应用的范围,用于定义您可以向应用注册哪些服务和工作负载。请使用以下某个值:
    • REGION:应用的区域。根据 --scope-type,为其赋值 us-east1global预览版)。
  2. 列出宿主项目中的应用。

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

    输出类似于以下内容:

    ID                DISPLAY_NAME              CREATE_TIME
    APPLICATION_NAME  APPLICATION_DISPLAY_NAME  2023-10-31T18:33:48
    
  3. 获取您创建的应用的详细信息。

    gcloud apphub applications describe APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    该命令会以 YAML 格式返回信息,类似于以下内容。

    createTime: '2023-10-31T18:33:48.199394108Z'
    displayName: APPLICATION_DISPLAY_NAME
    name: projects/HOST_PROJECT_ID/locations/REGION/applications/APPLICATION_NAME
    scope:
      type: SCOPE_TYPE
    state: ACTIVE
    uid: [APPLICATION_UID]
    updateTime: '2023-10-31T18:33:48.343303819Z'
    
    

更新现有的 App Hub 应用

您也可以在应用创建后更新应用的属性。

控制台

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

    打开“应用”

  2. 在应用列表中,针对您要更新的应用点击 修改

  3. 根据需要修改字段,然后点击保存

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

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

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

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

  8. 点击保存

gcloud

  1. 使用 criticality-typeenvironment-type 和所有者类型属性更新您的应用:

    gcloud apphub applications update APPLICATION_NAME \
      --display-name='APPLICATION_DISPLAY_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=HOST_PROJECT_ID \
      --location=REGION
    

    替换以下内容:

    • APPLICATION_DISPLAY_NAME:应用的显示名称。
    • 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
  2. 列出属性 environment-type 的值为 PRODUCTION 的应用。

    gcloud apphub applications list \
        --filter='attributes.environment.type=PRODUCTION' \
        --project=HOST_PROJECT_ID \
        --location=REGION
    

    输出类似于以下内容:

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

注册服务和工作负载

将基础架构服务和工作负载注册到应用后,这些服务和工作负载会注册为 App Hub 资源。使用全球应用(预览版)注册全球性资源或分布在多个区域的资源。使用地区性应用注册与应用位于同一区域的资源。如果您使用占位符通过 gcloud CLI 创建应用,则三个服务项目中的服务和工作负载如下所示:

  • 服务项目 1 包含两个基础架构资源,即服务 1 和服务 2。
  • 服务项目 2 包含三个基础架构资源:服务 3、工作负载 1 和工作负载 2。
  • 服务项目 3 包含三个基础架构资源:服务 4、工作负载 3 和工作负载 4。

控制台

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

    打开“应用”

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

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

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

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

gcloud

  1. 添加具有 App Hub 编辑器权限的个人。

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
      --member='user:APP_HUB_EDITOR' \
      --role='roles/apphub.editor'
    

    APP_HUB_EDITOR 替换为在宿主项目中具有 App Hub 编辑者角色的用户。此值的格式为 username@yourdomain,例如 robert.smith@example.com

  2. 列出已关联到宿主项目的服务项目 2 中发现的工作负载。此命令会返回可注册到应用的工作负载。

    gcloud apphub discovered-workloads list \
      --filter='workload_properties.gcp_project=projects/SERVICE_PROJECT_2' \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    输出类似于以下内容,其中包含未注册的 MIG:

    ID                           WORKLOAD_REFERENCE                                                                                                      WORKLOAD_PROPERTIES
    [DISCOVERED_WORKLOAD_ID_1]   {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/regions/REGION/instanceGroups/testing-mig-1'}     {'gcpProject': 'projects/SERVICE_PROJECT_2', 'location': 'REGION'}
    [DISCOVERED_WORKLOAD_ID_2]   {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/regions/REGION/instanceGroups/testing-mig-2'}     {'gcpProject': 'projects/SERVICE_PROJECT_2', 'location': 'REGION'}
    

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

  3. 将上一步中的工作负载注册到您的应用。

    gcloud apphub applications workloads create WORKLOAD_NAME \
      --discovered-workload='projects/HOST_PROJECT_ID/locations/REGION/discoveredWorkloads/DISCOVERED_WORKLOAD_ID_2' \
      --display-name='mywebserver-deployment1' \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    替换以下内容:

    • WORKLOAD_NAME:用于注册工作负载的名称。
    • DISCOVERED_WORKLOAD_ID_2:上一步输出中的工作负载 ID。
  4. 重复前两个步骤,从服务项目 3 中过滤和注册所需的工作负载。

  5. 可选操作:您可以使用 criticality-typeenvironment-type 和 owner 属性更新工作负载。

    gcloud apphub applications workloads update WORKLOAD_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=HOST_PROJECT_ID \
      --location=REGION
    

    请注意,您必须为 criticality-typeenvironment-type 提供指定的值之一,但该值可以与您在创建应用时设置的值不同。

  6. 列出应用中已注册的工作负载。

    gcloud apphub applications workloads list \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    输出类似于以下内容:

    ID                DISPLAY_NAME                 WORKLOAD_REFERENCE                                                                                                    CREATE_TIME
    WORKLOAD_NAME     mywebserver-deployment1      {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/regions/REGION/instanceGroups/testing-mig-2'}   2023-10-31T18:34:23
    

    已注册但已分离的工作负载由 WORKLOAD_REFERENCE 字段中的空值表示。如需详细了解注册状态,请参阅 App Hub 的属性和特性

  7. 在已关联到宿主项目的服务项目 1 中列出发现的具有转发规则的服务。此命令会返回可注册到应用的服务。

    gcloud apphub discovered-services list \
      --filter='service_properties.gcp_project=projects/SERVICE_PROJECT_1 AND service_reference.uri~"forwardingRules"' \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    输出类似于以下内容:

    ID                           SERVICE_REFERENCE                                                                                                                    SERVICE_PROPERTIES
    [DISCOVERED_SERVICE_ID_1]    {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/REGION/forwardingRules/testing-forwarding-rule-1'}     {'gcpProject': 'projects/SERVICE_PROJECT_1', 'location': 'REGION'}
    [DISCOVERED_SERVICE_ID_2]    {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/REGION/forwardingRules/testing-forwarding-rule-2'}     {'gcpProject': 'projects/SERVICE_PROJECT_1', 'location': 'REGION'}
    

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

  8. 将服务项目 1 中的转发规则 testing-forwarding-rule-2 注册为服务。

    gcloud apphub applications services create SERVICE_NAME \
      --discovered-service='projects/HOST_PROJECT_ID/locations/REGION/discoveredServices/DISCOVERED_SERVICE_ID_2' \
      --display-name='mywebserver-service1' \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    替换以下内容:

    • SERVICE_NAME:用于注册服务的名称。
    • DISCOVERED_SERVICE_ID_2:上一步输出中的服务 ID。
  9. 重复执行上述列出服务、过滤这些服务以及在服务项目 1、2 和 3 中注册服务的步骤。

  10. 使用 criticality-type 属性和 environment-type 属性更新服务。

    gcloud apphub applications services update SERVICE_NAME \
      --criticality-type='CRITICALITY_LEVEL' \
      --environment-type='ENVIRONMENT' \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID  \
      --location=REGION
    
  11. 列出 APPLICATION_NAME 应用和 HOST_PROJECT_ID 宿主项目中的已注册服务。

    gcloud apphub applications services list \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    每个服务的输出类似于以下内容:

    ID                DISPLAY_NAME                 SERVICE_REFERENCE                                                                                                                  CREATE_TIME
    SERVICE_NAME      mywebserver-service1         {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/REGION/forwardingRules/testing-forwarding-rule-2'}   2023-11-01T21:38:08
    

    已注册但已分离的服务由 SERVICE_REFERENCE 字段中的空值表示。

  12. APPLICATION_NAME 应用和 HOST_PROJECT_ID 宿主项目中的服务过滤为 environment-type 属性设置为 PRODUCTION 的服务。

    gcloud apphub applications services list \
      --filter='attributes.environment.type=PRODUCTION' \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

App Hub 设置流程已完成。

添加或移除服务项目

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

如需查看宿主项目中应用的系统指标,请在将服务项目添加到宿主项目后,将服务项目作为资源容器添加到宿主项目的指标范围。如需了解详情,请参阅本文档中的将服务项目添加到托管项目的指标范围。从宿主项目中移除服务项目时,请考虑从宿主项目的指标范围中移除作为资源容器的服务项目(如果您之前选择查看宿主项目中应用的系统指标)。如需了解详情,请参阅本文档中从宿主项目的指标范围中移除服务项目的步骤。

控制台

如需向宿主项目添加服务项目,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 App Hub 设置页面。

    前往“设置”

  2. 设置页面上,点击关联项目

  3. 在随即打开的窗格中,从显示的列表中搜索项目,然后选中要添加为服务项目的项目对应的复选框。

  4. 点击选择已关联的服务项目表会将所选项目显示为宿主项目的服务项目。

  5. 点击关闭

如需从宿主项目中移除服务项目,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 App Hub 设置页面。

    前往“设置”

  2. 设置页面上,选中要移除作为服务项目的所有项目对应的复选框。

  3. 点击分离项目已关联的服务项目表格会刷新,仅显示仍与宿主项目关联的项目。

gcloud

如需向宿主项目添加服务项目,请执行以下操作:

gcloud apphub service-projects add SERVICE_PROJECT_ID \
   --project=HOST_PROJECT_ID
SERVICE_PROJECT_ID 替换为您要添加到宿主项目中的服务项目的名称。
如需从宿主项目中移除服务项目,请执行以下操作:
gcloud apphub service-projects remove SERVICE_PROJECT_ID \
   --project=HOST_PROJECT_ID

查看现有应用、服务和工作负载

您可以查看项目中的应用,并列出应用中的服务和工作负载。

控制台

  • 如需查看项目中的应用,请在 Google Cloud 控制台中前往 App Hub 的应用页面。

    打开“应用”

  • 如需列出服务和工作负载,请执行以下操作:

    应用

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

      打开“应用”

    2. 点击应用的名称。 系统会显示一个页面,其中列出了已注册到应用的服务和工作负载。

    3. 可选:如需过滤服务或工作负载,请执行以下操作:

      1. 过滤条件字段中,选择一个过滤条件,例如重要性
      2. 选择作为值。
        系统会显示已注册到应用的高重要性服务和工作负载的列表。

    服务和工作负载

    1. 在 Google Cloud 控制台中,前往 App Hub 的服务和工作负载页面。

      前往“服务和工作负载”页面

    2. 区域列表中,选择您要查看服务和工作负载所在的区域。例如,选择 us-east1
      “服务和工作负载”页面会显示与 us-east1 关联的已关联服务项目中的所有服务和工作负载。

    3. 可选:如需过滤服务或工作负载,请执行以下操作:

      1. 过滤条件字段中,选择一个过滤条件,例如环境
      2. 选择 Production 作为值。
        系统会显示已注册到应用的生产环境中的服务和工作负载的列表。

gcloud

如需查看项目中的应用,请执行以下操作:

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

如需列出应用中已注册的服务,请执行以下操作:

gcloud apphub applications services list \
    --application=APPLICATION_NAME \
    --project=HOST_PROJECT_ID \
    --location=REGION

如需列出应用中已注册的工作负载,请执行以下操作:

gcloud apphub applications workloads list \
    --application=APPLICATION_NAME \
    --project=HOST_PROJECT_ID \
    --location=REGION

可选:查看应用指标

您可以查看在 App Hub 托管项目中创建的应用的系统指标。这些指标对应于黄金信号(流量、错误、延迟时间和饱和度),有助于监控应用的性能和运行状况。

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

    打开“应用”

  2. 点击应用的名称。

    系统会显示服务和工作负载标签页,其中包含已注册到应用的服务和工作负载的元数据。

  3. 可选:如需更改指标的显示时间段,请使用时间范围选择器。默认时间范围为 1 小时

  4. 如需查看已注册服务和工作负载的系统指标,请点击 bar_chart Metrics(指标)。

    系统会显示一个表格,其中包含以下黄金信号:

    • 流量:所选时间段内资源的传入请求速率。
    • 服务器错误率:在所选时间段内,生成 5xx 系列 HTTP 错误代码的传入请求所占的平均百分比。
    • P95 延迟时间:所选时间段内服务请求的延迟时间第 95 百分位(以毫秒为单位)。
    • CPU 利用率:工作负载的平均 CPU 利用率,按指定时间段汇总。值通常介于 0.0 到 100.0 之间,但也可能超过 100.0。
    • 内存利用率:工作负载的内存利用率平均百分比,按指定时间段汇总。

可选:使用图表探索指标

如需为您的 App Hub 项目绘制指标图表,请使用 Metrics Explorer。您可以应用基于标签的过滤条件,以限制图表中显示的数据。如需了解详情,请参阅使用 Metrics Explorer 创建图表

您可以按以下 App Hub 系统元数据标签进行过滤(预览版):

  • apphub_application_host_project_id
  • apphub_application_id
  • apphub_application_location
  • apphub_workload_criticality_type
  • apphub_workload_environment_type
  • apphub_workload_id

如需在图表中直观呈现 App Hub 元数据标签,请按照以下说明操作。对于其他系统元数据标签和 App Hub 指标,您可以遵循相同的步骤。

  1. 在 Google Cloud 控制台中,转到 Metrics Explorer 页面:

    进入 Metrics Explorer

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 指标元素中,展开选择指标菜单,在过滤栏中输入 VM Instance,然后使用子菜单选择一个特定资源类型和指标:
    1. 活跃资源菜单中,选择虚拟机实例
    2. 活跃指标类别菜单中,选择热门指标
    3. 活跃指标菜单中,选择 CPU 利用率
    4. 点击应用
    此指标的完全限定名称为 compute.googleapis.com/instance/cpu/utilization
  3. 配置数据的查看方式。如需仅显示特定标签的指标,请按照以下步骤操作:
    1. 过滤条件元素中,点击添加过滤条件,然后选择 apphub_application_id。对于该值,请输入特定的应用中心名称。
    2. 汇总条目中,将第一个菜单设置为不汇总

    如需详细了解如何配置图表,请参阅使用 Metrics Explorer 时选择指标

清理

清理现有应用,并从宿主项目中移除服务项目附件,以移除与项目关联的资源。这会停止在服务项目中自动发现资源。

为此,您必须先删除已注册到该应用的工作负载和服务。

控制台

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

    打开“应用”

  2. 点击应用的名称。 系统会显示已注册到该应用的服务和工作负载的列表。

  3. 取消注册服务或工作负载。

    1. 服务和工作负载标签页的已注册的服务和工作负载部分中,点击要取消注册的服务或工作负载的名称。
    2. 详细信息标签页中,点击取消注册,将服务或工作负载更新为已发现资源。
      服务和工作负载标签页中,系统会显示一条提醒,告知您工作负载未注册。
    3. 针对每项服务和工作负载重复这些说明。
  4. 前往应用中心的应用页面。

    打开“应用”

  5. 点击应用的名称。

  6. 在显示应用详情的页面上,点击删除

  7. 如需从宿主项目中移除服务项目,请参阅本文档的添加或移除服务项目部分。

  8. 如需从宿主项目的指标范围中移除服务项目,请执行以下操作:

    1. 在 Google Cloud 控制台中,转到 设置页面:

      前往设置

      如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

    2. 选择指标范围
    3. Google Cloud 项目窗格中,点击移除项目,然后完成确认对话框。

gcloud

  1. 列出应用中已注册的工作负载:

    gcloud apphub applications workloads list \
      --application=APPLICATION_NAME --project=HOST_PROJECT_ID \
      --location=REGION
    
  2. 从应用中取消注册工作负载:

    gcloud apphub applications workloads delete WORKLOAD_NAME \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    该工作负载现在是一项已发现的工作负载,可以注册到应用。

  3. 重复前面的命令,从应用中删除其余已注册的工作负载。

  4. 列出应用中已注册的服务:

    gcloud apphub applications services list \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    
  5. 从应用中取消注册服务:

    gcloud apphub applications services delete SERVICE_NAME \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    该服务现在是可注册到应用的已发现服务。

  6. 重复上述命令,从应用中取消注册其余已注册的服务。

  7. 删除应用:

    gcloud apphub applications delete APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    
  8. 从宿主项目中移除服务项目:

    gcloud apphub service-projects remove SERVICE_PROJECT_ID \
      --project=HOST_PROJECT_ID
    
  9. 重复执行上一个命令,从宿主项目中移除所有服务项目。

  10. 从宿主项目的指标范围中移除服务项目(预览版):

    gcloud beta monitoring metrics-scopes delete projects/SERVICE_PROJECT_ID \
      --project=HOST_PROJECT_ID
    
  11. 重复执行上一个命令,从指标范围宿主项目中移除所有服务项目。

后续步骤