将标签添加到部署

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

什么是标签?

标签是一种键值对,可帮助您组织 Google Cloud 部署。您可以将标签附加到各项资源,然后根据标签对资源进行过滤。标签的相关信息会传递到结算系统,因此您可以根据标签来细分结算费用

标签的常见用途

我们不建议创建大量唯一标签,例如每个 API 调用的时间戳或单个值。以下是标签的一些常见用例:

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

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

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

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

标签要求

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

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

创建带有标签的部署

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

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

gcloud

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

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

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

gcloud deployment-manager deployments describe example-deployment
---
fingerprint: 0p03t0z31PQLOrGH8KdhWQ==
id: '2204841443843636456'
insertTime: '2017-04-18T09:42:47.323-07:00'
labels:
- key: devserver
  value: backend
- 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": "devserver",
    "value": "backend"
  },
  {
    "key": "storage",
    "value": "media"
  }
 ]
}

移除标签

控制台

  1. 转到 Google Cloud Console 中的部署页面。

    转到“部署”页面

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

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

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

  5. 保存更改。

gcloud

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

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

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

API

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

添加或更新标签

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

控制台

  1. 转到 Google Cloud Console 中的部署页面。

    转到“部署”页面

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

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

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

  5. 保存更改。

gcloud

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

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

gcloud deployment-manager deployments update example-deployment --update-labels devserver=frontend

API

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

在部署预览中添加标签

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

gcloud deployment-manager deployments create example-deployment --config example-config.yaml \
    --labels devserver=backend --preview

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

使用标签过滤搜索

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

控制台

  1. 转到 Google Cloud Console 中的部署页面。

    转到“部署”页面

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

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

gcloud

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

gcloud deployment-manager deployments list --filter labels.env=dev

如需查看有关 gcloud 工具中的过滤器语法的完整文档,请参阅 gcloud topic filters 文档

API

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

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

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

后续步骤