Gestionar recursos de GKE con etiquetas

En esta página se explica cómo usar etiquetas para gestionar los clústeres de Google Kubernetes Engine (GKE) y aplicar de forma condicional políticas de gestión de identidades y accesos a los nodos.

Información general

Las etiquetas son pares clave-valor que te permiten anotar y gestionar tus Trusted Cloud recursos a nivel de organización o proyecto. Puedes usar etiquetas para organizar tus recursos y aplicar políticas de forma condicional, como políticas de cortafuegos o de gestión de identidades y accesos. Las etiquetas admiten el control de acceso de gestión de identidades y accesos, que te permite definir quién puede adjuntar, crear, actualizar o eliminar etiquetas.

Casos prácticos de las etiquetas en GKE

Puedes usar etiquetas en GKE en situaciones como las siguientes:

  • Aplica condicionalmente políticas de cortafuegos de red a nodos específicos. Por ejemplo, denegar el tráfico de entrada de la red pública de Internet a todos los nodos de un clúster en entornos de staging o de prueba. Para obtener instrucciones, consulta Aplicar selectivamente políticas de cortafuegos de red en GKE.
  • Conceder roles de gestión de identidades y accesos de forma condicional en función de las etiquetas. Por ejemplo, puedes conceder automáticamente a los contratistas acceso a entornos específicos que normalmente solo estarían disponibles para los empleados a tiempo completo. Para obtener instrucciones, consulta el resto de este documento.
  • Audita y analiza la información de facturación en función de las etiquetas aplicadas a nivel de proyecto u organización.

Cómo funciona

Para aplicar políticas de cortafuegos de red específicamente, crea una etiqueta y designa explícitamente la etiqueta para usarla en el cortafuegos. Para el resto de los fines, puede crear una etiqueta sin definir una designación de cortafuegos.

Después de crear la etiqueta, la adjunta a sus recursos de GKE como un par clave-valor. En el caso de las políticas de cortafuegos de red, se usa la API de GKE, mientras que, para el resto de los casos, se usa la API Tags.

Puedes asociar un valor a cada clave de un recurso. Por ejemplo, si has adjuntado env:dev a un clúster de GKE, no puedes adjuntar env:prod ni env:test. Puedes adjuntar hasta 50 etiquetas que no sean de cortafuegos y hasta cinco etiquetas de cortafuegos a cada recurso.

Métodos de anotación de recursos en GKE

En GKE, hay varios métodos para anotar tus recursos, como se indica en la siguiente tabla:

Tipo de anotación Descripción Ejemplo
Etiquetas (no de cortafuegos)
  • Aplicar a un recurso de clúster mediante la API Tags
  • Organizar los recursos para monitorizar el uso y la facturación
  • Aplicar políticas de gestión de identidades y accesos de forma condicional
  • Controlar el acceso a etiquetas específicas con la gestión de identidades y accesos

Para obtener más información, consulta el artículo Introducción a las etiquetas.

Concede roles de gestión de identidades y accesos de forma condicional para controlar el acceso a recursos que tengan etiquetas específicas
Etiquetas (cortafuegos)
  • Aplicar a un clúster o a un grupo de nodos mediante la API de GKE
  • Aplica condicionalmente políticas de cortafuegos de red de Cloud Next Generation Firewall.
  • Controlar el acceso a etiquetas específicas con la gestión de identidades y accesos
  • GKE asocia los pares clave-valor a las VMs de Compute Engine subyacentes.

Para obtener más información, consulta Aplicar selectivamente políticas de cortafuegos de red en GKE.

Denegar automáticamente el tráfico entrante de Internet público a todos los entornos de staging o de prueba
Etiquetas de red
  • Aplicar a un clúster o a un grupo de nodos mediante la API de GKE
  • Cadenas sencillas sin control de acceso de gestión de identidades y accesos
  • Se usa para aplicar condicionalmente reglas de cortafuegos de VPC.
  • GKE asocia los pares clave-valor a las VMs de Compute Engine subyacentes.

Para obtener más información, consulta Usar etiquetas de red para aplicar reglas de cortafuegos a nodos.

