Alterar o isolamento em clusters que usam o Private Service Connect


Nesta página, mostramos como alterar o isolamento de rede do plano de controle e dos nós do cluster. A alteração do modo de isolamento de um cluster só é compatível com clusters que usam o Private Service Connect para conectar de modo particular o plano de controle e os nós.

Por que mudar o isolamento de cluster

Por padrão, quando você cria clusters que usam o Private Service Connect, o GKE atribui um endereço IP externo (endpoint externo) ao plano de controle. Isso significa que qualquer VM com um endereço IP externo pode acessar o plano de controle.

Se você configurar redes autorizadas, poderá limitar os intervalos de endereços IP que têm acesso a seu plano de controle do cluster, mas o plano de controle do cluster ainda poderá ser acessado a partir de endereços IP de propriedade do Google Cloud (em inglês). Por exemplo, qualquer VM com um endereço IP externo atribuído no Google Cloud pode acessar o endereço IP externo do plano de controle. No entanto, uma VM sem as credenciais correspondentes não poderá alcançar os nós

Benefícios

O isolamento de rede oferece os seguintes benefícios:

  • No mesmo cluster, é possível configurar uma combinação de nós privados e públicos. Isso reduz os custos dos nós que não precisam de um endereço IP externo para acessar serviços públicos na Internet.
  • É possível bloquear o acesso ao plano de controle a partir de endereços IP de propriedade do Google Cloud ou de endereços IP externos para isolar totalmente o plano de controle do cluster.

Esta página mostra como alterar esse comportamento padrão fazendo o seguinte:

  • Ativar ou desativar o acesso ao plano de controle a partir dos endereços IP de propriedade do Google Cloud. Essa ação impede que uma VM com um endereço IP do Google Cloud acesse seu plano de controle. Para mais informações, consulte Bloquear o acesso ao plano de controle dos endereços IP de propriedade do Google Cloud.
  • Ativar ou desativar o acesso público ao endpoint externo do plano de controle. Essa ação isola totalmente o cluster e o plano de controle não está acessível de nenhum endereço IP público. Para mais informações, consulte isolar o plano de controle do cluster.
  • Removendo endereços IP públicos dos nós. Essa ação isola completamente suas cargas de trabalho. Para mais informações, consulte isolar pools de nós.

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.

Bloquear o acesso ao plano de controle das VMs do Google Cloud, do Cloud Run e do Cloud Functions

Por padrão, se você criou um cluster com o Private Service Connect predefinido como público, o recurso de redes autorizadas será desativado por padrão.

Se você criou um cluster com o Private Service Connect predefinido como particular, o recurso de redes autorizadas será ativado por padrão. Para saber quais endereços IP sempre podem acessar o plano de controle do GKE, consulte Acesso aos endpoints do plano de controle.

Para remover o acesso ao plano de controle do cluster das VMs do Google Cloud, do Cloud Run e do Cloud Functions, use a CLI gcloud ou o console do Google Cloud:

gcloud

  1. Atualize o cluster para usar a sinalização --no-enable-google-cloud-access:

    gcloud container clusters update CLUSTER_NAME \
        --no-enable-google-cloud-access
    

    Substitua CLUSTER_NAME pelo nome do cluster.

  2. Confirme se a flag --no-enable-google-cloud-access está aplicada:

    gcloud container clusters describe CLUSTER_NAME | grep "gcpPublicCidrsAccessEnabled"
    

    O resultado será assim:

    gcpPublicCidrsAccessEnabled: false
    

Console

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

    Acessar o Google Kubernetes Engine

  2. Clique no nome do cluster que você quer modificar.

  3. Em Rede, no campo Redes autorizadas do plano de controle, clique em Editar redes autorizadas do plano de controle.

  4. Desmarque a caixa de seleção Permitir acesso por meio de endereços IP públicos do Google Cloud.

  5. Clique em Salvar alterações.

Permitir acesso ao plano de controle pelos endereços IP do Google Cloud

Para permitir o acesso de endereços IP públicos de propriedade do Google Cloud para o plano de controle do cluster, execute o seguinte comando:

gcloud

