Configurer les limites de gestion

Ce document explique comment configurer et gérer les limites de gestion et les configurations de fonctionnalités à l'aide de Resource Manager. Les limites de gestion permettent la découverte et la gouvernance des ressources multiprojets pour Agent Registry.

Avant de commencer

Avant de configurer les limites et les configurations de fonctionnalités, obtenez les rôles requis et activez l'API requise.

Rôles requis

Pour obtenir les autorisations nécessaires pour configurer les limites et les fonctionnalités, demandez à votre administrateur de vous accorder les rôles IAM suivants :

  • Créer, mettre à jour et supprimer des limites et des configurations de fonctionnalités : Éditeur Resource Manager (roles/resourcemanager.editor) sur le dossier ou l'organisation cible (et le projet de gestion, si vous fournissez un projet de gestion géré par l'utilisateur)
  • Afficher les limites et les configurations de fonctionnalités : Lecteur de Resource Manager (roles/resourcemanager.viewer) sur le dossier ou l'organisation cible
  • Associez des tags aux projets membres :

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

Activer une API

  • Pour activer l'API Resource Manager, utilisez la commande gcloud services enable :

    gcloud services enable cloudresourcemanager.googleapis.com \
      --project=PROJECT_ID
    

    Remplacez PROJECT_ID par l'ID de votre projet.

Configurer une limite de gestion

Vous pouvez configurer une limite de gestion sur un dossier ou une organisation de deux manières :

  • Limite à l'échelle du dossier ou de l'organisation (sans filtre de tag) : inclut tous les projets descendants du dossier ou de l'organisation. Ignorez les étapes 1 et 4, et effectuez uniquement l'étape 2 : Créer une limite (sans --tag-key et --tag-value) et l'étape 3 : Créer une configuration de capacité.
  • Limite basée sur les tags : partitionne les projets du dossier ou de l'organisation par valeurs de tag. Suivez les quatre étapes ci-dessous.

Étape 1 : Configurer la clé de tag de partitionnement

Ignorez cette étape si vous créez une limite à l'échelle d'un dossier ou d'une organisation sans filtre de tag. Par défaut, aucune clé de tag n'est configurée pour une ressource BoundaryConfig.

Pour les limites basées sur des tags, une ressource BoundaryConfig établit la clé de tag utilisée pour partitionner les projets dans un dossier ou une organisation. Configurez cette ressource avant de créer des limites basées sur des tags.

Pour définir la clé de tag de partitionnement, utilisez la commande gcloud resource-manager boundary-configs update :

gcloud resource-manager boundary-configs update \
  --folder=FOLDER_ID \
  --tag-key=TAG_KEY_NAME

Pour configurer la clé de tag sur une organisation, spécifiez --organization=ORGANIZATION_ID au lieu de --folder. Si vous avez déjà configuré une clé de tag et que vous souhaitez passer à une limite sans tag (lorsqu'aucune limite n'existe sous le parent), exécutez cette commande avec --clear-tag-key au lieu de --tag-key.

Remplacez les éléments suivants :

  • FOLDER_ID : ID du dossier parent
  • TAG_KEY_NAME : nom de votre clé de tag, au format ORGANIZATION_ID/TAG_KEY_SHORT_NAME, par exemple 123456789012/env

Étape 2 : Créez une limite

Créez une ressource Boundary dans votre dossier ou votre organisation.

Pour créer une limite à l'échelle d'un dossier sans filtre de tag (qui inclut automatiquement tous les projets descendants du dossier), utilisez la commande gcloud resource-manager boundaries create sans --tag-key ni --tag-value :

gcloud resource-manager boundaries create BOUNDARY_ID \
  --folder=FOLDER_ID \
  --display-name="Production Boundary"

Pour créer une limite basée sur des tags après avoir configuré la clé de tag de partitionnement à l'étape 1, incluez les options --tag-key et --tag-value :

gcloud resource-manager boundaries create BOUNDARY_ID \
  --folder=FOLDER_ID \
  --display-name="Production Boundary" \
  --tag-key=TAG_KEY_NAME \
  --tag-value=TAG_VALUE_SHORT_NAME

Pour créer une limite dans une organisation, spécifiez --organization=ORGANIZATION_ID au lieu de --folder.

Remplacez les éléments suivants :

  • BOUNDARY_ID : identifiant unique de la limite, par exemple prod-boundary
  • FOLDER_ID : ID du dossier parent
  • TAG_KEY_NAME : clé de tag que vous avez configurée, par exemple 123456789012/env
  • TAG_VALUE_SHORT_NAME : valeur de tag que les projets doivent avoir pour rejoindre la limite, par exemple prod

Étape 3 : Créez une configuration de fonctionnalité

Créez une ressource CapabilityConfig pour associer votre limite à un projet de gestion et déclarer les services gérés au-delà de la limite.

Pour créer une configuration de fonctionnalité, utilisez la commande gcloud resource-manager capability-configs create et spécifiez --types=agent-management pour le registre d'agents :

gcloud resource-manager capability-configs create \
  CAPABILITY_CONFIG_ID \
  --folder=FOLDER_ID \
  --types=agent-management \
  --boundaries=folders/FOLDER_ID/boundaries/BOUNDARY_ID \
  --display-name="DISPLAY_NAME"

