Gérer des ressources GKE à l'aide de tags


Cette page explique comment utiliser des tags pour gérer vos clusters Google Kubernetes Engine (GKE) et appliquer de manière conditionnelle des stratégies Identity and Access Management aux nœuds.

Présentation

Les tags sont des paires clé/valeur qui vous permettent d'annoter et de gérer vos ressources Google Cloud au niveau de l'organisation ou du projet. Vous pouvez utiliser des tags pour organiser vos ressources et appliquer des stratégies de manière conditionnelle, telles que des pare-feu ou des stratégies IAM. Les tags sont compatibles avec le contrôle des accès IAM, qui vous permet de définir qui peut associer, créer, mettre à jour ou supprimer des tags.

Cas d'utilisation des tags dans GKE

Vous pouvez utiliser des tags dans GKE dans les situations suivantes :

  • Appliquez des règles de pare-feu réseau à des nœuds spécifiques de manière conditionnelle. Par exemple, refusez le trafic entrant provenant du réseau Internet public vers tous les nœuds d'un cluster dans des environnements de préproduction ou de test. Pour obtenir des instructions, consultez la section Appliquer de manière sélective les stratégies de pare-feu réseau dans GKE.
  • Accordez des rôles IAM de manière conditionnelle en fonction de tags. Par exemple, accordez automatiquement aux sous-traitants l'accès à des environnements spécifiques qui ne seraient normalement disponibles que pour les employés à temps plein. Pour obtenir des instructions, consultez le reste de ce document.
  • Auditez et analysez les informations de facturation en fonction des tags appliqués au niveau du projet ou de l'organisation.

Fonctionnement

Pour l'application de la stratégie de pare-feu réseau, vous créez un tag et désignez explicitement le tag pour l'utilisation du pare-feu. À toutes autres fins, vous créez un tag sans définir de désignation de pare-feu.

Après avoir créé le tag, vous devez l'associer à vos ressources GKE en tant que paire clé/valeur. Pour les stratégies de pare-feu réseau, vous utilisez l'API GKE, tandis que tous les autres objectifs utilisent l'API Tags.

Pour chaque clé, vous pouvez associer une valeur à une ressource. Par exemple, si vous avez associé env:dev à un cluster GKE, vous ne pouvez pas également associer env:prod ou env:test. Vous pouvez associer jusqu'à 50 tags sans pare-feu et jusqu'à cinq tags de pare-feu à chaque ressource.

Méthodes d'annotation des ressources dans GKE

Dans GKE, plusieurs méthodes permettent d'annoter vos ressources, comme indiqué dans le tableau suivant :

Type d'annotation Description Exemple
Tags (non pare-feu)
  • Appliquer à la ressource de cluster à l'aide de l'API Tags
  • Organiser les ressources pour suivre l'utilisation et la facturation
  • Appliquer des stratégies IAM de manière conditionnelle
  • Contrôler l'accès à des tags spécifiques avec IAM

Pour en savoir plus, consultez la page Présentation des tags.

Accorder des rôles IAM de manière conditionnelle pour contrôler l'accès aux ressources associées à des tags spécifiques
Tags (pare-feu)
  • Appliquer au cluster ou au pool de nœuds à l'aide de l'API GKE
  • Appliquer de manière conditionnelle les stratégies de pare-feu réseau Cloud Next Generation Firewall (NGFW).
  • Contrôler l'accès à des tags spécifiques avec IAM
  • GKE associe les paires clé/valeur aux VM Compute Engine sous-jacentes.

Pour en savoir plus, consultez la section Appliquer automatiquement les règles de pare-feu de réseau dans GKE.

Refuser automatiquement le trafic entrant provenant d'Internet public vers tous les environnements de préproduction ou de test
Tags réseau
  • Appliquer au cluster ou au pool de nœuds à l'aide de l'API GKE
  • Chaînes simples sans contrôle d'accès IAM
  • Permet d'appliquer des règles de pare-feu VPC de manière conditionnelle
  • GKE associe les paires clé/valeur aux VM Compute Engine sous-jacentes

Pour en savoir plus, consultez la section Utiliser des tags réseau pour appliquer des règles de pare-feu aux nœuds.

Refuser automatiquement le trafic entrant provenant d'Internet public vers tous les environnements de préproduction ou de test
Libellé de cluster GKE
  • Appliquer au cluster ou au pool de nœuds à l'aide de l'API GKE
  • Organiser les ressources pour suivre l'utilisation et la facturation

Pour en savoir plus, consultez la section Libellés de cluster.

Faire la distinction entre les clusters qui appartiennent à des centres de coûts ou à des équipes spécifiques de votre organisation
Étiquettes Kubernetes
  • Appliquer aux objets de l'API Kubernetes
  • Associer des composants et des ressources de cluster et gérer les cycles de vie des ressources

