管理服务和工作负载

App Hub 可让您管理直接注册和发现的服务和工作负载,以便您保持应用元数据的准确性。随着基础架构的变化,您可以查看组件详细信息、更新属性或从应用中取消注册组件。

对于根据模板部署的应用,请在 Application Design Center 中更新组件。

概览

选择应用设置模型时,您需要在管理项目中为 App Hub 应用定义应用管理边界。然后,您可以在此边界内的应用中注册服务和工作负载。 如需了解引入应用管理实践的推荐用例,请参阅为应用生命周期管理做好准备。

为避免配置偏移并保持清晰的可靠来源,我们建议您在最初定义应用组件的环境中管理这些组件:

  • 对于通过 Application Design Center 模板部署的应用:使用 Application Design Center 管理和更新应用。您可以修改模板以更改应用设计,也可以创建应用修订版本来更新应用和组件详细信息等设置。

    前往 App Design Center

  • 对于通过在 App Hub 中注册现有资源而创建的应用:直接在 App Hub 中管理应用、服务和工作负载。

    前往 App Hub

准备工作

本文档假定您有一个应用,其中注册了受支持的资源。

所需的角色

如需获得在 App Hub 中管理服务和工作负载所需的权限,请让管理员向您授予定义应用管理边界的管理项目的以下 IAM 角色:

  • 更新和取消注册服务和工作负载:App Hub Editor (roles/apphub.editor)
  • 查看服务、工作负载及其详细信息:App Hub Viewer (roles/apphub.viewer)

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

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

如需详细了解 App Hub 角色,请参阅 App Hub IAM 角色和权限。

查看服务和工作负载的详细信息

请按照以下步骤查看应用管理边界内的服务和工作负载的详细信息,包括:

如需详细了解这些细节,请参阅 App Hub 概念和数据模型。

控制台

查看注册状态值为 registered 或 detached 的应用的服务和工作负载的详细信息:

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

  2. 从 App Hub 前往应用页面:

    打开“应用”

    该页面会显示您的应用列表。

  3. 点击要查看其服务或工作负载详细信息的应用的名称。

  4. 在服务和工作负载标签页中,点击要查看的服务或工作负载的名称。

  5. 在组件的详细信息页面中,您可以查看显示名称、位置、注册状态、属性和特性等信息。

或者,查看注册状态值为 discovered 或 registered 的所有服务和工作负载的列表:

  1. 从 App Hub 前往服务和工作负载页面:

    前往“服务和工作负载”

    该页面会显示所有已发现和已注册的服务和工作负载的列表。

  2. 使用过滤条件字段,通过环境、所有者或注册状态等值,按属性、特性或状态缩小结果范围。

gcloud

查看注册状态值为 registered 或 detached 的应用的服务和工作负载的详细信息:

  1. 查找管理项目的项目 ID。

  2. 描述应用中的服务或工作负载,以查看其详细信息,包括属性和特性:

    • 描述服务:

      gcloud apphub applications services describe SERVICE \
          --project=PROJECT_ID \
          --application=APPLICATION \
          --location=LOCATION
      

      替换以下内容:

      • SERVICE:服务的 ID。
      • PROJECT_ID:管理项目的 ID。
      • APPLICATION:服务注册到的应用的 ID。
      • LOCATION:服务的位置。 对于全球资源,请使用 global;对于区域级资源,请使用特定区域,例如 us-east1。
    • 描述工作负载:

      gcloud apphub applications workloads describe WORKLOAD \
          --project=PROJECT_ID \
          --application=APPLICATION \
          --location=LOCATION
      

      替换以下内容:

      • WORKLOAD:工作负载的 ID。
      • PROJECT_ID:管理项目的 ID。
      • APPLICATION:工作负载注册到的应用的 ID。
      • LOCATION:工作负载的位置。 对于全球资源,请使用 global;对于区域级资源,请使用特定区域,例如 us-east1。

输出会显示组件的详细信息,例如显示名称、位置和注册状态。如果资源中存在属性和特性,则还包括这些属性和特性。

或者,查看注册状态值为 discovered 或 registered 的所有服务和工作负载的列表:

