Como criar um cluster privado


Nesta página, você aprende a criar um cluster particular do Google Kubernetes Engine (GKE), que é um tipo de cluster nativo de VPC. Em um cluster particular, os nós têm apenas endereços IP internos, o que significa que os nós e os pods estão isolados da Internet por padrão. Você pode optar por não ter acesso de cliente, acesso limitado ou acesso irrestrito ao plano de controle.

Restrições e limitações

Clusters particulares precisam ser nativos de VPC. Clusters nativos de VPC não são compatíveis com redes legadas.

Abra as seções a seguir para conferir as regras sobre intervalos de endereços IP e tráfego ao criar um cluster.

Antes de começar

Antes de começar, veja se você realizou as seguintes tarefas:

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

Como criar um cluster privado sem acesso de cliente ao endpoint público

Nesta seção, você criará os recursos a seguir:

  • Um cluster particular chamado private-cluster-0 que tem nós particulares e que não tem acesso de cliente ao endpoint público.
  • Uma rede chamada my-net-0.
  • Uma sub-rede chamada my-subnet-0.

Console

Criar uma rede e uma sub-rede

  1. Acesse a página Redes VPC no console do Google Cloud.

    Acessar redes VPC

  2. Clique em Criar rede VPC.

  3. Em Nome, insira my-net-0.

  4. Em Modo de criação da sub-rede, selecione Personalizado.

  5. Na caixa Nova sub-rede, para Nome, digite my-subnet-0.

  6. Na lista Região, selecione a região desejada.

  7. Em Intervalo de endereços IP, insira 10.2.204.0/22.

  8. Defina o Acesso privado do Google como Ativado.

  9. Clique em Concluído.

  10. Clique em Criar.

crie um cluster particular

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

    Acessar o Google Kubernetes Engine

  2. Clique em Criar e, na seção Standard ou Autopilot, clique em Configurar.

  3. Em Nome, especifique private-cluster-0.

  4. No painel de navegação, clique em Rede.

  5. Na lista Rede, selecione my-net-0.

  6. Na lista Sub-rede de nós, selecione my-subnet-0.

  7. Selecione o botão de opção Cluster particular.

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

  9. Opcional para o Autopilot: defina o Intervalo de IP do plano de controle para 172.16.0.32/28.

  10. Clique em Criar.

gcloud

  • Para clusters do Autopilot, execute o seguinte comando:

    gcloud container clusters create-auto private-cluster-0 \
        --create-subnetwork name=my-subnet-0 \
        --enable-master-authorized-networks \
        --enable-private-nodes \
        --enable-private-endpoint
    
  • Para clusters padrão, execute o seguinte comando:

    gcloud container clusters create private-cluster-0 \
        --create-subnetwork name=my-subnet-0 \
        --enable-master-authorized-networks \
        --enable-ip-alias \
        --enable-private-nodes \
        --enable-private-endpoint \
        --master-ipv4-cidr 172.16.0.32/28
    

em que:

  • --create-subnetwork name=my-subnet-0 faz com que o GKE crie automaticamente uma sub-rede denominada my-subnet-0;
  • --enable-master-authorized-networks especifica que o acesso ao endpoint público é restrito aos intervalos de endereços IP que você autorizar;
  • --enable-ip-alias torna o cluster nativo da VPC (não necessário para o Autopilot).
  • --enable-private-nodes indica que os nós do cluster não têm endereços IP externos.
  • --enable-private-endpoint indica que o cluster é gerenciado usando o endereço IP interno do endpoint da API do plano de controle.
  • --master-ipv4-cidr 172.16.0.32/28 especifica um intervalo de endereços IP internos para o plano de controle (opcional para o Autopilot). Essa configuração é permanente para esse cluster e precisa ser exclusiva na VPC. O uso de endereços IP internos não RFC 1918 é compatível.

API

Para criar um cluster sem um plano de controle acessível publicamente, especifique o campo enablePrivateEndpoint: true no recurso privateClusterConfig.

Nesse momento, os únicos endereços IP que têm acesso ao plano de controle são estes:

  • O intervalo principal de my-subnet-0
  • O intervalo secundário usado para os pods.

Por exemplo, suponha que você tenha criado uma VM no intervalo principal de my-subnet-0. Então, nessa VM, seria possível configurar kubectl para usar o endereço IP interno do plano de controle.

Se você quiser acessar o plano de controle de fora do my-subnet-0, precisará autorizar pelo menos um intervalo de endereços a ter acesso ao endpoint particular.