gcloud container clusters update CLUSTER_NAME \
    --enable-google-cloud-access

Substitua CLUSTER_NAME pelo nome do cluster.

Os endereços IP de propriedade do Google Cloud podem acessar seu plano de controle do cluster.

Console

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

    Acessar o Google Kubernetes Engine

  2. Clique no nome do cluster que você quer modificar.

  3. Em Rede, no campo Redes autorizadas do plano de controle, clique em Editar redes autorizadas do plano de controle.

  4. Marque a caixa de seleção Permitir acesso por meio de endereços IP públicos do Google Cloud.

  5. Clique em Salvar alterações.

Desativar o acesso externo ao plano de controle em clusters que usam o Private Service Connect

Clusters criados como públicos

Por padrão, quando você cria um cluster público do GKE, ele atribui um endereço IP público (endpoint externo) ao plano de controle. Se você instruir o GKE a cancelar a atribuição deste endpoint externo, o GKE vai ativar um endpoint particular. O acesso ao plano de controle a partir de endereços IP externos está desativado, exceto nos serviços do Google Cloud que executam processos de gerenciamento de clusters. Para mais informações sobre o endpoint particular ativado e a limitação dele, consulte clusters públicos com o Private Service Connect.

Para alterar o isolamento do plano de controle de um cluster criado como público, use a CLI gcloud:

  1. Atualize o cluster para usar a sinalização --enable-private-endpoint:

    gcloud container clusters update CLUSTER_NAME \
        --enable-private-endpoint
    

    Substitua CLUSTER_NAME pelo nome do cluster público.

  2. Confirme se a flag --enable-private-endpoint está aplicada:

    gcloud container clusters describe CLUSTER_NAME | grep "enablePrivateEndpoint"
    

    O resultado será assim:

    enablePrivateEndpoint:true
    

Clusters criados como particulares

Por padrão, quando você cria um cluster particular do GKE, o GKE atribui um endereço IP externo (endpoint externo) e um endereço IP interno (endpoint interno) ao plano de controle. É possível cancelar a atribuição do endpoint externo, mas não do interno.

Se você instruir o GKE a cancelar a atribuição do endpoint externo, o acesso externo ao plano de controle por endereços IP externos será desativado.

Para remover o endpoint externo de um cluster criado como particular, use a gcloud CLI ou o console do Google Cloud:

gcloud

  1. Atualize o cluster para usar a sinalização --enable-private-endpoint:

    gcloud container clusters update CLUSTER_NAME \
        --enable-private-endpoint
    

    Substitua CLUSTER_NAME pelo nome do cluster público.

  2. Confirme se a flag --enable-private-endpoint está aplicada:

    gcloud container clusters describe CLUSTER_NAME | grep "enablePrivateEndpoint"
    

    O resultado será assim:

    enablePrivateEndpoint: true
    

Console

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

    Acessar o Google Kubernetes Engine

  2. Clique no nome do cluster que você quer modificar.

  3. Em Noções básicas sobre clusters, no campo Endpoint externo, clique em Editar acesso ao plano de controle externo.

  4. Desmarque a caixa de seleção Permitir acesso por meio de endereços IP públicos do Google Cloud.

  5. Clique em Salvar alterações.

Ativar o acesso externo ao plano de controle em clusters que usam o Private Service Connect

Para atribuir um endereço IP externo (endpoint externo) ao plano de controle em clusters criados como públicos ou particulares, use a CLI gcloud ou o console do Google Cloud:

gcloud

Execute este comando:

gcloud container clusters update CLUSTER_NAME \
    --no-enable-private-endpoint

Substitua CLUSTER_NAME pelo nome do cluster público.

Endereços IP externos podem acessar seu plano de controle do cluster.

Console

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

    Acessar o Google Kubernetes Engine

  2. Clique no nome do cluster que você quer modificar.

  3. Em Noções básicas sobre clusters, no campo Endpoint externo, clique em Editar acesso ao plano de controle externo.

  4. Selecione a caixa de seleção Acesso ao plano de controle usando o endereço IP externo.

  5. Clique em Salvar alterações.

Isolar pools de nós

