Gerenciar recursos do GKE usando tags


Nesta página, mostramos como usar tags para gerenciar os clusters do Google Kubernetes Engine (GKE) e aplicar condicionalmente políticas do Identity and Access Management aos nós.

Informações gerais

As tags são pares de chave-valor que permitem anotar e gerenciar os recursos do Google Cloud no nível da organização ou do projeto. Use tags para organizar seus recursos e aplicar condicionalmente políticas, como firewalls ou políticas do IAM. Elas oferecem suporte ao controle de acesso do IAM, que permite definir quem pode anexar, criar, atualizar ou excluir tags.

Casos de uso de tags no GKE

Use tags no GKE em situações como as seguintes:

  • Aplique condicionalmente políticas de firewall de rede a nós específicos. Por exemplo, negue o tráfego de entrada da Internet pública para todos os nós de um cluster em ambientes de preparo ou teste. Para instruções, consulte Aplicar seletivamente políticas de firewall de rede no GKE.
  • Conceda condicionalmente papéis do IAM com base em tags. Por exemplo, conceder automaticamente aos contratados acesso a ambientes específicos que normalmente estariam disponíveis apenas para funcionários em tempo integral. Para ver instruções, consulte o restante deste documento.
  • Audite e analise as informações de faturamento com base nas tags aplicadas no nível do projeto ou da organização.

Como funciona

Especificamente para a aplicação da política de firewall de rede, crie uma tag e designe explicitamente a tag para uso do firewall. Para todas as outras finalidades, você cria uma tag sem definir uma designação de firewall.

Depois de criar a tag, anexe-a aos recursos do GKE como um par de chave-valor. Para políticas de firewall de rede, use a API GKE e, para todas as outras finalidades, use a API Tags.

Para cada chave, é possível anexar um valor a um recurso. Por exemplo, se você anexou env:dev a um cluster GKE, também não é possível anexar env:prod ou env:test. É possível anexar até 50 tags que não são de firewall e até cinco tags de firewall a cada recurso.

Métodos de anotação de recurso no GKE

No GKE, há vários métodos para anotar seus recursos, conforme descrito na tabela a seguir:

Tipo de anotação Descrição Exemplo
Tags (sem firewall)
  • Aplicar ao recurso de cluster usando a API Tags
  • Organizar os recursos para rastrear o uso e o faturamento.
  • Aplicar condicionalmente políticas do IAM
  • Controlar o acesso a tags específicas com o IAM

Para saber mais, consulte a Visão geral das tags.

Conceda condicionalmente papéis do IAM para controlar o acesso a recursos que têm tags específicas
Tags (firewall)
  • Aplicar ao cluster ou pool de nós usando a API GKE
  • Aplicar condicionalmente as políticas de firewall de rede do Cloud Next Generation Firewall.
  • Controlar o acesso a tags específicas com o IAM
  • O GKE anexa os pares de chave-valor às VMs do Compute Engine.

Para saber mais, consulte Aplicar políticas de firewall de rede de forma seletiva no GKE.

Negar automaticamente o tráfego de entrada da Internet pública para todos os ambientes de preparo ou teste
Tags de rede
  • Aplicar ao cluster ou pool de nós usando a API GKE
  • Strings simples sem controle de acesso do IAM
  • Use para aplicar condicionalmente regras de firewall de VPC
  • O GKE anexa os pares de chave-valor às VMs do Compute Engine de base

Para saber mais, consulte Usar tags de rede para aplicar regras de firewall aos nós.

Negar automaticamente o tráfego de entrada da Internet pública para todos os ambientes de preparo ou teste
Rótulos de cluster do GKE
  • Aplicar ao cluster ou pool de nós usando a API GKE
  • Organizar os recursos para rastrear o uso e o faturamento.

Para saber mais, consulte Rótulos de cluster.

Diferenciar os clusters de centros de custo ou equipes específicos da sua organização.
Rótulos do Kubernetes
  • Aplicar aos objetos da API Kubernetes
  • Associar componentes e recursos do cluster uns aos outros e gerenciar os ciclos de vida dos recursos.

