Configurar limites de gerenciamento

Neste documento, descrevemos como definir e gerenciar limites de gerenciamento e configurações de capacidade usando o Resource Manager. Os limites de gerenciamento permitem a descoberta e a governança de recursos entre projetos para o Agent Registry.

Antes de começar

Antes de definir os limites e as configurações de capacidade, consiga os papéis necessários e ative a API necessária.

Funções exigidas

Para receber as permissões necessárias para configurar limites e recursos, peça ao administrador que conceda a você os seguintes papéis do IAM:

  • Criar, atualizar e excluir limites e configurações de capacidade: Editor do Resource Manager (roles/resourcemanager.editor) na pasta ou organização de destino (e no projeto de gerenciamento, se você fornecer um projeto de gerenciamento gerenciado pelo usuário)
  • Ver limites e configurações de capacidade: Leitor do Resource Manager (roles/resourcemanager.viewer) na pasta ou organização de destino
  • Anexe tags aos projetos de membros:
    • Usuário de tag (roles/resourcemanager.tagUser) na pasta, na organização ou nos projetos de membros de destino
    • Administrador de tags (roles/resourcemanager.tagAdmin) na pasta ou organização de destino

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.

Ativar API

  • Para ativar a API Resource Manager, use o comando gcloud services enable:

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

    Substitua PROJECT_ID pelo ID do seu projeto.

Configurar um limite de gerenciamento

É possível configurar um limite de gerenciamento em uma pasta ou organização de duas maneiras:

  • Limite em toda a pasta ou organização (sem filtro de tag): inclui todos os projetos descendentes na pasta ou organização. Pule as etapas 1 e 4 e conclua apenas a Etapa 2: criar um limite (sem --tag-key e --tag-value) e a Etapa 3: criar uma configuração de recurso.
  • Limite baseado em tag: particiona projetos na pasta ou organização por valores de tag. Siga as quatro etapas abaixo.

Etapa 1: configurar a chave da tag de particionamento

Pule esta etapa se você estiver criando um limite para toda a pasta ou organização sem um filtro de tag. Por padrão, um recurso BoundaryConfig não tem uma chave de tag configurada.

Para limites baseados em tags, um recurso BoundaryConfig estabelece a chave de tag usada para particionar projetos em uma pasta ou organização. Configure esse recurso antes de criar limites baseados em tags.

Para definir a chave de tag de particionamento, use o comando gcloud resource-manager boundary-configs update:

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

Para configurar a chave de tag em uma organização, especifique --organization=ORGANIZATION_ID em vez de --folder. Se você já configurou uma chave de tag e quer mudar para um limite sem tag (quando não há limites no pai), execute este comando com --clear-tag-key em vez de --tag-key.

Substitua:

  • FOLDER_ID: o ID da pasta pai.
  • TAG_KEY_NAME: o nome da chave de tag, formatado como ORGANIZATION_ID/TAG_KEY_SHORT_NAME, como 123456789012/env

Etapa 2: criar um limite

Crie um recurso Boundary na pasta ou organização.

Para criar um limite em toda a pasta sem um filtro de tag (que inclui automaticamente todos os projetos descendentes na pasta), use o comando gcloud resource-manager boundaries create sem --tag-key e --tag-value:

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

Para criar um limite baseado em tags depois de configurar a chave de tag de particionamento na etapa 1, inclua as flags --tag-key e --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

Para criar um limite em uma organização, especifique --organization=ORGANIZATION_ID em vez de --folder.

Substitua:

  • BOUNDARY_ID: um ID exclusivo para o limite, como prod-boundary.
  • FOLDER_ID: o ID da pasta pai.
  • TAG_KEY_NAME: a chave de tag que você configurou, como 123456789012/env.
  • TAG_VALUE_SHORT_NAME: o valor da tag que os projetos precisam ter para ingressar no limite, como prod

Etapa 3: criar uma configuração de recurso

Crie um recurso CapabilityConfig para vincular seu limite a um projeto de gerenciamento e declarar quais serviços são gerenciados no limite.