发现时间

应用管理边界内发现的 Google Cloud 资源可以注册为应用中的服务或工作负载。请按照以下步骤列出发现的资源:

  1. 列出发现的服务:

    gcloud apphub discovered-services list \
        --project=PROJECT_ID \
        --location=LOCATION
    

    替换以下内容:

    • PROJECT_ID:管理项目的 ID。
    • LOCATION:您要发现资源的位置。对于全球资源,请使用 global;对于区域级资源,请使用特定区域,例如 us-east1。
  2. 列出发现的工作负载:

    gcloud apphub discovered-workloads list \
        --project=PROJECT_ID \
        --location=LOCATION
    

已注册

已注册的服务和工作负载是应用的一部分。请按照以下步骤列出特定应用的已注册组件。 您可以使用 --filter 标志根据属性过滤列表:

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

    gcloud apphub applications services list \
        --application=APPLICATION_NAME \
        --project=PROJECT_ID \
        --location=LOCATION \
        --filter=FILTER_EXPRESSION
    

    替换以下内容:

    • APPLICATION_NAME:应用的名称。您可以在创建应用时指定此值。
    • PROJECT_ID:管理项目的 ID。
    • LOCATION:组件位置。 对于全球组件,请使用 global;对于区域级组件,请使用特定区域(例如 us-east1)。
    • 可选:FILTER_EXPRESSION:用于指定属性的过滤表达式。例如,如需列出环境类型为 PRODUCTION 的组件,请使用 attributes.environment.type=PRODUCTION。
  2. 列出应用中已注册的工作负载:

    gcloud apphub applications workloads list \
        --application=APPLICATION_NAME \
        --project=PROJECT_ID \
        --location=LOCATION \
        --filter=FILTER_EXPRESSION
    

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

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

查看扩展元数据架构

App Hub 使用元数据丰富您的服务和工作负载,以提高可检测性、治理以及与其他系统的集成。您可以使用 App Hub API 搜索可用的元数据架构并查看其定义。

请按照以下步骤查看扩展元数据属性的架构定义,列出所有可用架构或获取特定架构的详细信息(如果有)。

如需详细了解扩展元数据属性,请参阅属性和特性。如需查看支持的元数据类型及其架构的列表,请参阅扩展元数据架构。

gcloud

  • 列出项目和位置中的所有可用扩展元数据架构:

    gcloud alpha apphub extended-metadata-schemas list \
        --project=PROJECT_ID \
        --location=LOCATION \
    

    替换以下内容:

    • PROJECT_ID:管理项目的 ID。
    • LOCATION:组件位置。 对于全球组件,请使用 global;对于区域级组件,请使用特定区域(例如 us-east1)。
  • 查看特定架构的详细信息:

    gcloud alpha apphub extended-metadata-schemas describe SCHEMA_NAME \
        --project=PROJECT_ID \
        --location=LOCATION \
    

    将 SCHEMA_NAME 替换为架构的全名,例如 apphub.googleapis.com/AgentProperties。

Terraform

您可以在 Terraform 中使用数据源来检索特定架构的详细信息。以下示例可让您查看 us-central1 位置的 my-project-id 项目中具有 AGENT 功能类型的工作负载的 apphub.googleapis.com/AgentProperties 架构的详细信息。

data "google_apphub_extended_metadata_schema" "agent_properties" {
  project  = "my-project-id"
  location = "us-central1"
  name     = "apphub.googleapis.com/AgentProperties"
}

更新服务和工作负载属性

如需修改在应用中注册的服务和工作负载的属性,请按照以下步骤操作:

控制台

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

  2. 从 App Hub 前往应用页面:

    打开“应用”

    该页面会显示您的应用列表。

  3. 点击要更新服务或工作负载属性的应用的名称。

  4. 在服务和工作负载标签页中,找到要更新的服务或工作负载的名称。

  5. 点击 more_vert 更多,然后点击 修改服务或 修改工作负载。

  6. 在打开的窗格中,根据需要修改字段,然后点击保存。