Denegar automáticamente el tráfico entrante de Internet público a todos los entornos de staging o de prueba
Etiquetas de clúster de GKE
  • Aplicar a un clúster o a un grupo de nodos mediante la API de GKE
  • Organizar los recursos para monitorizar el uso y la facturación

Para obtener más información, consulta Etiquetas de clústeres.

Diferenciar entre los clústeres que pertenecen a centros de costes o equipos específicos de tu organización.
Etiquetas de Kubernetes
  • Aplicar a objetos de la API de Kubernetes
  • Asociar componentes y recursos de clústeres entre sí y gestionar los ciclos de vida de los recursos.

Para obtener más información, consulta Etiquetas y selectores de Kubernetes.

Requerir que las cargas de trabajo se programen en nodos con etiquetas específicas.

Antes de empezar

Antes de empezar, asegúrate de que has realizado las siguientes tareas:

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando gcloud components update.

Adjuntar etiquetas a un clúster

Puedes asociar etiquetas a un clúster si tienes los permisos correctos mediante la CLI de Google Cloud, la consola, la API Tags o Terraform. Trusted Cloud

gcloud

Para poder adjuntar una etiqueta a tus recursos de GKE con la CLI de gcloud, debes crear la etiqueta y configurar sus valores. Para crear claves y valores de etiquetas, consulte los artículos Crear una etiqueta y Añadir valores de etiquetas.

Para crear un enlace de etiqueta que adjunte una etiqueta a un clúster, ejecuta el siguiente comando:

gcloud alpha resource-manager tags bindings create \
    --tag-value=TAG_VALUE_ID \
    --parent=RESOURCE_ID \
    --location=CLUSTER_LOCATION

Haz los cambios siguientes:

  • TAG_VALUE_ID: el ID permanente o el nombre con espacio de nombres del valor de la etiqueta que se va a adjuntar. Por ejemplo, tagValues/4567890123. Para obtener información sobre los identificadores de etiquetas, consulta Definiciones e identificadores de etiquetas.
  • CLUSTER_LOCATION: la ubicación de Compute Engine. En el caso de los clústeres zonales, especifica la zona de cálculo.
  • RESOURCE_ID: el nombre completo del recurso de tu clúster, como //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    En el ID de recurso:

    • PROJECT_ID: tu ID de proyecto Trusted Cloud by S3NS .
    • CLUSTER_NAME: el nombre del clúster.

Consola

Para poder adjuntar una etiqueta a tus recursos de GKE mediante laTrusted Cloud consola, debes crear la etiqueta y configurar sus valores. Para crear claves y valores de etiquetas, consulte los artículos Crear una etiqueta y Añadir valores de etiquetas.

  1. Ve a la página Google Kubernetes Engine en la Trusted Cloud consola.

    Ir a Google Kubernetes Engine

  2. En la lista de clústeres, haga clic en el nombre del clúster que quiera modificar.

  3. En la sección Metadatos, junto a Etiquetas, haz clic en Editar etiquetas.

  4. Si tu organización no aparece en el panel Etiquetas, haz clic en Seleccionar ámbito. Selecciona tu organización y haz clic en Abrir.

  5. En el panel Etiquetas, selecciona Añadir etiqueta.

  6. Selecciona la clave de la etiqueta que quieras adjuntar en la lista. Puedes filtrar la lista escribiendo palabras clave.

  7. Selecciona el valor de la etiqueta que quieras adjuntar de la lista. Puedes filtrar la lista escribiendo palabras clave.

  8. Haz clic en Guardar.

  9. En el cuadro de diálogo Confirmar, haz clic en Confirmar para adjuntar la etiqueta.

    Recibirás una notificación para confirmar que se han actualizado las etiquetas.

API

Para adjuntar una etiqueta a un recurso, primero debes crear una representación JSON de una vinculación de etiqueta que incluya los IDs permanentes del valor de la etiqueta y del recurso. Para obtener más información sobre el formato de un enlace de etiqueta, consulta la referencia de TagBinding.

Usa el método tagBindings.create con el endpoint regional o zonal en el que se encuentra tu clúster.

POST https://LOCATION-cloudresourcemanager.googleapis.com/v3/tagBindings