Suponha que você tenha uma VM na rede padrão, na mesma região que seu cluster, mas não em my-subnet-0.

Por exemplo:

  • my-subnet-0: 10.0.0.0/22
  • intervalo secundário de pods: 10.52.0.0/14
  • endereço da VM: 10.128.0.3

Use o comando a seguir para autorizar a VM a acessar o plano de controle:

gcloud container clusters update private-cluster-0 \
    --enable-master-authorized-networks \
    --master-authorized-networks 10.128.0.3/32

Como criar um cluster privado com acesso limitado ao endpoint público

Ao criar um cluster privado usando essa configuração, é possível optar por usar uma sub-rede gerada automaticamente ou uma sub-rede personalizada.

Como usar uma sub-rede gerada automaticamente

Nesta seção, você cria um cluster particular chamado private-cluster-1 em que o GKE gerar automaticamente uma sub-rede para os nós do cluster. Ela já tem o recurso “Acesso privado do Google” ativado. Na sub-rede, o GKE cria automaticamente dois intervalos secundários: um para os pods e outro para os serviços.

É possível usar a Google Cloud CLI ou a API GKE.

gcloud

  • Para clusters do Autopilot, execute o seguinte comando:

    gcloud container clusters create-auto private-cluster-1 \
        --create-subnetwork name=my-subnet-1 \
        --enable-master-authorized-networks \
        --enable-private-nodes
    
  • Para clusters padrão, execute o seguinte comando:

    gcloud container clusters create private-cluster-1 \
        --create-subnetwork name=my-subnet-1 \
        --enable-master-authorized-networks \
        --enable-ip-alias \
        --enable-private-nodes \
        --master-ipv4-cidr 172.16.0.0/28
    

em que:

  • --create-subnetwork name=my-subnet-1 faz com que o GKE crie automaticamente uma sub-rede denominada my-subnet-1;
  • --enable-master-authorized-networks especifica que o acesso ao endpoint público é restrito aos intervalos de endereços IP que você autorizar;
  • --enable-ip-alias torna o cluster nativo da VPC (não necessário para o Autopilot).
  • --enable-private-nodes indica que os nós do cluster não têm endereços IP externos.
  • --master-ipv4-cidr 172.16.0.0/28 especifica um intervalo de endereços IP internos para o plano de controle (opcional para o Autopilot). Essa configuração é permanente para esse cluster e precisa ser exclusiva na VPC. O uso de endereços IP internos não RFC 1918 é compatível.

API

Especifique o campo privateClusterConfig no recurso da API Cluster:

{
  "name": "private-cluster-1",
  ...
  "ipAllocationPolicy": {
    "createSubnetwork": true,
  },
  ...
    "privateClusterConfig" {
      "enablePrivateNodes": boolean # Creates nodes with internal IP addresses only
      "enablePrivateEndpoint": boolean # false creates a cluster control plane with a publicly-reachable endpoint
      "masterIpv4CidrBlock": string # CIDR block for the cluster control plane
      "privateEndpoint": string # Output only
      "publicEndpoint": string # Output only
  }
}

Nesse momento, os únicos endereços IP que têm acesso ao plano de controle do cluster são estes:

  • O intervalo principal de my-subnet-1
  • O intervalo secundário usado para os pods

Imagine que você tem um grupo de máquinas fora da sua rede VPC, com endereços no intervalo 203.0.113.0/29. Digite o comando abaixo para autorizar que essas máquinas acessem o endpoint público:

gcloud container clusters update private-cluster-1 \
    --enable-master-authorized-networks \
    --master-authorized-networks 203.0.113.0/29

Agora, estes são os únicos endereços IP que têm acesso ao plano de controle:

  • O intervalo principal de my-subnet-1
  • O intervalo secundário usado para os pods.
  • Os intervalos autorizados, como 203.0.113.0/29

Como usar uma sub-rede personalizada

Nesta seção, você criará os recursos a seguir:

  • Um cluster particular chamado private-cluster-2.
  • Uma rede chamada my-net-2.
  • Uma sub-rede chamada my-subnet-2, com intervalo principal 192.168.0.0/20, para seus nós de cluster. Sua sub-rede tem os seguintes intervalos de endereços secundários:
    • my-pods para os endereços IP de pods.
    • my-services para os endereços IP do Serviço.

Console

