设置 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 Editor 或 App Hub 查看者。
  5. 创建应用。
  6. 将服务和工作负载注册到应用。

服务和工作负载

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

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

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

App Hub 支持具有 HTTP 或 HTTPS 流量的区域级 L7 外部和内部应用负载平衡器。

您注册的工作负载和服务必须与应用位于同一区域;因此,后面的说明和命令假定所有资源都位于同一区域中。如需了解您可以指定哪些区域,请参阅位置

整体设置流程

以下列表总结了设置 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 Admin、App Hub Editor 和 App Hub Viewer。

请注意以下几点:

  • 宿主项目可以关联一个或多个服务项目。
  • 一个服务项目无法关联到多个宿主项目。
  • 将服务项目关联到宿主项目的人员必须在服务项目和宿主项目中拥有 App Hub Admin 的 IAM 角色。如需了解详情,请参阅 App Hub 角色和权限

设置 App Hub

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

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

  • 服务项目 1 有两个基础架构资源,即服务 1 和服务 2。
  • 服务项目 2 有三种基础架构资源,分别是服务 3、工作负载 1 和工作负载 2。
  • 服务项目 3 有三种基础架构资源,分别是 Service 4、工作负载 3 和工作负载 4。

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

以下部分介绍了如何创建 App Hub 示例。您可以创建宿主项目并将服务项目添加到宿主项目,然后创建应用并将服务和工作负载附加到应用。该示例包含三个服务项目,但您可以添加更少或更多。

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

启用 App Hub

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

控制台

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

    转到“项目选择器”

  2. 选择或创建一个 Google Cloud 项目,作为您的 App Hub 宿主项目。

  3. 启用所需的 API。

    启用 API

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

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

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

      转到 IAM

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

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

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

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

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

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

    前往“设置”

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

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

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

  9. 点击关闭