Sustituye LOCATION por la región o la zona en la que se encuentra tu clúster.

Cuerpo de la solicitud JSON:

{
  "parent": "RESOURCE_ID",
  "tagValue": "TAG_VALUE_ID"
}

Haz los cambios siguientes:

  • RESOURCE_ID: el nombre completo del recurso de tu clúster, como //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    En el ID de recurso:

    • PROJECT_ID: tu ID de proyecto Trusted Cloud by S3NS .
    • CLUSTER_NAME: el nombre del clúster.
  • TAG_VALUE_ID: el ID permanente o el nombre con espacio de nombres del valor de la etiqueta que se va a adjuntar. Por ejemplo, tagValues/4567890123. Para obtener información sobre los identificadores de etiquetas, consulta Definiciones e identificadores de etiquetas.

El resultado debería ser similar al siguiente:

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.TagBinding",
    "name": "tagBindings///container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME/tagValues/TAG_VALUE_ID",
    "parent": "//container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME",
    "tagValue": "TAG_VALUE_ID"
  }
}

Terraform

Para crear una etiqueta, configurar sus valores y adjuntarla a un recurso con Terraform, consulta el siguiente ejemplo:

resource "google_container_cluster" "default" {
  name     = "gke-autopilot-tag"
  location = "us-central1"

  enable_autopilot = true
}

data "google_project" "default" {}

resource "google_tags_tag_key" "default" {
  parent      = "projects/${data.google_project.default.project_id}"
  short_name  = "env"
  description = "Environment tag key"
}

resource "google_tags_tag_value" "default" {
  parent      = "tagKeys/${google_tags_tag_key.default.name}"
  short_name  = "dev"
  description = "Development environment tag value."
}

resource "google_tags_location_tag_binding" "default" {
  parent    = "//container.googleapis.com/${google_container_cluster.default.id}"
  location  = google_container_cluster.default.location
  tag_value = "tagValues/${google_tags_tag_value.default.name}"
}

Para obtener más información sobre el uso de Terraform, consulta Compatibilidad de Terraform con GKE.

Mostrar las etiquetas asociadas a un clúster

Puedes consultar las etiquetas asociadas a un clúster mediante la CLI de gcloud, la Trusted Cloud consola o la API Tags.

gcloud

Para obtener una lista de las asociaciones de etiquetas conectadas a un clúster, ejecuta el siguiente comando:

gcloud alpha resource-manager tags bindings list \
    --parent=RESOURCE_ID \
    --location=CLUSTER_LOCATION

Haz los cambios siguientes:

  • CLUSTER_LOCATION: en el caso de los clústeres regionales, especifica la región de Compute Engine. En el caso de los clústeres zonales, especifica la zona de cálculo.

  • RESOURCE_ID: el nombre completo del recurso de tu clúster, como //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    En el ID de recurso:

    • PROJECT_ID: tu ID de proyecto Trusted Cloud by S3NS .

    • CLUSTER_NAME: el nombre del clúster.

Consola

  1. Ve a la página Google Kubernetes Engine en la Trusted Cloud consola.

    Ir a Google Kubernetes Engine

  2. En la lista de clústeres, haga clic en el nombre del clúster que quiera ver.

  3. En la sección Metadatos, junto a Etiquetas, busque los valores de etiqueta adjuntos.

API

Para obtener una lista de vinculaciones de etiquetas de un clúster, usa el método tagBindings.list con el endpoint regional o zonal en el que se encuentre tu clúster.

GET https://LOCATION-cloudresourcemanager.googleapis.com/v3/tagBindings

Cuerpo de la solicitud JSON:

{
  "parent": RESOURCE_ID,
}

Haz los cambios siguientes:

  • RESOURCE_ID: el nombre completo del recurso de tu clúster, como //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    En el ID de recurso:

    • PROJECT_ID: tu ID de proyecto Trusted Cloud by S3NS .
    • CLUSTER_NAME: el nombre del clúster.

El resultado debería ser similar al siguiente:

