4.6. 为 GCP 管理用户定义的标记(label)和标签(tag)
对 GCP 的用户定义的标记和标签的支持只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
Google Cloud Platform (GCP) 提供标记(label)和标签(tag),以帮助识别和组织为特定 OpenShift Container Platform 集群创建的资源,从而使它们更易于管理。
您只能在 OpenShift Container Platform 集群安装过程中为每个 GCP 资源定义标签和标记。
升级到 OpenShift Container Platform 4.15 版本的 OpenShift Container Platform 集群不支持用户定义的标签和标记。
用户定义的标记(label)
用户定义的标记和 OpenShift Container Platform 特定的标记只适用于 OpenShift Container Platform 安装程序创建的资源及其核心组件,例如:
- GCP filestore CSI Driver Operator
- GCP PD CSI Driver Operator
- Image Registry Operator
- GCP 的机器 API 供应商
用户定义的标记和 OpenShift Container Platform 特定标记不适用于由任何其他操作器或创建资源的 Kubernetes 树内组件(如 Ingress 负载均衡器)创建的资源。
以下 GCP 资源提供了用户定义的标记和 OpenShift Container Platform 标记:
- Compute 磁盘
- Compute 实例
- Compute 镜像
- Compute 转发规则
- DNS 受管区
- FileStore 实例
- 存储桶
用户定义的标记的限制
-
GCP beta 版本支持
ComputeAddress
的标记。OpenShift Container Platform 不向资源添加标记。
用户定义的标签(tag)
用户定义的标签附加到 OpenShift Container Platform Image Registry Operator 创建的资源中,而不是由任何其他 Operator 或 Kubernetes in-tree 组件创建的资源。
用户定义的标签在以下 GCP 资源上提供:* 存储存储桶
用户定义的标签的限制
标记不会附加到以下项目:
- 安装程序创建的 control plane 实例和存储存储桶
- 由 GCP 的 Machine API 供应商创建的计算实例
- GCP filestore CSI 驱动程序 Operator 创建的 FileStore 实例资源
- GCP PD CSI 驱动程序 Operator 创建的计算磁盘和计算镜像资源
位于以下区域的存储桶不支持标签:
-
us-east2
-
us-east3
-
- Image Registry Operator 不会抛出任何错误,而是在标签不支持的区域创建存储桶时跳过处理标签。
- 标签不能仅限于特定的服务帐户,因为 Operator 会创建和使用最少的角色的服务帐户。
- OpenShift Container Platform 不创建标签的任何键和值资源。
- OpenShift Container Platform 特定的标签不会添加到任何资源。
其他资源
-
有关识别
OrganizationID
的更多信息,请参阅: OrganizationID -
有关识别
ProjectID
的更多信息,请参阅: ProjectID - 有关标记的更多信息,请参阅 标记概述。
- 有关标签的更多信息,请参阅 标签概述。
4.6.1. 为 GCP 配置用户定义的标记和标签
先决条件
-
安装程序要求服务帐户包含
TagUser
角色,以便安装程序可以在机构和项目级别创建带有定义标签的 OpenShift Container Platform 集群。
流程
更新
install-config.yaml
文件,以定义所需标记和标签列表。注意标记和标签在
install-config.yaml
创建阶段定义,且无法在集群创建后使用新标记和标签修改或更新。install-config.yaml
文件示例apiVersion: v1 featureSet: TechPreviewNoUpgrade platform: gcp: userLabels: 1 - key: <label_key>2 value: <label_value>3 userTags: 4 - parentID: <OrganizationID/ProjectID>5 key: <tag_key_short_name> value: <tag_value_short_name>
以下是用户定义的标记的要求:
- 标记的键和值必须至少为 1 个字符,最多可有 63 个字符。
-
标记的键和值只能包含小写字母、数字字符、下划线(
_
)和短划线(-
)。 - 标记的键必须以小写开头。
- 您可以为每个资源配置最多 32 个标记。每个资源最多可具有 64 个标记,并且为 OpenShift Container Platform 内部使用保留 32 个标记。
以下是用户定义的标签的要求:
- 标签键和标签值必须已经存在。OpenShift Container Platform 不创建键和值。
标签
parentID
可以是OrganizationID
或ProjectID
:-
OrganizationID
必需是没有前导零的十进制数字。 -
ProjectID
的长度为 6 到 30 个字符,其中仅包含小写字母、数字和连字符。 -
ProjectID
必须以字母开头,且不能以连字符结尾。
-
-
标签键只能包含大写和小写字母数字字符、连字符(
-
)、下划线(_
)和句点(.
)。 -
标签值必须仅包含大写和小写字母字符、连字符 (
-
), 下划线 (_
), 句点 (.
), at 符号 (@
), 百分比符号 (%
), 等号 (=
), 加号 (+
), colon (:
),逗号 (,
), 星号 (*
), pound sign ($
), ampersand (&
), parentheses (()
), square braces ([]
), curly braces ({}
), 和空格。 - 标签键和值必须以字母数字字符开头和结尾。
- 标签值必须是键的预定义值之一。
- 您可以配置最多 50 个标签。
- 不应存在使用与任何已存在的标签键的值(从父资源中继承)相同的定义的标签键。
4.6.2. 为 GCP 查询用户定义的标记和标签
创建 OpenShift Container Platform 集群后,您可以访问在 infrastructures.config.openshift.io/cluster
对象中的 GCP 资源定义的标记和标签列表,如以下示例 infrastructure.yaml
文件所示。
infrastructure.yaml
文件示例
apiVersion: config.openshift.io/v1
kind: Infrastructure
metadata:
name: cluster
spec:
platformSpec:
type: GCP
status:
infrastructureName: <cluster_id>1
platform: GCP
platformStatus:
gcp:
resourceLabels:
- key: <label_key>
value: <label_value>
resourceTags:
- key: <tag_key_short_name>
parentID: <OrganizationID/ProjectID>
value: <tag_value_short_name>
type: GCP
- 1
- 集群安装过程中生成的集群 ID。
除了用户定义的标记外,资源还具有 OpenShift Container Platform 定义的标记。OpenShift Container Platform 标记的格式是 kubernetes-io-cluster-<cluster_id>:owned
。