Para saber mais, consulte Rótulos e seletores do Kubernetes.

Exigir que as cargas de trabalho sejam programadas em nós com rótulos específicos.

Antes de começar

Antes de começar, verifique se você realizou as tarefas a seguir:

  • Ativar a API Google Kubernetes Engine.
  • Ativar a API Google Kubernetes Engine
  • Se você quiser usar a Google Cloud CLI para essa tarefa, instale e, em seguida, inicialize a CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão mais recente executando gcloud components update.

Criar chaves e valores de tags

Antes de anexar uma tag aos recursos do GKE, é preciso criar a tag e configurar os valores dela. Para criar chaves e valores de tag, consulte Como criar uma tag e Como adicionar valores de tag.

Anexar tags a um cluster

É possível anexar tags a um cluster atual quando você tem as permissões corretas usando a Google Cloud CLI, o console do Google Cloud ou a API Tags.

gcloud

Para criar uma vinculação de tag e anexar uma tag a um cluster, execute o seguinte comando:

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

Substitua:

  • TAG_VALUE_ID: o ID permanente ou o namespace do valor de tag a ser anexado. Por exemplo, tagValues/4567890123. Para ver detalhes sobre os identificadores de tags, consulte Definições e identificadores de tags.
  • CLUSTER_LOCATION: para clusters regionais, especifique a região do Compute, como us-central1. Para clusters zonais, especifique a zona do Compute, como us-central1-a.
  • RESOURCE_ID: o nome completo do recurso do cluster, como //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    No ID do recurso:

    • PROJECT_ID pelo ID do projeto no Google Cloud.
    • CLUSTER_NAME: o nome do cluster.

Console

  1. Acesse a página Google Kubernetes Engine no console do Google Cloud.

    Acessar o Google Kubernetes Engine

  2. Na lista de clusters, clique no nome do cluster que você quer modificar.

  3. Na seção Metadados, ao lado de Tags, clique em Editar tags.

  4. Se a organização não aparecer no painel Tags, clique em Selecionar escopo. Selecione sua organização e clique em Abrir.

  5. No painel Tags, selecione Adicionar tag.

  6. Selecione na lista a chave da tag que você quer anexar. Para filtrar a lista, digite palavras-chave.

  7. Selecione na lista o valor da tag que você quer anexar. Para filtrar a lista, digite palavras-chave.

  8. Clique em Save.

  9. Na caixa de diálogo Confirmar, clique em Confirmar para anexar a tag.

    Uma notificação confirma que suas tags foram atualizadas.

API

Para anexar uma tag a um recurso, primeiro crie uma representação JSON de uma vinculação de tag que inclua os códigos permanentes do valor da tag e do recurso. Para mais informações sobre o formato de uma vinculação de tags, consulte a referência de TagBinding.

Use o método tagBindings.create com o endpoint regional ou zonal em que o cluster está localizado.

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

Substitua LOCATION pela região ou zona em que o cluster está localizado, por exemplo, us-central1.

Corpo da solicitação JSON:

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

Substitua:

  • RESOURCE_ID: o nome completo do recurso do cluster, como //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    No ID do recurso:

    • PROJECT_ID pelo ID do projeto no Google Cloud.
    • CLUSTER_NAME: o nome do cluster.
  • TAG_VALUE_ID: o ID permanente ou o namespace do valor de tag a ser anexado. Por exemplo, tagValues/4567890123. Para ver detalhes sobre os identificadores de tags, consulte Definições e identificadores de tags.

O resultado será assim:

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

Listar tags anexadas a um cluster

É possível listar as tags anexadas a um cluster usando a CLI gcloud, o console do Google Cloud ou a API Tags.

gcloud

Para ver uma lista de vinculações de tags anexadas a um cluster, execute o seguinte comando:

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

Substitua:

  • CLUSTER_LOCATION: para clusters regionais, especifique a região do Compute, como us-central1. Para clusters zonais, especifique a zona do Compute, como us-central1-a.

  • RESOURCE_ID: o nome completo do recurso do cluster, como //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    No ID do recurso:

    • PROJECT_ID pelo ID do projeto no Google Cloud.

    • CLUSTER_NAME: o nome do cluster.

