将现有资源注册到应用

通过在 App Hub 应用中将现有 Google Cloud 资源注册为服务工作负载,您可以根据资源的业务用途整理资源,从而简化管理。这种方法可提供统一的可见性、监控、治理和运营控制。

本指南介绍了如何对尚未正式定义为应用的现有 Google Cloud 资源进行分组。

准备工作

您必须先完成应用管理的初始设置,然后才能将资源整理到应用中。此流程通常涉及以下角色和步骤:

创建应用

在 App Hub 中创建一个应用,作为现有 Google Cloud 资源的逻辑容器:

控制台

  1. 在 Google Cloud 控制台中,使用项目选择器选择您的管理项目。

  2. 通过 App Hub 前往应用页面:

    打开“应用”

  3. 点击 创建应用

  4. 应用详情标签页中,根据您的地理分布要求,为应用选择最合适的位置:

    • 选择全局以创建全局应用。
    • 选择区域级以创建区域级应用。然后,根据 App Hub 支持的区域,为您的应用选择特定区域。

    如需详细了解应用的最佳位置,请参阅全球应用和区域应用

  5. 输入应用的名称。

    此名称是唯一标识符,只能包含小写字母、数字或连字符。应用创建后,您将无法更改此名称。

  6. (可选)为应用添加显示名称和说明。

    这些不是唯一标识符,您可以在创建应用后更改它们。

  7. 点击继续

  8. 应用资源标签页中,浏览基础架构资源,然后选中要注册为应用的服务和工作负载的资源对应的复选框。

    您一次最多可以选择 10 个资源。

  9. 点击继续

  10. 属性和所有者标签页中,您可以为应用添加属性,例如重要性、环境和应用所有者。

    您可以选择为要向应用注册的资源使用相同的属性和所有者,也可以稍后定义这些属性和所有者

  11. 点击创建

创建应用后,应用页面会显示其详细信息,包括您注册为服务和工作负载的资源。创建应用后,您可以向其注册更多服务和工作负载

gcloud

  1. 使用 Google Cloud CLI 通过终端或 Cloud Shell 创建应用:

    gcloud apphub applications create APPLICATION_NAME \
      --project=PROJECT_ID \
      --scope-type=LOCATION \
      --location=REGION \
      --display-name=DISPLAY_NAME \
      --criticality-type=CRITICALITY \
      --environment-type=ENVIRONMENT \
      --developer-owners=display-name=DEV_NAME,email=DEV_EMAIL \
      --operator-owners=display-name=OPERATOR_NAME,email=OPERATOR_EMAIL \
      --business-owners=display-name=BUSINESS_NAME,email=BUSINESS_EMAIL
    

    APPLICATION_NAME 替换为应用的名称。此名称是唯一标识符,只能包含小写字母、数字或连字符。

    使用 --criticality-type 等可选标志来定义应用的顶级属性,并支持可发现性和治理。

    对于必需标志和可选标志,请替换以下内容:

    • 必需:PROJECT_ID:管理项目的 ID。
    • 必需:LOCATION:根据您的地理分布要求,应用的位置。请使用以下某个值:

      • REGIONAL 适用于区域应用。
      • GLOBAL(适用于全球应用)。

      如需详细了解应用的最佳位置,请参阅全球应用和区域应用

    • 必需:REGION:应用的特定区域。请使用以下某个值:

      • 如果应用的 --scope-type 位置设置为 REGIONAL,请指定受 App Hub 支持的区域名称
      • 如果应用的 --scope-type 位置设置为 GLOBAL,请使用 global
    • 可选:DISPLAY_NAME:应用的显示名称。显示名称不是唯一标识符,您可以在创建应用后更改它。

    • 可选:CRITICALITY:应用对操作的重要性级别。请使用以下某个值:

      • MISSION_CRITICAL
      • HIGH
      • MEDIUM
      • LOW
    • 可选:ENVIRONMENT:软件生命周期的阶段。请使用以下某个值:

      • PRODUCTION
      • STAGING
      • DEVELOPMENT
      • TEST
    • 可选:DEV_NAMEDEV_EMAIL:开发者所有者的显示名称和电子邮件地址(分别)。

    • 可选:OPERATOR_NAMEOPERATOR_EMAIL:分别是运营商所有者的显示名称和电子邮件地址。

    • 可选:BUSINESS_NAMEBUSINESS_EMAIL:商家所有者的显示名称和电子邮件地址(分别)。

  2. 列出项目中的应用:

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

    您必须获得类似如下所示的输出:

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