Pour en savoir plus, consultez la page Libellés et sélecteurs Kubernetes.

Exiger que les charges de travail soient planifiées sur des nœuds dotés de libellés spécifiques

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  • Activez l'API Google Kubernetes Engine.
  • Activer l'API Google Kubernetes Engine
  • Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande gcloud components update.

Associer des tags à un cluster

Vous pouvez associer des tags à un cluster existant, si vous disposez des autorisations appropriées, à l'aide de Google Cloud CLI, de la console Google Cloud ou de l'API Tags ou de Terraform.

gcloud

Pour pouvoir associer un tag à vos ressources GKE à l'aide de gcloud CLI, vous devez créer le tag et configurer ses valeurs. Pour créer des clés et des valeurs de tag, consultez les sections Créer un tag et Ajouter des valeurs de tag.

Pour créer une liaison de tag afin d'associer un tag à un cluster, exécutez la commande suivante :

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

Remplacez les éléments suivants :

  • TAG_VALUE_ID : ID permanent ou nom de l'espace de noms de la valeur de tag à associer. Par exemple, tagValues/4567890123. Pour en savoir plus sur les identifiants de tag, consultez la section Définitions et identifiants de tags.
  • CLUSTER_LOCATION: emplacement Compute Engine. Pour les clusters zonaux, spécifiez la zone de calcul.
  • RESOURCE_ID : nom complet de la ressource de votre cluster, tel que //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    Dans l'ID de ressource :

    • PROJECT_ID : ID de votre projet Google Cloud.
    • CLUSTER_NAME : le nom du cluster

Console

Pour pouvoir associer un tag à vos ressources GKE à l'aide de la console Google Cloud, vous devez créer le tag et configurer ses valeurs. Pour créer des clés et des valeurs de tag, consultez les sections Créer un tag et Ajouter des valeurs de tag.

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Dans la liste des clusters, cliquez sur le nom du cluster que vous souhaitez modifier.

  3. Dans la section Métadonnées, à côté de Tags, cliquez sur Modifier les tags.

  4. Si votre organisation n'apparaît pas dans le panneau Tags, cliquez sur Sélectionner un niveau d'accès. Sélectionnez votre organisation, puis cliquez sur Ouvrir.

  5. Dans le panneau Tags, sélectionnez Ajouter un tag.

  6. Dans la liste, sélectionnez la clé du tag que vous souhaitez associer. Vous pouvez filtrer la liste en saisissant des mots clés.

  7. Dans la liste, sélectionnez la valeur du tag que vous souhaitez associer. Vous pouvez filtrer la liste en saisissant des mots clés.

  8. Cliquez sur Enregistrer.

  9. Dans la boîte de dialogue Confirmer, cliquez sur Confirmer pour associer le tag.

    Une notification confirme que vos tags ont été mis à jour.

API

Pour associer un tag à une ressource, vous devez d'abord créer une représentation JSON d'une liaison de tag incluant les ID permanents de la valeur de tag et de la ressource. Pour en savoir plus sur le format d'une liaison de tag, consultez la documentation de référence sur la liaison de tag.

Utilisez la méthode tagBindings.create avec le point de terminaison régional ou zonal où se trouve votre cluster.

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

Remplacez LOCATION par la région ou la zone où se trouve votre cluster.

Corps de la requête JSON :

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

Remplacez les éléments suivants :

  • RESOURCE_ID : nom complet de la ressource de votre cluster, tel que //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    Dans l'ID de ressource :

    • PROJECT_ID : ID de votre projet Google Cloud.
    • CLUSTER_NAME : le nom du cluster
  • TAG_VALUE_ID : ID permanent ou nom de l'espace de noms de la valeur de tag à associer. Par exemple, tagValues/4567890123. Pour en savoir plus sur les identifiants de tag, consultez la section Définitions et identifiants de tags.

Le résultat ressemble à ce qui suit :

{
  "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

Pour créer un tag, configurer ses valeurs et associer un tag à une ressource à l'aide de Terraform, consultez l'exemple suivant:

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

  enable_autopilot = true

  # Set `deletion_protection` to `true` will ensure that one cannot
  # accidentally delete this instance by use of Terraform.
  deletion_protection = false
}

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}"
}

Pour en savoir plus sur l'utilisation de Terraform, consultez la page Compatibilité de Terraform avec GKE.

Répertorier les tags associés à un cluster

Vous pouvez répertorier les tags associés à un cluster à l'aide de gcloud CLI, de la console Google Cloud ou de l'API Tags.

gcloud

Pour obtenir la liste des liaisons de tags associées à un cluster, exécutez la commande suivante :

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