Criar uma rede, sub-rede e intervalos secundários

  1. Acesse a página Redes VPC no console do Google Cloud.

    Acessar redes VPC

  2. Clique em Criar rede VPC.

  3. Em Nome, insira my-net-2.

  4. Em Modo de criação da sub-rede, selecione Personalizado.

  5. Na caixa Nova sub-rede, para Nome, digite my-subnet-2.

  6. Na lista Região, selecione a região desejada.

  7. Em Intervalo de endereços IP, insira 192.168.0.0/20.

  8. Clique em Criar um intervalo de IP secundário. Digite my-services em Nome do intervalo da sub-rede e 10.0.32.0/20 em Intervalo de IP secundário.

  9. Clique em Adicionar intervalo de IP. Digite my-pods em Nome do intervalo da sub-rede e 10.4.0.0/14 em Intervalo de IP secundário.

  10. Defina o Acesso privado do Google como Ativado.

  11. Clique em Concluído.

  12. Clique em Criar.

Criar um cluster particular

Crie um cluster particular que usa a sub-rede:

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

    Acessar o Google Kubernetes Engine

  2. Clique em Criar e, na seção Standard ou Autopilot, clique em Configurar.

  3. Em Nome, insira private-cluster-2.

  4. No painel de navegação, clique em Rede.

  5. Selecione o botão de opção Cluster particular.

  6. Para criar um plano de controle que possa ser acessado por intervalos de IP externos autorizados, mantenha marcada a caixa de seleção Acessar ao plano de controle usando o endereço IP externo.

  7. Opcional para o Autopilot: defina o Intervalo de IP do plano de controle para 172.16.0.16/28.

  8. Na lista Rede, selecione my-net-2.

  9. Na lista Sub-rede de nós, selecione my-subnet-2.

  10. Desmarque a caixa de seleção Criar intervalos secundários automaticamente.

  11. Na lista Intervalo CIDR secundário do pod, selecione my-pods.

  12. Na lista Serviços do intervalo CIDR secundário, selecione my-services.

  13. Marque a caixa de seleção Ativar redes autorizadas do plano de controle.

  14. Clique em Criar.

gcloud

Criar uma rede

Primeiro, crie uma rede para o cluster. O comando a seguir cria uma rede, my-net-2:

gcloud compute networks create my-net-2 \
    --subnet-mode custom

Criar uma sub-rede e intervalos secundários

Em seguida, crie uma sub-rede, my-subnet-2, na rede my-net-2, com intervalos secundários my-pods para pods e my-services para Services:

gcloud compute networks subnets create my-subnet-2 \
    --network my-net-2 \
    --range 192.168.0.0/20 \
    --secondary-range my-pods=10.4.0.0/14,my-services=10.0.32.0/20 \
    --enable-private-ip-google-access

Criar um cluster particular

Agora, crie um cluster particular, private-cluster-2, usando a rede, a sub-rede e os intervalos secundários criados.

  • Para clusters do Autopilot, execute o seguinte comando:

    gcloud container clusters create-auto private-cluster-2 \
        --enable-master-authorized-networks \
        --network my-net-2 \
        --subnetwork my-subnet-2 \
        --cluster-secondary-range-name my-pods \
        --services-secondary-range-name my-services \
        --enable-private-nodes
    
  • Para clusters padrão, execute o seguinte comando:

    gcloud container clusters create private-cluster-2 \
        --enable-master-authorized-networks \
        --network my-net-2 \
        --subnetwork my-subnet-2 \
        --cluster-secondary-range-name my-pods \
        --services-secondary-range-name my-services \
        --enable-private-nodes \
        --enable-ip-alias \
        --master-ipv4-cidr 172.16.0.16/28 \
        --no-enable-basic-auth \
        --no-issue-client-certificate
    

Nesse momento, os únicos endereços IP que têm acesso ao plano de controle são estes:

  • O intervalo principal de my-subnet-2
  • O intervalo secundário my-pods

Suponha que você tenha um grupo de máquinas fora de my-net-2 que tenham endereços no intervalo 203.0.113.0/29. Digite o comando abaixo para autorizar que essas máquinas acessem o endpoint público:

gcloud container clusters update private-cluster-2 \
    --enable-master-authorized-networks \
    --master-authorized-networks 203.0.113.0/29

Nesse momento, os únicos endereços IP que têm acesso ao plano de controle são estes:

  • O intervalo principal de my-subnet-2
  • O intervalo secundário my-pods
  • Os intervalos autorizados, como 203.0.113.0/29

Como usar o Cloud Shell para acessar um cluster particular

Se você tiver ativado um endpoint particular, não será possível acessar o plano de controle do GKE com o Cloud Shell.

