标签是一种将相互关联的部署组织起来的简洁方法。例如,通常的做法是为用于生产、过渡或开发的部署分别添加标签,以便您可以在必要时轻松搜索属于每个开发阶段的部署。
什么是标签?
标签是一种键值对,可分配给 Google Cloud 部署。它们可以帮助您按照所需的粒度大规模组织这些资源并管理费用。您可以将标签附加到各项资源,然后根据其标签对资源进行过滤。标签的相关信息会转发到结算系统,以便您按标签细分结算费用。使用内置的结算报告,您可以按资源标签对费用进行过滤和分组。您还可以使用标签查询结算数据导出。
标签要求
应用于资源的标签必须符合以下要求:
- 每个资源最多可以有 64 个标签。
- 每个标签都必须采用键值对形式。
- 键至少包含 1 个字符,最多包含 63 个字符,且不能为空。值可以为空,且最多包含 63 个字符。
- 键和值只能包含小写字母、数字字符、下划线和短划线。所有字符必须使用 UTF-8 编码,允许使用国际字符。 键必须以小写字母或国际字符开头。
- 标签的键部分在单个资源内必须是唯一的。不过,您可以将同一个键用于多个资源。
这些限制适用于每个标签的键和值,以及带有标签的各个 Google Cloud 资源。您可以对一个项目的所有资源应用任意数量的标签。
标签的常见用途
以下是标签的一些常见使用场景:
团队或成本中心标签:根据团队或成本中心添加标签,以区分不同团队所拥有的部署(例如
team:research
和team:analytics
)。您可以在进行成本核算或预算时使用此类标签。组件标签:例如
component:redis
、component:frontend
、component:ingest
和component:dashboard
。环境或阶段标签:例如
environment:production
和environment:test
。状态标签:例如
state:active
、state:readytodelete
、state:archive
。所有权标签:用于标识负责运营的团队,例如:
team:shopping-cart
。
我们不建议创建大量唯一标签,例如为每个 API 调用的时间戳或个别值创建标签。这种方法的问题在于,当值经常变化或键导致目录杂乱时,很难有效地过滤和报告资源。
标签和标记
标签可用作资源可查询的注释,但不能用于设置政策的条件。通过对政策进行精细控制,标记提供了一种有条件地允许或拒绝政策的方法,具体取决于资源是否具有特定的标记。如需了解详情,请参阅标记概览。
创建带有标签的部署
创建部署时,您可以通过提供一个或多个键值对作为标签来添加标签。如果您已有部署,则可以通过更新部署来添加新标签或更改现有标签。
您必须使用 gcloud CLI 或 API 来创建带有标签的部署。
gcloud
在 gcloud
中,通过提供 --labels
标志,后跟英文逗号分隔的标签键值对列表,为部署添加标签。例如,以下命令会向部署添加 environment=production
和 storage=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"
}
]
}
移除标签
控制台
前往 Google Cloud 控制台中的部署页面。
如果出现提示,请选择您的项目并点击继续。
选中您要从中删除标签的部署旁边的框。显示侧边栏。
点击要移除的每个标签旁边的 X。
保存更改。
gcloud
在 gcloud
中,使用 deployments update
命令并提供 --remove-labels
标志,后跟英文逗号分隔的待移除标签键列表,从而移除标签。
例如,以下命令会移除包含 environment
键的标签:
gcloud deployment-manager deployments update example-deployment --remove-labels environment
API
在 API 中,按照说明更新部署,并在部署中添加请求正文中不包含 labels
属性的更新,从而实际移除标签。
添加或更新标签
您可以在现有部署中添加新标签或更新标签。
控制台
前往 Google Cloud 控制台中的部署页面。
如果出现提示,请选择您的项目并点击继续。
选中要更新其中标签的部署旁边的框。打开侧边栏。
要更改标签值,请更新相应的标签条目。如果要更改标签键,您需要删除标签并使用新键再次添加。
保存更改。
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
要在预览中更改标签,您必须使用新标签更新预览。要详细了解预览,请阅读预览配置文档。
使用标签过滤搜索
您可以搜索资源并按标签过滤结果。
控制台
前往 Google Cloud 控制台中的部署页面。
如果出现提示,请选择您的项目并点击继续。
在搜索栏中,开始键入
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
文档。