gcloud

  1. 查找管理项目的项目 ID。

  2. 更新服务或工作负载属性:

    • 更新服务属性:

      gcloud apphub applications services update SERVICE_NAME \
          --application=APPLICATION_NAME \
          --project=PROJECT_ID \
          --location=LOCATION \
          --display-name=DISPLAY_NAME \
          --criticality-type=CRITICALITY_LEVEL \
          --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 替换为您要更新的服务的名称。

    • 更新工作负载属性:

      gcloud apphub applications workloads update WORKLOAD_NAME \
          --application=APPLICATION_NAME \
          --project=PROJECT_ID \
          --location=LOCATION \
          --display-name=DISPLAY_NAME \
          --criticality-type=CRITICALITY_LEVEL \
          --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 替换为您要更新的工作负载的名称。

      替换以下必需和可选标志:

      • 必需:APPLICATION_NAME:应用的名称。您可以在创建应用时指定此值。
      • 必需:PROJECT_ID:管理项目的 ID。
      • 必需:LOCATION:组件位置。对于全球组件,请使用 global;对于区域级组件,请使用特定区域,例如 us-east1。
      • 可选:DISPLAY_NAME:组件的显示名称。
      • 可选:CRITICALITY_LEVEL:组件的重要性级别。请使用以下某个值:

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

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

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

      • 可选:BUSINESS_NAME 和 BUSINESS_EMAIL:分别为企业主的显示名称和电子邮件地址。

Terraform

如需使用 Terraform 更新服务或工作负载属性,请修改配置文件中相应 google_apphub_service 或 google_apphub_workload 资源块中的参数。应用更改后,Terraform 会更新资源以匹配新配置。

以下示例更新了区域级应用的服务和工作负载的重要性和环境属性:

  • 更新服务属性:

    resource "google_apphub_service" "example" {
        # ... other arguments
        attributes {
            criticality {
                type = "HIGH" # Updated criticality
            }
            environment {
                type = "PRODUCTION"
            }
            # ... other attributes
        }
    }
    
  • 更新工作负载属性:

    resource "google_apphub_workload" "example" {
        # ... other arguments
        attributes {
            criticality {
                type = "HIGH" # Updated criticality
            }
            environment {
                type = "PRODUCTION"
            }
            # ... other attributes
        }
    }
    

取消注册服务和工作负载

取消注册服务或工作负载会将其从应用中移除。底层资源不会被删除。如果该资源仍在您的应用管理边界内,则会成为注册状态值为已发现的资源,可注册到其他应用。

请按照以下步骤取消注册服务和工作负载:

控制台

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

  2. 从 App Hub 前往应用页面:

    打开“应用”

    该页面会显示您的应用列表。

  3. 点击要从中取消注册服务或工作负载的应用的名称。

  4. 在服务和工作负载标签页中,点击要取消注册的服务或工作负载的名称。

  5. 在组件的详情页面中,点击取消注册。

gcloud

  1. 查找管理项目的项目 ID。

  2. 取消注册服务或工作负载:

    • 取消注册服务:

      gcloud apphub applications services delete SERVICE_NAME \
          --application=APPLICATION_NAME \
          --project=PROJECT_ID \
          --location=LOCATION
      

      替换以下内容:

      • SERVICE_NAME:要取消注册的服务的名称。
      • APPLICATION_NAME:应用的名称。您可以在创建应用时指定此值。
      • PROJECT_ID:管理项目的 ID。
      • LOCATION:组件位置。对全球组件使用 global,对区域组件使用特定区域(例如 us-east1)。
    • 取消注册工作负载:

      gcloud apphub applications workloads delete WORKLOAD_NAME \
          --application=APPLICATION_NAME \
          --project=PROJECT_ID \
          --location=LOCATION
      

      将 WORKLOAD_NAME 替换为您要取消注册的工作负载的名称。

Terraform

如需取消注册由 Terraform 管理的服务或工作负载,请从配置文件中移除相应的 google_apphub_service 或 google_apphub_workload 资源块,然后运行 terraform apply。应用更改后,Terraform 会从 App Hub 中移除注册。

取消注册所有服务和工作负载后,您可以删除应用。

后续步骤