Se você quiser usar o Cloud Shell para acessar o cluster, adicione o endereço IP externo do Cloud Shell à lista de redes autorizadas do cluster.

As etapas para fazer isso:

  1. Na janela da linha de comando do Cloud Shell, use dig para encontrar o endereço IP externo do seu Cloud Shell:

    dig +short myip.opendns.com @resolver1.opendns.com
    
  2. Adicione o endereço externo do seu Cloud Shell à lista de redes autorizadas do cluster:

    gcloud container clusters update CLUSTER_NAME \
        --enable-master-authorized-networks \
        --master-authorized-networks EXISTING_AUTH_NETS,SHELL_IP/32
    

    Substitua:

    • CLUSTER_NAME: o nome do cluster.
    • EXISTING_AUTH_NETS: os endereços IP da sua lista atual de redes autorizadas. É possível encontrar suas redes autorizadas no console ou executando o seguinte comando:

      gcloud container clusters describe CLUSTER_NAME --format "flattened(masterAuthorizedNetworksConfig.cidrBlocks[])"
      
    • SHELL_IP: é o endereço IP externo do seu Cloud Shell.

  3. Receba as credenciais para poder usar a kubectl para acessar o cluster:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --project=PROJECT_ID \
        --internal-ip
    

    Substitua PROJECT_ID pela ID do seu projeto.

  4. Use kubectl no Cloud Shell para acessar o cluster:

    kubectl get nodes
    

    O resultado será assim:

    NAME                                               STATUS   ROLES    AGE    VERSION
    gke-cluster-1-default-pool-7d914212-18jv   Ready    <none>   104m   v1.21.5-gke.1302
    gke-cluster-1-default-pool-7d914212-3d9p   Ready    <none>   104m   v1.21.5-gke.1302
    gke-cluster-1-default-pool-7d914212-wgqf   Ready    <none>   104m   v1.21.5-gke.1302
    

Como criar um cluster privado com acesso irrestrito ao endpoint público

Nesta seção, você cria um cluster privado em que qualquer endereço IP pode acessar o plano de controle.

Console

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

    Acessar o Google Kubernetes Engine

  2. Clique em Criar e, na seção Standard ou Autopilot, clique em Configurar.

  3. Em Nome, insira private-cluster-3.

  4. No painel de navegação, clique em Rede.

  5. Selecione a opção Cluster privado.

  6. Mantenha a caixa de seleção Acessar plano de controle usando o endereço IP externo marcada.

  7. Opcional para o Autopilot: defina o Intervalo de IP do plano de controle para 172.16.0.32/28.

  8. Deixe Rede e sub-rede do nó definidas como default. Dessa forma, o GKE gera uma sub-rede para o cluster.

  9. Desmarque a caixa de seleção Ativar redes autorizadas do plano de controle.

  10. Clique em Criar.

gcloud

  • Para clusters do Autopilot, execute o seguinte comando:

    gcloud container clusters create-auto private-cluster-3 \
        --create-subnetwork name=my-subnet-3 \
        --no-enable-master-authorized-networks \
        --enable-private-nodes
    
  • Para clusters padrão, execute o seguinte comando:

    gcloud container clusters create private-cluster-3 \
        --create-subnetwork name=my-subnet-3 \
        --no-enable-master-authorized-networks \
        --enable-ip-alias \
        --enable-private-nodes \
        --master-ipv4-cidr 172.16.0.32/28
    

em que:

  • --create-subnetwork name=my-subnet-3 faz com que o GKE crie automaticamente uma sub-rede denominada my-subnet-3;
  • --no-enable-master-authorized-networks desativa redes autorizadas para o cluster;
  • --enable-ip-alias torna o cluster nativo da VPC (não necessário para o Autopilot).
  • --enable-private-nodes indica que os nós do cluster não têm endereços IP externos.
  • --master-ipv4-cidr 172.16.0.32/28 especifica um intervalo de endereços IP internos para o plano de controle (opcional para o Autopilot). Essa configuração é permanente para esse cluster e precisa ser exclusiva na VPC. O uso de endereços IP internos não RFC 1918 é compatível.

Adicionar regras de firewall para casos de uso específicos

Esta seção explica como adicionar uma regra de firewall a um cluster. Por padrão, as regras de firewall restringem o plano de controle do cluster a apenas iniciar conexões TCP com os nós e pods nas portas 443 (HTTPS) e 10250 (kubelet). Para alguns recursos do Kubernetes, talvez seja necessário adicionar regras de firewall para permitir o acesso em outras portas. Não crie regras de firewall ou regras de políticas hierárquicas de firewall que tenham uma prioridade mais alta do que as regras de firewall criadas automaticamente.