"tagBindings": [
  {
    "name": "tagBindings/%2F%2Fcontainer.googleapis.com%2Fprojects%2Ftags-bugbash-project%2Flocations%2LOCATION%2Fclusters%2Ftestcluster/tagValues/758072120217",
    "parent": "//container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME",
    "tagValue": "TAG_VALUE_ID"
  }
]

Desasociar etiquetas de un clúster

Para desvincular una etiqueta de un clúster, elimina el recurso de vinculación de etiquetas asociado al clúster mediante la CLI de gcloud, la Trusted Cloud consola o la API Tags. Si necesitas eliminar una etiqueta, primero debes desvincularla de todos los recursos a los que esté asociada.

gcloud

Para separar una vinculación de etiquetas asociada a un clúster, ejecuta el siguiente comando:

gcloud alpha resource-manager tags bindings delete \
    --tag-value=TAG_VALUE_ID \
    --parent=RESOURCE_ID \
    --location=CLUSTER_LOCATION

Haz los cambios siguientes:

  • TAG_VALUE_ID: el ID permanente o el nombre con espacio de nombres del valor de la etiqueta que se va a separar. Por ejemplo, tagValues/4567890123. Para obtener información sobre los identificadores de etiquetas, consulta el artículo Definiciones e identificadores de etiquetas.

  • CLUSTER_LOCATION: En el caso de los clústeres regionales, especifica la región de Compute Engine. En el caso de los clústeres zonales, especifica la zona de cálculo.

  • RESOURCE_ID: el nombre completo del recurso de tu clúster, como //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    En el ID de recurso:

    • PROJECT_ID: tu ID de proyecto Trusted Cloud by S3NS .

    • CLUSTER_NAME: el nombre del clúster.

Consola

  1. Ve a la página Google Kubernetes Engine en la Trusted Cloud consola.

    Ir a Google Kubernetes Engine

  2. En la lista de clústeres, haga clic en el nombre del clúster que quiera modificar.

  3. En la sección Metadatos, junto a Etiquetas, haz clic en Editar etiquetas.

  4. En el panel Etiquetas, junto a la etiqueta que quieras desvincular, haz clic en Eliminar elemento.

  5. Haz clic en Guardar.

  6. En el cuadro de diálogo Confirmar, haz clic en Confirmar para separar la etiqueta.

    Recibirás una notificación para confirmar que se han actualizado las etiquetas.

API

Para eliminar enlaces de etiquetas de un clúster, usa el método tagBindings.delete con el endpoint regional o de zona en el que se encuentre el clúster.

DELETE https://LOCATION-cloudresourcemanager.googleapis.com/v3/TAG_BINDING_NAME

Sustituye TAG_BINDING_NAME por el nombre de recurso completo del objeto tagBinding que quieras separar. Por ejemplo, tagBindings/container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/tagValues/TAG_VALUE_ID.

Eliminar claves y valores de etiqueta

Antes de eliminar claves y valores de etiquetas, asegúrate de que las etiquetas no estén asociadas a ningún recurso. A continuación, consulta la sección sobre cómo eliminar etiquetas para eliminar las claves y los valores.

Condiciones y etiquetas de gestión de identidades y accesos

Puedes usar etiquetas y condiciones de gestión de identidades y accesos para conceder enlaces de roles de forma condicional a los usuarios de tu jerarquía de proyectos. Cuando cambias o eliminas la etiqueta asociada a un clúster, GKE puede quitar el acceso de los usuarios a ese clúster si se ha aplicado una política de permiso de IAM con enlaces de roles condicionales.

La autorización para enumerar y crear clústeres de GKE se comprueba a nivel de proyecto, no a nivel de clúster individual. Si usas enlaces de roles de gestión de identidades y accesos condicionales con etiquetas a nivel de clúster para restringir el acceso a clústeres específicos, es posible que los usuarios tengan problemas al intentar enumerar o crear clústeres en el proyecto. Para evitar estos errores, adjunta una etiqueta al proyecto principal y usa una vinculación de rol condicional para conceder acceso a la lista o crearla. Para obtener información sobre los roles y los permisos, consulta la referencia de roles de gestión de identidades y accesos.

Para obtener más información sobre las concesiones de acceso condicional en IAM, consulta Condiciones y etiquetas de gestión de identidades y accesos.

Siguientes pasos