管理项目标记

本文档介绍了如何管理现有的标记键值对,这些键值对用于在 Google Distributed Cloud (GDC) 经过网闸隔离 中整理项目。管理员可以使用 Identity and Access Management (IAM) 权限查看标记。您可以为标记键值对设置权限,以强制规定在标记键值对绑定到项目时,哪些人可以查看它们。您还可以查看现有标记属性,以帮助跟踪组织中标记的应用情况,例如:

如需详细了解标记,请参阅标记概览

本文档适用于平台管理员群组中的 IT 管理员,他们负责在 GDC 宇宙中组织和管理项目。如需了解详情,请参阅 GDC 经过网闸隔离文档的受众群体

准备工作

  • 如需获得向其他用户授予标记权限或检查标记键值对命名空间所需的权限,请让组织 IAM 管理员为您授予“标记管理员”角色 (tag-admin)。

  • 如需获得列出带有标记的项目的权限,请让您的组织 IAM 管理员为您授予 Project Viewer 角色 (project-viewer)。

为标记键值对应用权限

每个标记键和标记值都需要特定的角色绑定,以便用户访问和管理它们。

为标记键和标记值设置适当的角色,以应用权限。

  1. 确定您要使用的角色名称以及应用该角色所需的命名空间。 如需了解详情,请参阅标记用法

  2. 通过为每个已定义的命名空间应用 RoleBinding 资源,授予标记的角色权限:

    kubectl apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: BINDING_NAME
      namespace: NAMESPACE
    subjects:
    - kind: GROUP_SUBJECT
      name: GROUP_NAME
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: TAG_ROLE_NAME
      apiGroup: rbac.authorization.k8s.io
    EOF
    

    替换以下内容:

    • BINDING_NAME:角色绑定的自定义名称。

    • NAMESPACE:应用角色绑定的命名空间,例如 platform、标记键的管理命名空间或标记值的政策命名空间

    • GROUP_SUBJECT:要应用角色权限的正文类型。此值可以是 UserGroupServiceAccount。如需了解详情,请参阅 Referring to subjects Kubernetes 文档。

    • GROUP_NAME:自定义群组名称。

    • TAG_ROLE_NAME:要应用的标记角色的名称,例如 tag-admintag-KEY_NAME-admin

    例如,如需向用户授予对标记键值对的 tag-admin 角色权限,请将以下 RoleBinding 自定义资源部署到 platform 命名空间、标记键的 managementNamespace 和标记值的 policyNamespace

    kubectl apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: tag-admin-binding
      namespace: platform
    subjects:
    - kind: User
      name: user-1
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: tag-admin
      apiGroup: rbac.authorization.k8s.io
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: tag-admin-mgmt-binding
      namespace: g-t-tag-key-1
    subjects:
    - kind: User
      name: user-1
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: tag-admin
      apiGroup: rbac.authorization.k8s.io
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: tag-admin-policy-binding
      namespace: g-t-tag-value-1
    subjects:
    - kind: User
      name: user-1
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: tag-admin
      apiGroup: rbac.authorization.k8s.io
    EOF
    

查找管理命名空间

管理命名空间是为标记键创建的系统生成的命名空间。

  • 查找特定标记键的管理命名空间:

    kubectl get tagkey TAG_KEY_NAME --namespace platform \
        -o jsonpath='{.status.managementNamespace}'
    

    TAG_KEY_NAME 替换为您的标记键名称。

查找政策命名空间

政策命名空间是为标记值创建的系统生成的命名空间。

  • 查找特定标记值的政策命名空间:

    kubectl get tagvalue TAG_VALUE_NAME --namespace MANAGEMENT_NAMESPACE \
        -o jsonpath='{.status.policyNamespace}'
    

    替换以下内容:

    • TAG_VALUE_NAME:标记值的名称。
    • MANAGEMENT_NAMESPACE:相应标记键的标记值所对应的管理命名空间的名称。如需了解详情,请参阅查找管理命名空间

列出带有标记的项目

如需列出与特定键值对绑定的所有项目,请完成以下操作:

  • 列出与您的标记键值对匹配的所有项目:

    kubectl get project --namespace platform --label tag.resourcemanager.gdc.goog/TAG_KEY_NAME=TAG_VALUE_NAME
    

    替换以下内容:

    • TAG_KEY_NAME:标记键的名称。
    • TAG_VALUE_NAME:标记值的名称。

    输出类似于以下内容:

    NAME            AGE
    project-1       17d
    project-2       10d
    project-3       4d
    

后续步骤