将注释和标签与 Google Cloud Deploy 搭配使用

您可以将注释和标签附加到 Google Cloud Deploy 资源。它们不是强制要求。

本文档列出了可以附加标签和注释的资源,并说明了如何使用它们以及可在何处查看它们。

注释和标签简介

注释是包含自由格式文本的键值对。您可以使用它们来附加与资源关联的任意信息。

您可以使用标签来组织资源。例如,您可以根据标签选择来应用逻辑。

与注释一样,标签也是键值对。但它们必须符合以下限制:

  • Google Cloud Deploy 资源最多可以有 64 个标签。

  • 键和值不得超过 128 个字节。

  • 键和值只能包含小写字母、数字字符、下划线和短划线。

  • 键必须以小写字母或国际字符开头。

  • 所有字符必须使用 UTF-8 编码。允许使用国际字符。

--labels 标志(例如,在 gcloud deploy releases create 上)可以接受键值对列表:

"name=wrench,mass=1.3kg,count=3"

如需了解详情,请参阅 Google Cloud Deploy API 文档

向 Google Cloud Deploy 资源添加注释和标签

您可以向以下 Google Cloud Deploy 资源添加注释和标签:

  • 交付流水线

    对于交付流水线,您可以向 YAML 配置文件添加注释和标签。

apiVersion: deploy.cloud.google.com/v1
  kind: DeliveryPipeline
  metadata:
   name:
   annotations:
     key: "value"
   labels:
     key: "value"
  description:
  serialPipeline:
   stages:
   - targetId:
     profiles: []
   - targetId:
     profiles: []
  • 目标

    目标配置 YAML 中向目标添加注释和标签。

    例如,您可以添加指向应用的第三方监控的详细信息链接。但是,如果共享了目标,请记住,它可能会用于多个应用,因此链接不应该是特定于应用的。

  • 版本

    您可以在 gcloud deploy releases create 命令上使用 --labels--annotations 标志向版本添加注释和/或标签。您添加到版本的标签和注释转入到产生的发布中的标签或注释。

    例如,您可以使用注释来包括对以下项目的引用:包含要部署的更改的 Git 提交的 Git PR、作者或 SHA 哈希。如需了解详情,请参阅使用注释来跟踪版本的来源

  • 发布

    您可以通过在 gcloud deploy releases promote 命令上指定 --labels--annotations 来向新发布添加注释和标签。

    第一个发布添加注释和标签的唯一方法是使用 Cloud Deploy API 创建发布,并在 rollout 资源中添加注释或标签。

    在发布上使用注释可以执行的一些操作:

    • 创建包含指向测试结果的网址的注释。
    • 使用工作流管理系统中的相关工单号创建注释。

在哪里可以找到资源的注释?

如需查看任何受支持资源的注释和标签,可以使用资源的 describe 命令,也可以在 Google Cloud Console 中查看资源的元数据。

通过 gcloud 工具

如需通过命令行查看资源的注释和标签,请针对该资源使用 describe 命令。以下示例展示了目标的详细信息:

 $ gcloud deploy targets describe qsprod --delivery-pipeline=my-demo-app-1 \
                                              --region=us-central1 \
                                              --project=quickstart-basic8

上面的命令返回以下输出:

 Target:
   annotations:
     approver_ticket_queue_url: https://workflows.example.com/deploy_approvals/4985729
   createTime: '2021-10-28T19:33:56.907887878Z'
   description: development cluster
   etag: 5b3bbee48f693cd7
   gke:
     cluster: projects/quickstart-basic8/locations/us-central1/clusters/quickstart-cluster-qsdev
   name: projects/quickstart-basic8/locations/us-central1/targets/qsdev
   uid: 3f3a5f8e7e0648e3bb17898ee531455d
   updateTime: '2021-11-10T16:55:11.502660604Z'

请注意,此输出包含 target_name 注释。

在 Cloud Console 中

如需查看具有此类元数据的任何 Google Cloud Deploy 资源的注释和标签,请在 Cloud Console 中查看该资源的详细信息。

例如,下面是包含注释的流水线的交付流水线详细信息:

Google Cloud Console 中的交付流水线详细信息

以下是版本的详细信息:

Google Cloud Console 中的版本详细信息

来自 Google Cloud Deploy 的自动标签

默认情况下,Google Cloud Deploy 会将以下标签添加到已渲染清单:

  • app.kubernetes.io/managed-by:

    用于指示部署工具的标准标签。此字段始终设置为 google-cloud-deploy,以标识工作负载的来源。

  • deploy.cloud.google.com/location:

    已部署的交付流水线的位置,例如 us-central1

  • deploy.cloud.google.com/project-id:

    已部署的交付流水线的项目 ID。

  • deploy.cloud.google.com/delivery-pipeline-id:

    所用交付流水线的资源 ID。此项截取自发布快照

  • deploy.cloud.google.com/release-id:

    已部署版本的资源 ID。

  • deploy.cloud.google.com/target-id:

    部署目标的资源 ID。此项截取自发布快照

用法示例

使用这些自动应用的标签的一个示例是在 Google Cloud 的运维套件中创建一个图表,该图表通过 Google Cloud Deploy 属性聚合容器指标

fetch k8s_container
| metric 'kubernetes.io/container/cpu/core_usage_time'
| filter metadata.user.c'app.kubernetes.io/managed-by' = "google-cloud-deploy"
| group_by [
    pipeline: metadata.user.c'deploy.cloud.google.com/delivery-pipeline-id',
    target: metadata.user.c'deploy.cloud.google.com/target-id',
    release: metadata.user.c'deploy.cloud.google.com/release-id',],
      sum(val())
| rate 1m

您还可以将它与自定义指标搭配使用。例如,如果 PodMonitor 配置了标签以与 app.kubernetes.io/managed-by: google-cloud-deploy 匹配,那么您可以使用查询来为自定义指标定义图表:

fetch k8s_container
| metric workload.googleapis.com/example_requests_total
| filter metadata.user_labels.c'app.kubernetes.io/managed-by' = "google-cloud-deploy"
| group_by [
    pipeline: metadata.user.c'deploy.cloud.google.com/delivery-pipeline-id',
    target: metadata.user.c'deploy.cloud.google.com/target-id',
    release: metadata.user.c'deploy.cloud.google.com/release-id',],
    sum(val())
| rate 1m

停用自动标签

您的组织可能会出于监管、合规性或其他原因而禁止使用这些自动标签。为此,组织政策服务提供了限制条件以控制是否应用这些标签。

为了防止 Google Cloud Deploy 自动向已渲染清单添加标签,请设置要强制执行的组织政策服务限制条件 clouddeploy.disableServiceLabelGeneration。强制执行此限制条件不会阻止您手动指定标签,也不会从现有版本中移除标签。

如需详细了解如何启用限制条件,请参阅在组织政策中使用布尔值限制条件