Remplacez les éléments suivants :

  • CLUSTER_LOCATION: pour les clusters régionaux, spécifiez la région de calcul. Pour les clusters zonaux, spécifiez la zone de calcul.

  • RESOURCE_ID : nom complet de la ressource de votre cluster, tel que //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    Dans l'ID de ressource :

    • PROJECT_ID : ID de votre projet Google Cloud.

    • CLUSTER_NAME : le nom du cluster

Console

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Dans la liste des clusters, cliquez sur le nom du cluster que vous souhaitez afficher.

  3. Dans la section Métadonnées, à côté de Tags, recherchez les valeurs de tag actuellement associées.

API

Pour obtenir la liste des liaisons de tags pour un cluster, utilisez la méthode tagBindings.list avec le point de terminaison régional ou zonal où se trouve votre cluster.

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

Corps de la requête JSON :

{
  "parent": RESOURCE_ID,
}

Remplacez les éléments suivants :

  • RESOURCE_ID : nom complet de la ressource de votre cluster, tel que //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    Dans l'ID de ressource :

    • PROJECT_ID : ID de votre projet Google Cloud.
    • CLUSTER_NAME : le nom du cluster

Le résultat ressemble à ce qui suit :

"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"
  }
]

Dissocier des tags d'un cluster

Vous pouvez dissocier un tag d'un cluster en supprimant la ressource de liaison de tag associée au cluster à l'aide de gcloud CLI, de la console Google Cloud ou de l'API Tags. Si vous devez supprimer un tag, vous devez d'abord dissocier toutes les ressources associées.

gcloud

Pour dissocier une liaison de tag associée à un cluster, exécutez la commande suivante :

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

Remplacez les éléments suivants :

  • TAG_VALUE_ID : ID permanent ou nom de l'espace de noms de la valeur de tag à dissocier. Par exemple, tagValues/4567890123. Pour en savoir plus sur les identifiants de tag, consultez la section Définitions et identifiants de tags.

  • CLUSTER_LOCATION: pour les clusters régionaux, spécifiez la région de calcul. Pour les clusters zonaux, spécifiez la zone de calcul.

  • RESOURCE_ID : nom complet de la ressource de votre cluster, tel que //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    Dans l'ID de ressource :

    • PROJECT_ID : ID de votre projet Google Cloud.

    • CLUSTER_NAME : le nom du cluster

Console

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Dans la liste des clusters, cliquez sur le nom du cluster que vous souhaitez modifier.

  3. Dans la section Métadonnées, à côté de Tags, cliquez sur Modifier les tags.

  4. Dans le panneau Tags, à côté du tag que vous souhaitez dissocier, cliquez sur Supprimer l'élément.

  5. Cliquez sur Enregistrer.

  6. Dans la boîte de dialogue Confirmer, cliquez sur Confirmer pour dissocier le tag.

    Une notification confirme que vos tags ont été mis à jour.

API

Pour supprimer des liaisons de tags pour un cluster, utilisez la méthode tagBindings.delete avec le point de terminaison régional ou zonal où se trouve votre cluster.

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

Remplacez TAG_BINDING_NAME par le nom complet de ressource de l'objet tagBinding que vous souhaitez dissocier. Par exemple, tagBindings/container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/tagValues/TAG_VALUE_ID.

Supprimer les clés et les valeurs de tag

Avant de supprimer des clés et des valeurs de tags, assurez-vous que les tags sont dissociés de toutes les ressources. Consultez la section Supprimer des tags pour savoir comment supprimer les clés et les valeurs.

Conditions et tags Identity and Access Management

Vous pouvez utiliser des tags et des conditions IAM pour attribuer des liaisons de rôles de manière conditionnelle aux utilisateurs dans la hiérarchie de votre projet. Lorsque vous modifiez ou supprimez le tag associé à un cluster, GKE peut supprimer l'accès des utilisateurs à ce cluster si une stratégie d'autorisation IAM avec des liaisons de rôles conditionnelles a été appliquée.

L'autorisation de lister et de créer des clusters GKE est vérifiée au niveau du projet, et non au niveau du cluster individuel. Si vous utilisez des liaisons de rôles IAM conditionnelles avec des tags au niveau du cluster pour restreindre l'accès à des clusters spécifiques, ces utilisateurs peuvent rencontrer des erreurs lorsqu'ils tentent de lister ou de créer des clusters dans le projet. Pour éviter ces erreurs, associez un tag au projet parent et utilisez une liaison de rôle conditionnelle pour accorder la liste ou créer l'accès. Pour plus d'informations sur les rôles et les autorisations, consultez la documentation de référence sur les rôles IAM.

Pour en savoir plus sur les autorisations d'accès conditionnelles dans IAM, consultez la section Conditions et tags Identity and Access Management.

Étapes suivantes