Console

  1. Acesse a página Google Kubernetes Engine no console do Google Cloud.

    Acessar o Google Kubernetes Engine

  2. Na lista de clusters, clique no nome do cluster que você quer ver.

  3. Na seção Metadados, ao lado de Tags, procure os valores de tag anexados atualmente.

API

Para receber uma lista das vinculações de tag de um cluster, use o método tagBindings.list com o endpoint regional ou zonal em que o cluster está.

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

Corpo da solicitação JSON:

{
  "parent": RESOURCE_ID,
}

Substitua:

  • RESOURCE_ID: o nome completo do recurso do cluster, como //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    No ID do recurso:

    • PROJECT_ID pelo ID do projeto no Google Cloud.
    • CLUSTER_NAME: o nome do cluster.

A saída será assim:

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

Remover tags de um cluster

É possível desanexar uma tag de um cluster excluindo o recurso de vinculação de tags anexado ao cluster usando a CLI gcloud, o console do Google Cloud ou a API Tags. Se você precisar excluir uma tag, primeiro remova todos os recursos anexados.

gcloud

Para remover uma vinculação de tag anexada a um cluster, execute o seguinte comando:

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

Substitua:

  • TAG_VALUE_ID: o ID permanente ou o namespace do valor de tag que será desanexado. Por exemplo, tagValues/4567890123. Para ver detalhes sobre os identificadores de tags, consulte Definições e identificadores de tags.

  • CLUSTER_LOCATION: para clusters regionais, especifique a região de computação, como us-central1. Para clusters zonais, especifique a zona de computação, como us-central1-a.

  • RESOURCE_ID: o nome completo do recurso do cluster, como //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    No ID do recurso:

    • PROJECT_ID pelo ID do projeto no Google Cloud.

    • CLUSTER_NAME: o nome do cluster.

Console

  1. Acesse a página Google Kubernetes Engine no console do Google Cloud.

    Acessar o Google Kubernetes Engine

  2. Na lista de clusters, clique no nome do cluster que você quer modificar.

  3. Na seção Metadados, ao lado de Tags, clique em Editar tags.

  4. No painel Tags, ao lado da tag que você quer remover, clique em Excluir item.

  5. Clique em Save.

  6. Na caixa de diálogo Confirmar, clique em Confirmar para remover a tag.

    Uma notificação confirma que suas tags foram atualizadas.

API

Para excluir vinculações de tags de um cluster, use o método tagBindings.delete com o endpoint regional ou zonal em que o cluster está localizado.

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

Substitua TAG_BINDING_NAME pelo nome completo do recurso do objeto tagBinding que você quer remover. Por exemplo, tagBindings/container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/tagValues/TAG_VALUE_ID.

Excluir chaves e valores de tag

Antes de excluir chaves e valores de tags, verifique se as tags foram removidas de todos os recursos. Em seguida, consulte Como excluir tags para excluir as chaves e os valores.

Condições e tags do Identity and Access Management

É possível usar tags e condições do IAM para conceder vinculações de papéis condicionalmente aos usuários na hierarquia do projeto. Quando você altera ou exclui a tag anexada a um cluster, o GKE pode remover o acesso do usuário a esse cluster de acordo com a aplicação ou não de uma política do IAM com vinculações de papéis condicionais.

A autorização para listar e criar clusters do GKE é verificada no nível do projeto, não no nível do cluster individual. Se você usa vinculações condicionais de papel do IAM com tags no nível do cluster para restringir o acesso a clusters específicos, esses usuários talvez enfrentem erros ao tentar listar ou criar clusters no projeto. Para evitar esses erros, anexe uma tag ao projeto pai e use uma vinculação de papel condicional para conceder à lista ou criar acesso. Para informações sobre papéis e permissões, consulte a Referência de papéis do IAM.

Para mais informações sobre concessões de acesso condicional no IAM, consulte Condições e tags do Identity and Access Management.

A seguir