Para criar uma configuração de recurso, use o comando gcloud resource-manager capability-configs create e especifique --types=agent-management para o registro de agente:

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"

Para criar a configuração de recurso em uma organização, especifique --organization=ORGANIZATION_ID em vez de --folder.

Substitua:

  • CAPABILITY_CONFIG_ID: um ID exclusivo para a configuração de capacidade, como prod-capabilities.
  • FOLDER_ID: o ID da pasta pai.
  • BOUNDARY_ID: o ID do limite que você criou.
  • DISPLAY_NAME: um nome de exibição legível por humanos

Para ativar recursos em um único projeto independente sem limites, pule as etapas 1, 2 e 4 e execute este comando com --project=PROJECT_NUMBER e --management-project=projects/PROJECT_NUMBER em vez de --folder e --boundaries.

Para usar um projeto atual como o de gerenciamento, transmita a flag --management-project=projects/PROJECT_NUMBER. O projeto especificado precisa atender aos seguintes requisitos, caso contrário, o comando falhará com um erro:

  • Residir diretamente no mesmo pai (folders/FOLDER_ID ou organizations/ORGANIZATION_ID) que o recurso CapabilityConfig.
  • Estar no estado de ciclo de vida ACTIVE.
  • Não estar designado como um projeto de gerenciamento.

Se você omitir --management-project, o Resource Manager provisionará automaticamente um projeto de gerenciamento dedicado diretamente na pasta ou organização pai.

A criação de um recurso CapabilityConfig ativa automaticamente as APIs de serviço correspondentes no projeto de gerenciamento (como agentregistry.googleapis.com ao especificar agent-management). Não é necessário ativar manualmente essas APIs no projeto de gerenciamento.

Etapa 4: anexar tags aos projetos de membros

Pule esta etapa se você tiver criado um limite para toda a pasta ou organização sem um filtro de tag, porque todos os projetos descendentes são incluídos automaticamente.

Para limites baseados em tags, os projetos se juntam dinamicamente ao limite de gerenciamento quando você vincula o valor de tag correspondente a eles.

Para anexar a tag a cada projeto que pertence ao limite, use o comando gcloud resource-manager tags bindings create:

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

Substitua:

  • TAG_VALUE_NAME: o nome do valor da tag, como 123456789012/env/prod
  • PROJECT_NUMBER: o número (ou ID do projeto) do projeto que você quer incluir no limite.

Gerenciar configurações de recursos

É possível listar, descrever, atualizar e excluir configurações de recursos. Os exemplos nesta seção usam --folder=FOLDER_ID. Para gerenciar configurações de capacidade em uma organização ou um projeto, especifique --organization=ORGANIZATION_ID ou --project=PROJECT_NUMBER em vez de --folder (os limites só podem ser anexados a configurações de capacidade no nível da pasta ou da organização).

Listar configurações de recursos

Para listar todas as configurações de recursos em uma pasta, use o comando gcloud resource-manager capability-configs list:

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

Descrever uma configuração de capability

Para ver os detalhes da configuração e o projeto de gerenciamento atribuído, use o comando gcloud resource-manager capability-configs describe:

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

Atualizar limites associados

Para atualizar os limites vinculados a uma configuração de recurso, use o comando 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

O comando update também aceita as sinalizações --types e --display-name para atualizar os tipos de recursos ativados ou o nome de exibição.

Excluir uma configuração de recurso

Não é possível excluir um recurso CapabilityConfig enquanto houver limites anexados a ele, e não é possível excluir um recurso Boundary enquanto ele estiver anexado a um recurso CapabilityConfig.

Para excluir uma configuração de recurso quando o gerenciamento entre projetos não for mais necessário:

  1. Para remover os limites associados, use o comando gcloud resource-manager capability-configs update com a flag --clear-boundaries:

    gcloud resource-manager capability-configs update \
      CAPABILITY_CONFIG_ID \
      --folder=FOLDER_ID \
      --clear-boundaries
    
  2. Para excluir a configuração de recurso, use o comando gcloud resource-manager capability-configs delete:

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

A seguir