gcloud

  1. 在 Google Cloud 控制台中,激活 Cloud Shell。

    激活 Cloud Shell

    Cloud Shell 会话随即会在 Google Cloud 控制台的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。

  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)。默认情况下,此 Identity and Access Management (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. 将服务项目中的 App Hub Admin 角色授予管理 App Hub 的个人。他们必须具有 App Hub Admin 角色才能将服务项目添加到宿主项目。对于每个服务项目,至少需要一个人具有此角色。一个人可以在多个服务项目中拥有该角色。

      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
    

创建应用

如果您还没有应用,请创建一个应用作为服务和工作负载的容器。

控制台

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

    打开“应用”

  3. 点击创建应用。系统随即会显示创建应用窗格。

  4. 选择区域

  5. 输入 Application name,然后点击 Continue

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

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

  8. 点击创建

gcloud

  1. 创建一个名为 APPLICATION_NAME 的新应用,并为其指定显示名 APPLICATION_DISPLAY_NAME--scope-type 标志定义可向应用注册哪些服务和工作负载。仅支持 REGIONAL,这意味着只能注册与应用位于同一区域的服务和工作负载。

    gcloud apphub applications create APPLICATION_NAME \
      --display-name='APPLICATION_DISPLAY_NAME' \
      --scope-type=REGIONAL \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    请替换以下内容:

    • APPLICATION_NAME:应用的名称。名称必须包含小写字母数字字符,不含空格。
    • APPLICATION_DISPLAY_NAME:应用的显示名称。
    • REGION:应用的区域。将其设为 us-east1 值。
  2. 列出宿主项目中的应用。

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

    输出类似于以下内容:

    ID: APPLICATION_NAME
    DISPLAY_NAME: APPLICATION_DISPLAY_NAME
    CREATE_TIME: 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: REGIONAL
    state: ACTIVE
    uid: [APPLICATION_UID]
    updateTime: '2023-10-31T18:33:48.343303819Z'
    
    

更新现有 App Hub 应用

您还可以在创建应用后更新其属性。

控制台

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

    打开“应用”

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

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

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

    • 任务关键型
  5. 可选:在 Environment 字段中,如需指示软件生命周期的阶段,请选择以下选项之一:

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

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

  8. 点击保存

gcloud

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

    gcloud apphub applications update 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_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 格式,例如 robert.smith@example.com
  2. 列出属性 environment-type 的值为 PRODUCTION 的应用。

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

    输出类似于以下内容:

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

注册服务和工作负载

将基础架构服务和工作负载注册到应用时,服务和工作负载会注册为 App Hub 资源。如果您使用占位符通过 gcloud CLI 创建应用,则三个服务项目中的服务和工作负载如下所示:

  • 服务项目 1 有两个基础架构资源,即服务 1 和服务 2。
  • 服务项目 2 有三种基础架构资源,分别是服务 3、工作负载 1 和工作负载 2。
  • 服务项目 3 有三种基础架构资源,分别是 Service 4、工作负载 3 和工作负载 4。

控制台

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

    打开“应用”

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

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

    1. 服务和工作负载标签页上,点击注册服务/工作负载
    2. 注册服务或工作负载窗格的选择服务或工作负载部分中,选择相应服务或工作负载,然后点击继续
    3. 添加属性部分中,输入服务或工作负载的名称
    4. (可选)在后面的字段中添加服务或工作负载的更多详细信息。如需了解详情,请参阅本文档中的更新现有 App Hub 应用。请注意,您必须为重要性环境字段提供其中一个指定值,但该值可以与您创建应用时设置的值不同。
    5. 点击注册
    6. 刷新页面,查看服务或工作负载的注册状态更新为已注册。如需详细了解注册状态,请参阅 App Hub 的属性和特性

gcloud

  1. 添加具有 App Hub Editor 权限的用户。

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

    APP_HUB_EDITOR 替换为在宿主项目中具有 App Hub Editor 角色的用户。此值的格式为 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: [DISCOVERED_WORKLOAD_ID_1]
    WORKLOAD_REFERENCE: {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/regions/REGION/instanceGroups/testing-mig-1'}
    WORKLOAD_PROPERTIES: {'gcpProject': 'projects/SERVICE_PROJECT_2', 'location': 'REGION'}
    
    ID: [DISCOVERED_WORKLOAD_ID_2]
    WORKLOAD_REFERENCE: {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/regions/REGION/instanceGroups/testing-mig-2'}
    WORKLOAD_PROPERTIES: {'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 和所有者属性更新工作负载。

    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: WORKLOAD_NAME
    DISPLAY_NAME: mywebserver-deployment1
    WORKLOAD_REFERENCE: {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/regions/REGION/instanceGroups/testing-mig-2'}
    CREATE_TIME: 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: [DISCOVERED_SERVICE_ID_1]
    SERVICE_REFERENCE: {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/REGION/forwardingRules/testing-forwarding-rule-1'}
    SERVICE_PROPERTIES: {'gcpProject': 'projects/SERVICE_PROJECT_1', 'location': 'REGION'}
    
    ID: [DISCOVERED_SERVICE_ID_2]
    SERVICE_REFERENCE: {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/REGION/forwardingRules/testing-forwarding-rule-2'}
    SERVICE_PROPERTIES: {'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: SERVICE_NAME
    DISPLAY_NAME: mywebserver-service1
    SERVICE_REFERENCE: {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/REGION/forwardingRules/testing-forwarding-rule-2'}
    CREATE_TIME: 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. 选择正式版作为值。
        系统会显示生产环境中已注册到应用的服务和工作负载列表。

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

清理

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

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

控制台

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

    打开“应用”

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

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

    1. 服务和工作负载标签页的已注册的服务和工作负载部分中,点击要取消注册的服务或工作负载的名称。
    2. 在打开的已注册服务或工作负载的页面上,点击取消注册,以将服务或工作负载更新为已发现资源。
      服务和工作负载标签页上,系统会显示一条提醒来通知工作负载已取消注册。
    3. 针对每项服务和工作负载重复这些说明。
  4. 前往 App Hub 应用页面。

    打开“应用”

  5. 点击应用的名称。

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

  7. 在本文档中,请按照添加或移除服务项目中的说明从宿主项目中移除服务项目。

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. 重复上一条命令,从宿主项目中移除所有服务项目。

后续步骤