将标签添加到部署

标签是一种将相互关联的部署组织起来的简洁方法。例如,通常的做法是为用于生产、过渡或开发的部署分别添加标签,以便您可以在必要时轻松搜索属于每个开发阶段的部署。

什么是标签?

标签是一种键值对,可分配给 Google Cloud 部署。它们可以帮助您按照所需的粒度大规模组织这些资源并管理费用。您可以将标签附加到各项资源,然后根据其标签对资源进行过滤。标签的相关信息会转发到结算系统,以便您按标签细分结算费用。使用内置的结算报告,您可以按资源标签对费用进行过滤和分组。您还可以使用标签查询结算数据导出

标签要求

应用于资源的标签必须符合以下要求:

  • 每个资源最多可以有 64 个标签。
  • 每个标签都必须采用键值对形式。
  • 键至少包含 1 个字符,最多包含 63 个字符,且不能为空。值可以为空,且最多包含 63 个字符。
  • 键和值只能包含小写字母、数字字符、下划线和短划线。所有字符必须使用 UTF-8 编码,允许使用国际字符。 键必须以小写字母或国际字符开头。
  • 标签的键部分在单个资源内必须是唯一的。不过,您可以将同一个键用于多个资源。

这些限制适用于每个标签的键和值,以及带有标签的各个 Google Cloud 资源。您可以对一个项目的所有资源应用任意数量的标签。

标签的常见用途

以下是标签的一些常见使用场景:

  • 团队或成本中心标签:根据团队或成本中心添加标签,以区分不同团队所拥有的部署(例如 team:researchteam:analytics)。您可以在进行成本核算或预算时使用此类标签。

  • 组件标签:例如 component:rediscomponent:frontendcomponent:ingestcomponent:dashboard

  • 环境或阶段标签:例如 environment:productionenvironment:test

  • 状态标签:例如 state:activestate:readytodeletestate:archive

  • 所有权标签:用于标识负责运营的团队,例如:team:shopping-cart

我们不建议创建大量唯一标签,例如为每个 API 调用的时间戳或个别值创建标签。这种方法的问题在于,当值经常变化或键导致目录杂乱时,很难有效地过滤和报告资源。

标签和标记

标签可用作资源可查询的注释,但不能用于设置政策的条件。通过对政策进行精细控制,标记提供了一种有条件地允许或拒绝政策的方法,具体取决于资源是否具有特定的标记。如需了解详情,请参阅标记概览

创建带有标签的部署

创建部署时,您可以通过提供一个或多个键值对作为标签来添加标签。如果您已有部署,则可以通过更新部署来添加新标签或更改现有标签。

您必须使用 gcloud CLI 或 API 来创建带有标签的部署。

gcloud

gcloud 中,通过提供 --labels 标志,后跟英文逗号分隔的标签键值对列表,为部署添加标签。例如,以下命令会向部署添加 environment=productionstorage=media 这两个标签:

gcloud deployment-manager deployments create example-deployment --config example-config.yaml \
    --labels environment=production,storage=media

要查看应用于部署的标签,请获取部署说明:

gcloud deployment-manager deployments describe example-deployment
---
fingerprint: 0p03t0z31PQLOrGH8KdhWQ==
id: '2204841443843636456'
insertTime: '2017-04-18T09:42:47.323-07:00'
labels:
- key: environment
  value: production
- key: storage
  value: media
manifest: manifest-1492533767362
name: example-deployment
operation:
  endTime: '2017-04-18T09:43:04.581-07:00'
  name: operation-1492533767010-54d7398ff76d1-7930b926-f64e72ae
  operationType: insert
  progress: 100
  startTime: '2017-04-18T09:42:48.034-07:00'
  status: DONE
  user:user@example.com

API

在 API 中,按照说明创建部署并在请求正文中添加新 labels 属性。例如:

{
  "name": "example-deployment",
  "target": {
    "config": {
      "content": "..."
      },
   }
  "labels": [
  {
    "key": "environment",
    "value": "production"
  },
  {
    "key": "storage",
    "value": "media"
  }
 ]
}

移除标签

控制台

  1. 前往 Google Cloud 控制台中的部署页面。

    转到“部署”页面

  2. 如果出现提示,请选择您的项目并点击继续

  3. 选中您要从中删除标签的部署旁边的框。显示侧边栏。

  4. 点击要移除的每个标签旁边的 X

  5. 保存更改。

gcloud

gcloud 中,使用 deployments update 命令并提供 --remove-labels 标志,后跟英文逗号分隔的待移除标签键列表,从而移除标签。

例如,以下命令会移除包含 environment 键的标签:

gcloud deployment-manager deployments update example-deployment --remove-labels environment

API

在 API 中,按照说明更新部署,并在部署中添加请求正文中不包含 labels 属性的更新,从而实际移除标签。

添加或更新标签

您可以在现有部署中添加新标签或更新标签。

控制台

  1. 前往 Google Cloud 控制台中的部署页面。

    转到“部署”页面

  2. 如果出现提示,请选择您的项目并点击继续

  3. 选中要更新其中标签的部署旁边的框。打开侧边栏。

  4. 要更改标签值,请更新相应的标签条目。如果要更改标签键,您需要删除标签并使用新键再次添加。

  5. 保存更改。

gcloud

gcloud 中,使用 deployments update 命令并提供 --update-labels 标志,后跟英文逗号分隔的已更新标签列表,从而更新或添加新标签:

例如,以下命令可更新 environment 标签:

gcloud deployment-manager deployments update example-deployment --update-labels environment=production

API

在 API 中,按照说明更新部署并在请求正文中省略 labels 属性,用于从部署中移除标签。

在部署预览中添加标签

在创建部署之前,您可以预览部署。作为预览的一部分,您可以为预览的部署分配标签。例如:

gcloud deployment-manager deployments create example-deployment --config example-config.yaml \
    --labels environment=production --preview

要在预览中更改标签,您必须使用新标签更新预览。要详细了解预览,请阅读预览配置文档。

使用标签过滤搜索

您可以搜索资源并按标签过滤结果。

控制台

  1. 前往 Google Cloud 控制台中的部署页面。

    转到“部署”页面

  2. 如果出现提示,请选择您的项目并点击继续

  3. 在搜索栏中,开始键入 labels.,搜索栏将自动列出您可以按其进行过滤的标签。

gcloud

gcloud 中,发出 list 请求并使用 --filter 标志。要过滤标签,请使用语法 labels.[KEY]=[VALUE]。例如,如果要过滤键为 environment、值为 production 的标签,则可以运行以下命令:

gcloud deployment-manager deployments list --filter labels.environment=production

如需查看有关 gcloud CLI 中过滤条件语法的完整文档,请参阅 gcloud topic filters 文档

API

在 API 中,借助使用网址编码的 filter 查询参数发出列表请求。例如,要基于键为 environment、值为 production 的标签进行过滤,请发出以下 GET 请求:

GET https://www.googleapis.com/deploymentmanager/v2/deployments/list?filter=labels.environment+eq+production

如需了解详情,请阅读 API 参考文档中的 filter 文档

后续步骤