Os recursos do Kubernetes que exigem regras de firewall adicionais incluem:

Adicionar uma regra de firewall permite o tráfego do plano de controle do cluster para todos os itens a seguir:

  • A porta especificada de cada nó (hostPort).
  • a porta especificada de cada pod em execução nesses nós
  • A porta especificada de cada Service em execução nesses nós

Para saber mais sobre as regras de firewall, consulte Regras de firewall na documentação do Cloud Load Balancing

Para adicionar uma regra de firewall a um cluster, você precisa registrar o bloco CIDR do plano de controle do cluster e o destino usado. Depois de registrá-la, é possível criar a regra.

Ver o bloco CIDR do plano de controle

Você precisa do bloco CIDR do plano de controle do cluster para adicionar uma regra de firewall.

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.

Na guia Detalhes, em Rede, anote o valor do campo Intervalo de endereços do plano de controle.

gcloud

Execute este comando:

gcloud container clusters describe CLUSTER_NAME

Substitua CLUSTER_NAME pelo nome do cluster.

Na saída do comando, anote o valor no campo masterIpv4CidrBlock.

Ver as regras de firewall atuais

É necessário especificar o destino (neste caso, os nós de destino) que as regras de firewall do cluster usam.

Console

  1. Acesse a página de políticas de firewall no console do Google Cloud.

    Acessar as políticas de firewall

  2. Em Filtrar tabela para regras de firewall da VPC, insira gke-CLUSTER_NAME.

Nos resultados, anote o valor no campo Destinos.

gcloud

Execute este comando:

gcloud compute firewall-rules list \
    --filter 'name~^gke-CLUSTER_NAME' \
    --format 'table(
        name,
        network,
        direction,
        sourceRanges.list():label=SRC_RANGES,
        allowed[].map().firewall_rule().list():label=ALLOW,
        targetTags.list():label=TARGET_TAGS
    )'

Na saída do comando, anote o valor no campo Destinos.

Para conferir as regras de firewall de uma VPC compartilhada, adicione a flag --project HOST_PROJECT_ID ao comando.

Adicionar uma regra de firewall

Console

  1. Acesse a página de políticas de firewall no console do Google Cloud.

    Acessar as políticas de firewall

  2. Clique em Criar regra de firewall.

  3. Em Nome, insira o nome desejado para a regra de firewall.

  4. Na lista Rede, selecione a rede relevante.

  5. Em Direção de tráfego, clique em Entrada.

  6. Em Ação se houver correspondência, clique em Permitir.

  7. Na lista Destinos, selecione Tags de destino especificadas.

  8. Em Tags de destino, insira o valor de destino que você anotou anteriormente.

  9. Na lista Filtro de origem, selecione Intervalos IPv4.

  10. Em Intervalos de IPv4 de origem, insira o bloco CIDR do plano de controle do cluster.

  11. Em Protocolos e portas, clique em Protocolos e portas especificados e marque a caixa de seleção do protocolo relevante (tcp ou udp) e insira o número da porta no campo do protocolo.

  12. Clique em Criar.

gcloud

Execute este comando:

gcloud compute firewall-rules create FIREWALL_RULE_NAME \
    --action ALLOW \
    --direction INGRESS \
    --source-ranges CONTROL_PLANE_RANGE \
    --rules PROTOCOL:PORT \
    --target-tags TARGET

Substitua:

  • FIREWALL_RULE_NAME: o nome escolhido para a regra de firewall.
  • CONTROL_PLANE_RANGE: o intervalo de endereços IP do plano de controle de cluster (masterIpv4CidrBlock) coletado anteriormente.
  • PROTOCOL:PORT: é a porta desejada e o protocolo dela, tcp ou udp.
  • TARGET: é o valor de destino (Targets) coletado anteriormente.

Para adicionar uma regra de firewall a uma VPC compartilhada, adicione as seguintes flags ao comando:

--project HOST_PROJECT_ID
--network NETWORK_ID

Verificar se os nós não têm endereços IP externos

Depois de criar um cluster particular, verifique se os nós dele não têm endereços IP externos.

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.

  3. Para clusters do Autopilot, na seção Noções básicas sobre clusters, verifique o campo Endpoint externo. O valor é Desativado.