Terraform

如需使用 Terraform 创建应用,请使用google_apphub_application 资源。此资源可让您定义应用的属性,包括其名称、位置和属性。

以下示例在 us-central1 中创建了一个区域级应用,并定义了严重程度、环境和所有者属性:

resource "google_apphub_application" "example" {
    project        = "my-project-id"
    location       = "us-central1"
    application_id = "my-application"
    display_name   = "My Application"
    description    = "This application represents our platform."
    scope {
        type = "REGIONAL"
    }
    attributes {
        criticality {
            type = "MISSION_CRITICAL"
        }
        environment {
            type = "PRODUCTION"
        }
        business_owners {
            display_name = "Alice"
            email        = "alice@example.com"
        }
        developer_owners {
            display_name = "Bob"
            email        = "bob@example.com"
        }
        operator_owners {
            display_name = "Charlie"
            email        = "charlie@example.com"
        }
    }
}

注册服务和工作负载

借助 App Hub,您可以选择应用管理边界内的受支持的资源,将其注册为服务和工作负载。创建应用后,您可以在其中注册 Google Cloud资源作为服务和工作负载。

您只能将独占服务注册到一项应用。不过,共享服务可以注册到多个应用。即使共享服务已注册到其他应用,当您将其注册到某个应用时,App Hub 也会发现这些服务,但您可能无法修改其属性。

控制台

创建应用后,您可以向其注册多个资源:

  1. 在 Google Cloud 控制台中,使用项目选择器选择您的管理项目。

  2. 通过 App Hub 前往应用页面:

    打开“应用”

  3. 点击要为其注册Google Cloud 资源的应用的名称。

  4. 在应用的页面中,选择服务和工作负载标签页。

  5. 点击 注册服务或工作负载

  6. 服务和工作负载标签页中,浏览基础架构资源,然后选中要注册为应用的服务或工作负载的资源的复选框。

    您一次最多可以选择 10 个资源。

  7. 点击继续

  8. 属性和所有者标签页中,您可以为这些资源添加属性,例如重要性、环境和资源所有者。

    您可以选择使用应用中的相同属性和所有者,也可以选择稍后定义不同的属性

  9. 点击注册

服务和工作负载标签页会显示应用的所有已注册服务和工作负载。

gcloud

借助 App Hub,您可以选择应用管理边界内的受支持的资源作为服务或工作负载。使用 Google Cloud CLI 从终端或 Cloud Shell 列出可向应用注册的服务或工作负载。服务和工作负载的命令略有不同:

注册服务

  1. 列出可注册到应用中的可用服务:

    gcloud apphub discovered-services list \
      --project=PROJECT_ID \
      --location=REGION \
      --filter=FILTER_EXPRESSION
    

    对于必需标志和可选标志,请替换以下内容:

    • 必需:PROJECT_ID:管理项目的 ID。
    • 必需:REGION:根据您的地理分布情况,您的服务的具体区域。请使用以下某个值:

    • 可选:FILTER_EXPRESSION--filter 标志的过滤表达式,用于仅显示应用管理边界内或具有特定属性的指定项目中的服务,例如:

      • service_properties.gcp_project=projects/PROJECT_ID
      • service_properties.gcp_project=projects/PROJECT_ID AND service_reference.uri~"forwardingRules"

    输出类似于以下示例:

    ID            SERVICE_REFERENCE                                                                                             SERVICE_PROPERTIES
    SERVICE_ID    {'uri': '//compute.googleapis.com/projects/PROJECT_NUMBER/regions/REGION/forwardingRules/forwarding-rule'}    {'gcpProject': 'projects/PROJECT_ID', 'location': 'REGION'}
    
  2. 从输出中复制服务 ID SERVICE_ID

  3. 向应用注册服务:

    gcloud apphub applications services create SERVICE_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --application=APPLICATION_NAME \
      --discovered-service=projects/PROJECT_ID/locations/REGION/discoveredServices/SERVICE_ID \
      --display-name=SERVICE_DISPLAY_NAME \
      --criticality-type=CRITICALITY \
      --environment-type=ENVIRONMENT \
      --developer-owners=display-name=DEV_NAME,email=DEV_EMAIL \
      --operator-owners=display-name=OPERATOR_NAME,email=OPERATOR_EMAIL \
      --business-owners=display-name=BUSINESS_NAME,email=BUSINESS_EMAIL
    

    SERVICE_NAME 替换为您要用于向应用注册服务的名称。

    使用 --criticality-type 等可选标志定义服务的高级属性,并支持可发现性和治理。

    对于必需标志和可选标志,请替换以下内容:

    • 必需:PROJECT_ID:管理项目的 ID。
    • 必需:REGION:根据您的地理分布情况,您的服务的具体区域。请使用以下某个值:

    • 必需:APPLICATION_NAME:您要为其注册服务的应用的名称。

    • 必需:SERVICE_ID:您从上一个输出中复制的服务 ID。

    • 可选:SERVICE_DISPLAY_NAME:服务的显示名称。

    • 可选:CRITICALITY:服务对于运营的重要性级别。请使用以下某个值:

      • MISSION_CRITICAL
      • HIGH
      • MEDIUM
      • LOW
    • 可选:ENVIRONMENT:软件生命周期的阶段。请使用以下某个值:

      • PRODUCTION
      • STAGING
      • DEVELOPMENT
      • TEST
    • 可选:DEV_NAMEDEV_EMAIL:开发者所有者的显示名称和电子邮件地址(分别)。

    • 可选:OPERATOR_NAMEOPERATOR_EMAIL:运营商所有者的显示名称和电子邮件地址(分别)。

    • 可选:BUSINESS_NAMEBUSINESS_EMAIL:企业主的显示名称和电子邮件地址(分别)。

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

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

    您必须为每个已注册的服务获得类似于以下内容的输出:

    ID              DISPLAY_NAME            SERVICE_REFERENCE                                                                                             CREATE_TIME
    SERVICE_NAME    SERVICE_DISPLAY_NAME    {'uri': '//compute.googleapis.com/projects/PROJECT_NUMBER/regions/REGION/forwardingRules/forwarding-rule'}    2023-11-01T21:38:08
    

注册工作负载

  1. 列出可注册到应用的可用工作负载:

    gcloud apphub discovered-workloads list \
      --project=PROJECT_ID \
      --location=REGION \
      --filter=FILTER_EXPRESSION
    

    对于必需标志和可选标志,请替换以下内容:

    • 必需:PROJECT_ID:管理项目的 ID。
    • 必需:REGION:工作负载的具体区域,具体取决于您的地理分布。请使用以下某个值:

    • 可选:FILTER_EXPRESSION--filter 标志的过滤表达式,用于仅显示应用管理边界内或具有特定属性(例如 workload_properties.gcp_project=projects/PROJECT_ID)的指定项目中的工作负载。

    输出类似于以下示例:

    ID             WORKLOAD_REFERENCE                                                                                    WORKLOAD_PROPERTIES
    WORKLOAD_ID    {'uri': '//compute.googleapis.com/projects/PROJECT_NUMBER/regions/REGION/instanceGroups/mig-name'}    {'gcpProject': 'projects/PROJECT_ID', 'location': 'REGION'}
    
  2. 从输出中复制工作负载 ID (WORKLOAD_ID)。

  3. 将工作负载注册到您的应用:

    gcloud apphub applications workloads create WORKLOAD_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --application=APPLICATION_NAME \
      --discovered-workload=projects/PROJECT_ID/locations/REGION/discoveredWorkloads/WORKLOAD_ID \
      --display-name=WORKLOAD_DISPLAY_NAME \
      --criticality-type=CRITICALITY \
      --environment-type=ENVIRONMENT \
      --developer-owners=display-name=DEV_NAME,email=DEV_EMAIL \
      --operator-owners=display-name=OPERATOR_NAME,email=OPERATOR_EMAIL \
      --business-owners=display-name=BUSINESS_NAME,email=BUSINESS_EMAIL
    

    WORKLOAD_NAME 替换为您要用于向应用注册工作负载的名称。

    使用 --criticality-type 等可选标志来定义工作负载的顶级属性,并支持可发现性和治理。

    对于必需标志和可选标志,请替换以下内容:

    • 必需:PROJECT_ID:管理项目的 ID。
    • 必需:REGION:工作负载的具体区域,具体取决于您的地理分布。请使用以下某个值:

    • 必需:APPLICATION_NAME:您要注册工作负载的应用的名称。

    • 必需:WORKLOAD_ID:您从上一个输出中复制的工作负载 ID。

    • 可选:WORKLOAD_DISPLAY_NAME:工作负载的显示名称。

    • 可选:CRITICALITY:工作负载对您的运营的重要性级别。请使用以下某个值:

      • MISSION_CRITICAL
      • HIGH
      • MEDIUM
      • LOW
    • 可选:ENVIRONMENT:软件生命周期的阶段。请使用以下某个值:

      • PRODUCTION
      • STAGING
      • DEVELOPMENT
      • TEST
    • 可选:DEV_NAMEDEV_EMAIL:开发者所有者的显示名称和电子邮件地址(分别)。

    • 可选:OPERATOR_NAMEOPERATOR_EMAIL:运营商所有者的显示名称和电子邮件地址(分别)。

    • 可选:BUSINESS_NAMEBUSINESS_EMAIL:企业主的显示名称和电子邮件地址(分别)。

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

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

    您必须为每个已注册的工作负载获得类似如下所示的输出:

    ID               DISPLAY_NAME             WORKLOAD_REFERENCE                                                                                    CREATE_TIME
    WORKLOAD_NAME    WORKLOAD_DISPLAY_NAME    {'uri': '//compute.googleapis.com/projects/PROJECT_NUMBER/regions/REGION/instanceGroups/mig-name'}    2023-11-01T21:38:08
    