Pour créer la configuration de fonctionnalité dans une organisation, spécifiez --organization=ORGANIZATION_ID au lieu de --folder.

Remplacez les éléments suivants :

  • CAPABILITY_CONFIG_ID : identifiant unique de la configuration de la fonctionnalité, par exemple prod-capabilities.
  • FOLDER_ID : ID du dossier parent
  • BOUNDARY_ID : ID de la limite que vous avez créée
  • DISPLAY_NAME : nom à afficher lisible par l'humain

Pour activer des fonctionnalités sur un seul projet autonome sans limites, ignorez les étapes 1, 2 et 4, puis exécutez cette commande avec --project=PROJECT_NUMBER et --management-project=projects/PROJECT_NUMBER au lieu de --folder et --boundaries.

Pour utiliser un projet existant comme projet de gestion, transmettez l'option --management-project=projects/PROJECT_NUMBER. Le projet que vous spécifiez doit répondre aux exigences suivantes, sinon la commande échoue et renvoie une erreur :

  • Résider directement sous le même parent (folders/FOLDER_ID ou organizations/ORGANIZATION_ID) que la ressource CapabilityConfig.
  • Être à l'état de cycle de vie ACTIVE.
  • Ne pas être déjà désigné comme projet de gestion.

Si vous omettez --management-project, Resource Manager provisionne automatiquement un projet de gestion dédié directement sous le dossier ou l'organisation parent.

La création d'une ressource CapabilityConfig active automatiquement les API de service correspondantes sur le projet de gestion (par exemple, agentregistry.googleapis.com lorsque vous spécifiez agent-management). Vous n'avez pas besoin d'activer manuellement ces API sur le projet de gestion.

Étape 4 : Associez des tags aux projets membres

Ignorez cette étape si vous avez créé une limite à l'échelle d'un dossier ou d'une organisation sans filtre de tag, car tous les projets descendants sont inclus automatiquement.

Pour les limites basées sur des tags, les projets rejoignent dynamiquement la limite de gestion lorsque vous leur associez la valeur de tag correspondante.

Pour associer le tag à chaque projet appartenant à la limite, utilisez la commande gcloud resource-manager tags bindings create :

gcloud resource-manager tags bindings create \
  --tag-value=TAG_VALUE_NAME \
  --parent=//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER

Remplacez les éléments suivants :

  • TAG_VALUE_NAME : nom de la valeur de tag, par exemple 123456789012/env/prod
  • PROJECT_NUMBER : numéro (ou ID) du projet que vous souhaitez inclure dans le périmètre.

Gérer les configurations de fonctionnalités

Vous pouvez lister, décrire, mettre à jour et supprimer des configurations de fonctionnalités. Les exemples de cette section utilisent --folder=FOLDER_ID. Pour gérer les configurations de fonctionnalités sur une organisation ou un projet, spécifiez --organization=ORGANIZATION_ID ou --project=PROJECT_NUMBER au lieu de --folder (les limites ne peuvent être associées qu'aux configurations de fonctionnalités au niveau du dossier ou de l'organisation).

Lister les configurations de fonctionnalités

Pour lister toutes les configurations de fonctionnalités d'un dossier, utilisez la commande gcloud resource-manager capability-configs list :

gcloud resource-manager capability-configs list \
  --folder=FOLDER_ID

Décrire une configuration de capacité

Pour afficher les détails de la configuration et le projet de gestion attribué, utilisez la commande gcloud resource-manager capability-configs describe :

gcloud resource-manager capability-configs describe \
  CAPABILITY_CONFIG_ID \
  --folder=FOLDER_ID

Mettre à jour les limites associées

Pour mettre à jour les limites associées à une configuration de fonctionnalité, utilisez la commande gcloud resource-manager capability-configs update :

gcloud resource-manager capability-configs update \
  CAPABILITY_CONFIG_ID \
  --folder=FOLDER_ID \
  --boundaries=folders/FOLDER_ID/boundaries/BOUNDARY_ID_1,folders/FOLDER_ID/boundaries/BOUNDARY_ID_2

La commande update accepte également les options --types et --display-name pour mettre à jour les types de fonctionnalités activés ou le nom à afficher.

Supprimer une configuration de fonctionnalité

Une ressource CapabilityConfig ne peut pas être supprimée tant que des limites y sont associées, et une ressource Boundary ne peut pas être supprimée tant qu'elle est associée à une ressource CapabilityConfig.

Pour supprimer une configuration de fonctionnalité lorsque la gestion multiprojet n'est plus nécessaire :

  1. Pour dissocier les limites associées, exécutez la commande gcloud resource-manager capability-configs update avec le flag --clear-boundaries :

    gcloud resource-manager capability-configs update \
      CAPABILITY_CONFIG_ID \
      --folder=FOLDER_ID \
      --clear-boundaries
    
  2. Pour supprimer la configuration de la fonctionnalité, utilisez la commande gcloud resource-manager capability-configs delete :

    gcloud resource-manager capability-configs delete \
      CAPABILITY_CONFIG_ID \
      --folder=FOLDER_ID
    

Étapes suivantes