Para clusters padrão, faça o seguinte:

  1. Na página Clusters, clique na guia Nós.
  2. Em Pools de nós, clique no nome do pool.
  3. Na página Detalhes do pool de nós, em Grupos de instâncias, clique no nome do grupo. Por exemplo, gke-private-cluster-0-default-pool-5c5add1f-grp`.
  4. Na lista de instâncias, confirme se elas não têm endereços IP externos.

gcloud

Execute este comando:

kubectl get nodes --output wide

A coluna EXTERNAL-IP da resposta está vazia:

STATUS ... VERSION        EXTERNAL-IP  OS-IMAGE ...
Ready      v.8.7-gke.1                 Container-Optimized OS
Ready      v1.8.7-gke.1                Container-Optimized OS
Ready      v1.8.7-gke.1                Container-Optimized OS

Verificar a reutilização do peering de VPC no cluster

Todos os clusters particulares criados após 15 de janeiro de 2020 reutilizam as conexões do peering da rede VPC.

Para verificar se o cluster particular reutiliza as conexões de peering de rede VPC, use a gcloud CLI ou o console do Google Cloud.

Console

Verifique a linha de Peering de VPC na página de detalhes do cluster. Se o cluster estiver usando novamente as conexões de peering de VPC, a resposta começará com gke-n. Por exemplo, gke-n34a117b968dee3b2221-93c6-40af-peer.

gcloud

gcloud container clusters describe CLUSTER_NAME \
    --format="value(privateClusterConfig.peeringName)"

Se o cluster estiver usando novamente as conexões de peering de VPC, a resposta começará com gke-n. Por exemplo, gke-n34a117b968dee3b2221-93c6-40af-peer.

Configurações avançadas de cluster

Esta seção descreve algumas configurações avançadas que podem ser necessárias ao criar um cluster particular.

Como conceder aos nós privados acesso à Internet de saída

Para fornecer acesso de Internet de saída aos seus nós particulares, como para extrair imagens de um registro externo, use o Cloud NAT para criar e configurar um Cloud Router. O Cloud NAT permite que nós particulares estabeleçam conexões de saída pela Internet para enviar e receber pacotes.

O Cloud Router permite que todos os nós da região usem o Cloud NAT para todos os intervalos de IP de alias e principais. Ele também aloca automaticamente os endereços IP externos para o gateway NAT.

Para instruções sobre como criar e configurar um Cloud Router, consulte Criar uma configuração do Cloud NAT usando o Cloud Router na documentação do Cloud NAT.

Como criar um cluster privado em uma rede VPC compartilhada

Para saber como criar um cluster particular em uma rede VPC compartilhada, consulte Como criar um cluster particular em uma VPC compartilhada.

Como implantar um aplicativo de contêiner do Windows Server

Para saber como implantar um aplicativo de contêiner do Windows Server em um cluster com nós particulares, consulte a documentação do pool de nós do Windows.

Como acessar o endpoint privado do plano de controle globalmente

O endpoint particular do plano de controle é implementado por um balanceador de carga de rede interno na rede VPC do plano de controle. Clientes internos ou conectados por meio de túneis do Cloud VPN e anexos da VLAN do Cloud Interconnect podem acessar balanceadores de carga de rede internos.

Por padrão, esses clientes precisam estar localizados na mesma região do balanceador de carga.

Quando você ativa o acesso global do plano de controle, o balanceador de carga de rede interno é acessível globalmente: as VMs cliente e sistemas locais podem se conectar ao endpoint particular do plano de controle, sujeito à configuração de redes autorizadas, em qualquer região.

Para mais informações sobre os balanceadores de carga de rede internos e o acesso global, consulte Balanceadores de carga internos e redes conectadas.

Como ativar o acesso global do endpoint particular do plano de controle

Por padrão, o acesso global não é ativado para o endpoint privado do plano de controle quando você cria um cluster privado. Para ativar o acesso global ao plano de controle, use as seguintes ferramentas com base no modo de cluster:

  • Para clusters padrão, use Google Cloud CLI ou o console do Google Cloud.
  • Para clusters do Autopilot, use o recurso Terraform google_container_cluster.

Console

Para criar um novo cluster privado com acesso global do plano de controle ativado, execute as etapas a seguir:

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

    Acessar o Google Kubernetes Engine

  2. Clique em Criar e, na seção Standard ou Autopilot, clique em Configurar.

  3. Digite um Nome.

  4. No painel de navegação, clique em Rede.

  5. Selecione Cluster particular.

  6. Marque a caixa de seleção Ativar acesso global do plano de controle.

  7. Configure outros campos como quiser.

  8. Clique em Criar.

Para ativar o acesso global do plano de controle a um cluster particular atual, execute as seguintes etapas:

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

    Acessar o Google Kubernetes Engine

  2. Ao lado do cluster que você quer editar, clique em Ações e, depois, em Editar.

  3. Na seção Rede, ao lado de Acesso global ao plano de controle, clique em Editar.

  4. Na caixa de diálogo Editar o acesso global ao plano de controle, marque a caixa de seleção Ativar o acesso global ao plano de controle.

  5. Clique em Salvar alterações.

gcloud

Adicione a sinalização --enable-master-global-access para criar um cluster particular com acesso global ao endpoint particular do plano de controle ativado:

gcloud container clusters create CLUSTER_NAME \
    --enable-private-nodes \
    --enable-master-global-access

Também é possível ativar o acesso global ao endpoint particular do plano de controle para um cluster particular atual:

gcloud container clusters update CLUSTER_NAME \
    --enable-master-global-access

Como verificar o acesso global do endpoint particular do plano de controle

Verifique se o acesso global ao endpoint privado do plano de controle está ativado executando o comando a seguir e observando a saída.

gcloud container clusters describe CLUSTER_NAME

A saída inclui uma seção privateClusterConfig em que vê o status de masterGlobalAccessConfig.

privateClusterConfig:
  enablePrivateNodes: true
  masterIpv4CidrBlock: 172.16.1.0/28
  peeringName: gke-1921aee31283146cdde5-9bae-9cf1-peer
  privateEndpoint: 172.16.1.2
  publicEndpoint: 34.68.128.12
  masterGlobalAccessConfig:
    enabled: true

Como acessar o endpoint particular do plano de controle em outras redes

Quando você cria um cluster particular do GKE e desativa o endpoint público do plano de controle, é necessário administrá-lo com ferramentas como kubectl usando o endpoint particular do plano de controle. É possível acessar o endpoint particular do plano de controle do cluster de outra rede, incluindo o seguinte:

  • uma rede local conectada à rede VPC do cluster usando túneis do Cloud VPN ou anexos da VLAN do Cloud Interconnect;
  • Outra rede VPC conectada à rede VPC do cluster usando túneis do Cloud VPN

O diagrama a seguir mostra um caminho de roteamento entre uma rede no local e os nós do plano de controle do GKE:

Diagrama mostrando o roteamento entre a VPC local e o plano de controle do cluster

Para permitir que sistemas em outra rede se conectem ao endpoint particular do plano de controle de um cluster, atenda aos seguintes requisitos:

  1. Identifique e registre informações de rede relevantes para o cluster e o endpoint particular do plano de controle.

    gcloud container clusters describe CLUSTER_NAME \
       --location=COMPUTE_LOCATION \
       --format="yaml(network, privateClusterConfig)"
    

    Substitua:

    Na saída do comando, identifique e registre as seguintes informações para usar nas próximas etapas:

    • network: o nome ou URI da rede VPC do cluster.
    • privateEndpoint: o endereço IPv4 do endpoint particular do plano de controle ou o intervalo CIDR IPv4 delimitado (masterIpv4CidrBlock).
    • peeringName: o nome da conexão de peering de rede VPC usada para conectar a rede VPC do cluster à rede VPC do plano de controle.

    A saída será assim:

    network: cluster-network
    privateClusterConfig:
      enablePrivateNodes: true
      masterGlobalAccessConfig:
        enabled: true
      masterIpv4CidrBlock: 172.16.1.0/28
      peeringName: gke-1921aee31283146cdde5-9bae-9cf1-peer
      privateEndpoint: 172.16.1.2
      publicEndpoint: 34.68.128.12
    
  2. Considere ativar o acesso global do endpoint particular do plano de controle para permitir que os pacotes entrem em qualquer região na rede VPC do cluster. Ativar o acesso global do endpoint particular do plano de controle permite que você se conecte ao endpoint particular usando túneis do Cloud VPN ou anexos da VLAN do Cloud Interconnect localizados em qualquer região, não apenas na região do cluster.

  3. Crie uma rota para o endereço IP privateEndpoint ou o intervalo de endereços IP masterIpv4CidrBlock da outra rede. Como o endereço IP particular do plano de controle sempre se encaixa no masterIpv4CidrBlock intervalo de endereços IPv4, criando uma rota para o privateEndpoint o endereço IP ou o intervalo incluído fornece um caminho para pacotes da outra rede para o endpoint particular do plano de controle se:

    • A outra rede se conecta à rede VPC do cluster usando anexos da VLAN do Cloud Interconnect ou túneis do Cloud VPN que usam rotas dinâmicas (BGP): use uma rota personalizada divulgada do Cloud Router. Para mais informações, consulte Divulgar intervalos de endereços personalizados na documentação do Cloud Router.

    • A outra rede se conecta à rede VPC do cluster usando túneis da VPN clássica que não usam rotas dinâmicas: é preciso configurar uma rota estática na outra rede do Google Analytics.

  4. Configure a rede VPC do cluster para exportar as rotas personalizadas na relação de peering com a rede VPC do plano de controle. Google Cloud sempre configura a rede VPC do plano de controle para importar rotas personalizadas da rede VPC do cluster. Essa etapa fornece um caminho para os pacotes do endpoint particular do plano de controle de volta para a outra rede.

    Para ativar a exportação de rota personalizada a partir da rede VPC do cluster, use o seguinte comando:

    gcloud compute networks peerings update PEERING_NAME \
        --network=CLUSTER_VPC_NETWORK \
        --export-custom-routes
    

    Substitua:

    • PEERING_NAME: o nome do peering que conecta a rede VPC do cluster à rede VPC do plano de controle.
    • CLUSTER_VPC_NETWORK: o nome ou URI da rede VPC do cluster;

    Quando a exportação de rota personalizada é ativada para a VPC, criar rotas que se sobrepõem aos Google Cloud intervalos de IP pode interromper o cluster.

    Para mais detalhes sobre como atualizar a troca de rotas para conexões de peering de rede VPC existentes, consulte Atualizar a conexão de peering.

    As rotas personalizadas na rede VPC do cluster incluem rotas com destinos que são intervalos de endereços IP em outras redes, por exemplo, uma rede local. Para garantir que essas rotas se tornem efetivas como peering de rotas na rede VPC do plano de controle, consulte Destinos compatíveis com a outra rede.

Destinos compatíveis da outra rede

Os intervalos de endereços que a outra rede envia para os Cloud Routers na rede VPC do cluster precisam aderir às seguintes condições:

  • Embora a VPC do cluster possa aceitar uma rota padrão (0.0.0.0/0), a rede VPC do plano de controle sempre rejeita rotas padrão porque já tem uma rota padrão local. Se a outra rede enviar uma rota padrão para sua rede VPC, a outra rede também precisará enviar os destinos específicos dos sistemas que precisam se conectar ao endpoint particular do plano de controle. Para mais detalhes, consulte Ordem de roteamento.

  • Se a rede VPC do plano de controle aceitar rotas que substituem efetivamente uma rota padrão, essas rotas quebrarão a conectividade com as APIs e os serviços doGoogle Cloud , interrompendo o plano de controle do cluster. Como exemplo representativo, a outra rede não pode divulgar rotas com destinos 0.0.0.0/1 e 128.0.0.0/1. Consulte o ponto anterior para obter uma alternativa.

Monitore os limites do Cloud Router, especialmente o número máximo de destinos exclusivos para rotas aprendidas.

Como proteger um cluster particular com o VPC Service Controls

Para proteger ainda mais os clusters privados do GKE, use o VPC Service Controls.

O VPC Service Controls protege ainda mais os clusters privados do GKE para reduzir o risco de exportação de dados. Ao usá-lo, é possível adicionar projetos a perímetros de serviço. Isso protege recursos e serviços contra solicitações que vêm de fora desses perímetros.

Para saber mais sobre perímetros de serviço, consulte Detalhes e configuração do perímetro de serviço.

Se você usar o Artifact Registry com seu cluster particular do GKE em um perímetro de serviço do VPC Service Controls, precisará configurar o roteamento para o IP virtual restrito para evitar a exfiltração de dados.

Limpar

Depois de concluir as tarefas nesta página, siga estas etapas para remover os recursos e evitar cobranças indesejadas na conta:

Excluir os clusters

Console

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

    Acessar o Google Kubernetes Engine

  2. Selecione cada cluster.

  3. Clique em Excluir.

gcloud

gcloud container clusters delete -q private-cluster-0 private-cluster-1 private-cluster-2 private-cluster-3

Excluir a rede

Console

  1. Acesse a página Redes VPC no Console do Google Cloud.

    Acessar redes VPC

  2. Na lista de redes, clique em my-net-0.

  3. Na página Detalhes da rede, clique em Excluir rede VPC.

  4. Na caixa de diálogo Excluir uma rede, clique em Excluir.

gcloud

gcloud compute networks delete my-net-0

A seguir