Terraform

如需使用 Terraform 将应用管理边界内的 Google Cloud 资源注册为应用中的服务或工作负载,请使用 google_apphub_discovered_servicegoogle_apphub_discovered_workload 数据源来动态检索有关要注册的资源的信息。

然后,使用 google_apphub_servicegoogle_apphub_workload 资源分别注册服务或工作负载。

注册服务

  1. 使用服务的 URI 获取有关服务的信息:

    data "google_apphub_discovered_service" "my-service" {
        location = "REGION"
        service_uri = "SERVICE_URI"
    }
    
  2. 向您的应用注册已发现的服务,例如:

    resource "google_apphub_service" "example" {
        project            = "my-project-id"
        location           = "us-central1"
        application_id     = google_apphub_application.example.application_id
        service_id         = "frontend-load-balancer"
        discovered_service = data.google_apphub_discovered_service.my-forwarding-rule.name
        display_name       = "Frontend Load Balancer"
        description        = "The primary load balancer for the frontend."
    }
    

注册工作负载

  1. 使用工作负载的 URI 获取有关该工作负载的信息:

    data "google_apphub_discovered_workload" "my-workload" {
        location = "REGION"
        workload_uri = "WORKLOAD_URI"
    }
    
  2. 将发现的工作负载注册到您的应用,例如:

    resource "google_apphub_workload" "example" {
        project             = "my-project-id"
        location            = "us-central1"
        application_id      = google_apphub_application.example.application_id
        workload_id         = "frontend-instance-group"
        discovered_workload = data.google_apphub_discovered_workload.my-mig.name
        display_name        = "Frontend Instance Group"
        description         = "The managed instance group for the frontend."
    }
    

如果您将项目或文件夹移出应用管理边界或删除底层资源,注册到应用的服务的注册状态和工作负载可能会更改为 detached。分离的服务和工作负载会保留在应用中,直到您取消注册它们为止,但 App Hub 无法再管理或监控它们。如需了解详情,请参阅服务和工作负载的注册状态

如需将服务或工作负载重新附加到应用,您必须重新注册它们。

授予权限并开始操作

在 App Hub 中创建应用并注册服务和工作负载后,您必须根据生命周期责任授予用户访问权限,以便将此逻辑分组作为一个单元进行管理:

  1. 您可以根据自己的访问需求向个别应用或所有应用授予权限。如需查看推荐的角色列表,请参阅向用户授予以应用为中心的角色
  2. (可选)前往 Cloud Hub,查看已定义应用的统一运营信息中心,包括其健康状况、性能和费用数据。