É possível instruir o GKE a provisionar pools de nós apenas com endereços IP particulares. Depois de atualizar um pool de nós público para o modo privado, as cargas de trabalho que exigem acesso à Internet pública podem falhar. Antes de alterar o isolamento dos nós, consulte as limitações de clusters do Private Service Connect. É possível editar essa configuração em clusters criados como públicos ou privados:

Autopilot

Em clusters do Autopilot, adicione um taint em pods atuais para que o GKE os provisione apenas em nós particulares:

  1. Para solicitar que o GKE programe um pod em nós particulares, adicione o nodeSelector a seguir à especificação do pod:

     cloud.google.com/private-node=true
    

    O GKE recria seus pods em nós particulares. Para evitar a interrupção da carga de trabalho, migre cada carga de trabalho de maneira independente e monitore a migração.

  2. Se você estiver usando a VPC compartilhada, ative o Acesso privado do Google depois de alterar o modo de isolamento do cluster. Se você está usando o Cloud NAT, não é necessário ativar o Acesso privado do Google.

Padrão

gcloud

Para provisionar nós por meio de endereços IP privados em um pool de nós atual, execute o seguinte comando:

  gcloud container node-pools update NODE_POOL_NAME \
      --cluster=CLUSTER_NAME \
      --enable-private-nodes

Substitua:

  • NODE_POOL_NAME: o nome do pool de nós que você quer editar.
  • CLUSTER_NAME: o nome do cluster do GKE.

    Se você estiver usando a VPC compartilhada, ative o Acesso privado do Google depois de alterar o modo de isolamento do cluster. Se você estiver usando o Cloud NAT, não será necessário ativar o Acesso privado do Google.

Console

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

    Acessar o Google Kubernetes Engine

  2. Na lista de clusters, clique no nome do cluster.

  3. Na página Clusters, clique na guia Nós.

  4. Em Pools de nós, clique no nome do pool.

  5. Clique em Editar.

  6. Marque a caixa de seleção Ativar nós particulares.

  7. Clique em Save.

Reverter o isolamento de pool de nós

Em clusters padrão, para instruir o GKE a provisionar pools de nós com endereços IP públicos, execute o seguinte comando:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --no-enable-private-nodes

Substitua:

  • NODE_POOL_NAME: o nome do pool de nós que você quer editar.
  • CLUSTER_NAME: o nome do cluster do GKE.

Os endereços IP públicos podem acessar os nós do cluster.

Limitações

Antes de alterar o modo de isolamento de clusters, considere as seguintes limitações:

  • A alteração do modo de isolamento não é compatível com clusters públicos em execução em redes legadas.
  • Depois de atualizar um pool de nós público para o modo particular, as cargas de trabalho que exigem acesso público à Internet podem falhar nos seguintes cenários:
    • Clusters em uma rede VPC compartilhada em que o Acesso privado do Google não está ativado. Ative manualmente o Acesso privado do Google para garantir que o GKE faça o download da imagem de nó atribuída. Para clusters que não estão em uma rede VPC compartilhada, o GKE ativa automaticamente o Acesso privado do Google.
    • Cargas de trabalho que exigem acesso à Internet em que o Cloud NAT não está ativado ou uma solução NAT personalizada não está definida. Para permitir o tráfego de saída para a Internet, ative o Cloud NAT ou uma solução NAT personalizada.

Clusters do Private Service Connect criados como públicos ou privados

Clusters criados como públicos e que usam o Private Service Connect têm um endpoint particular ativado. Neste endpoint particular, não há suporte para os endereços IP internos em URLs de webhooks novos ou atuais configurados. Para reduzir essa incompatibilidade, faça o seguinte:

  1. Configure um webhook com um endereço particular por URL.
  2. Criar um serviço headless sem um seletor.
  3. Crie um endpoint correspondente para o destino necessário.

Clusters do Private Service Connect criados como públicos

Todos os endereços IP particulares da rede do cluster sempre podem alcançar o endpoint particular do cluster em clusters do Private Service Connect criados como públicos. Para saber mais sobre o acesso ao plano de controle, consulte Redes autorizadas para acesso ao plano de controle.

A seguir