Administra etiquetas de proyectos

En este documento, se explica cómo administrar los pares clave-valor de etiquetas existentes que organizan tus proyectos en Google Distributed Cloud (GDC) aislado. Los administradores pueden ver las etiquetas con los permisos de Identity and Access Management (IAM). Puedes establecer permisos para tus pares clave-valor de etiquetas y, así, aplicar quién puede verlos cuando están vinculados a un proyecto. También puedes ver los atributos de etiquetas existentes para hacer un seguimiento de cómo se aplican las etiquetas en tu organización, como los siguientes:

Para obtener más información sobre las etiquetas, consulta Descripción general de las etiquetas.

Este documento está dirigido a los administradores de TI que forman parte del grupo de administradores de la plataforma y que son responsables de organizar y administrar proyectos en un universo de GDC. Para obtener más información, consulta Públicos de la documentación de Google Distributed Cloud aislado.

Antes de comenzar

  • Para obtener los permisos que necesitas para otorgar permisos de etiquetas a otros usuarios o inspeccionar los espacios de nombres de pares clave-valor de etiquetas, pídele al administrador de IAM de la organización que te otorgue el rol de administrador de etiquetas (tag-admin).

  • Para obtener los permisos que necesitas para enumerar un proyecto con una etiqueta, pídele al administrador de IAM de tu organización que te otorgue el rol de visualizador de proyectos (project-viewer).

Aplica permisos a tu par clave-valor de etiqueta

Cada clave y valor de etiqueta requiere vinculaciones de roles específicas para que los usuarios puedan acceder a ellos y administrarlos.

Establece los roles adecuados para las claves y los valores de tus etiquetas para aplicar permisos.

  1. Identifica el nombre del rol deseado y los espacios de nombres necesarios para aplicar ese rol. Para obtener más información, consulta Uso de etiquetas.

  2. Para otorgar permisos de rol para una etiqueta, aplica el recurso RoleBinding para cada espacio de nombres definido:

    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
    

    Reemplaza lo siguiente:

    • BINDING_NAME: Es el nombre personalizado de la vinculación del rol.

    • NAMESPACE: Es el espacio de nombres al que se aplicará la vinculación del rol, como platform, el espacio de nombres de administración de la clave de etiqueta o el espacio de nombres de la política del valor de la etiqueta.

    • GROUP_SUBJECT: Es el tipo de sujeto al que se aplicarán los permisos del rol. Este valor puede ser User, Group o ServiceAccount. Para obtener más información, consulta la documentación de Kubernetes sobre cómo hacer referencia a temas.

    • GROUP_NAME: Es el nombre del grupo personalizado.

    • TAG_ROLE_NAME: Es el nombre del rol de la etiqueta que se aplicará, como tag-admin o tag-KEY_NAME-admin.

    Por ejemplo, para otorgar permiso de rol tag-admin a un usuario para un par clave-valor de etiqueta, implementa los siguientes recursos personalizados RoleBinding en el espacio de nombres platform, la clave de etiqueta managementNamespace y el valor de etiqueta 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
    

Cómo encontrar el espacio de nombres de administración

Un espacio de nombres de administración es el espacio de nombres generado por el sistema que se crea para una clave de etiqueta.

  • Busca el espacio de nombres de administración de la clave de etiqueta específica:

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

    Reemplaza TAG_KEY_NAME por el nombre de la clave de tu etiqueta.

Busca el espacio de nombres de la política

Un espacio de nombres de política es el espacio de nombres generado por el sistema que se crea para un valor de etiqueta.

  • Busca el espacio de nombres de la política del valor de etiqueta específico:

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

    Reemplaza lo siguiente:

    • TAG_VALUE_NAME: Es el nombre del valor de la etiqueta.
    • MANAGEMENT_NAMESPACE: Es el nombre del espacio de nombres de administración para la clave de etiqueta correspondiente al valor de la etiqueta. Para obtener más información, consulta Cómo encontrar el espacio de nombres de administración.

Enumera los proyectos con una etiqueta

Para enumerar todos los proyectos vinculados con un par clave-valor específico, completa los siguientes pasos:

  • Enumera todos los proyectos que coincidan con tu par clave-valor de etiqueta:

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

    Reemplaza lo siguiente:

    • TAG_KEY_NAME: Es el nombre de la clave de etiqueta.
    • TAG_VALUE_NAME: Es el nombre del valor de la etiqueta.

    El resultado es similar a lo siguiente:

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

¿Qué sigue?