Criar um cluster privado

Esta página explica como criar um cluster privado do Google Kubernetes Engine (GKE), que é um tipo de cluster nativo da VPC. Num cluster privado, os nós só têm endereços IP internos, o que significa que os nós e os pods estão isolados da Internet por predefinição. Pode optar por não ter acesso de cliente, ter acesso limitado ou ter acesso não restrito ao plano de controlo.

Restrições e limitações

Os clusters privados têm de ser clusters nativos de VPC. Os clusters nativos da VPC não suportam redes antigas.

Intervalos secundários de pods ao nível do node pool: quando cria um cluster do GKE, se especificar um intervalo secundário de pods inferior a /24 por node pool através da IU, pode ocorrer o seguinte erro:

Getting Pod secondary range 'pod' must have a CIDR block larger or equal to /24

O GKE não suporta a especificação de um intervalo inferior a /24 ao nível do conjunto de nós. No entanto, a especificação de um intervalo mais pequeno ao nível do cluster é suportada. Isto pode ser feito através da Google Cloud CLI com o argumento --cluster-ipv4-cidr. Para mais informações, consulte o artigo Criar um cluster com um intervalo CIDR específico.

Expanda as secções seguintes para ver as regras relativas aos intervalos de endereços IP e ao tráfego quando cria um cluster.

Antes de começar

Antes de começar, certifique-se de que realizou as seguintes tarefas:

  • Ative a API Google Kubernetes Engine.
  • Ative a API Google Kubernetes Engine
  • Se quiser usar a CLI gcloud para esta tarefa, instale-a e, em seguida, inicialize-a. Se instalou anteriormente a CLI gcloud, execute gcloud components update para obter a versão mais recente.
  • Certifique-se de que tem a autorização correta para criar clusters. No mínimo, deve ter a função de administrador do cluster do Kubernetes Engine.

  • Certifique-se de que tem um caminho para o gateway da Internet predefinido.

Criar um cluster privado sem acesso de cliente ao ponto final público

Nesta secção, cria os seguintes recursos:

  • Um cluster privado denominado private-cluster-0 que tem nós privados e que não tem acesso de cliente ao ponto final público.
  • Uma rede chamada my-net-0.
  • Uma sub-rede com o nome my-subnet-0.

Consola

Crie uma rede e uma sub-rede

  1. Aceda à página Redes VPC na Google Cloud consola
    .

    Aceda a redes de VPC

  2. Clique em Criar rede de VPC.

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

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

  5. Na secção Nova sub-rede, em Nome, introduza my-subnet-0.

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

  7. Para o Intervalo de endereços IP, introduza 10.2.204.0/22.

  8. Defina o acesso privado Google como ativado.

  9. Clique em Concluído.

  10. Clique em Criar.

Criar um cluster privado

  1. Aceda à página do Google Kubernetes Engine na Google Cloud consola.

    Aceda ao Google Kubernetes Engine

  2. Clique em Criar e, de seguida, na secção Padrão ou Autopilot, clique em Configurar.

  3. Para o 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 do nó, selecione my-subnet-0.

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

  8. Desmarque a caixa de verificação Aceder ao plano de controlo através do respetivo endereço IP externo.

  9. (Opcional para o Autopilot): defina o Intervalo de IPs do plano de controlo como 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
    

where:

  • --create-subnetwork name=my-subnet-0 faz com que o GKE crie automaticamente uma sub-rede com o nome my-subnet-0.
  • --enable-master-authorized-networks especifica que o acesso ao ponto final público está restrito a intervalos de endereços IP que autoriza.
  • --enable-ip-alias torna o cluster nativo de 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 é gerido através do endereço IP interno do ponto final da API do plano de controlo.
  • --master-ipv4-cidr 172.16.0.32/28 especifica um intervalo de endereços IP internos para o plano de controlo (opcional para o Autopilot). Esta definição é permanente para este cluster e tem de ser exclusiva na VPC. A utilização de endereços IP internos não RFC 1918 é suportada.

API

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

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

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

Por exemplo, suponhamos que criou uma VM no intervalo principal de my-subnet-0. Em seguida, nessa VM, pode configurar kubectl para usar o endereço IP interno do plano de controlo.

Se quiser aceder ao plano de controlo a partir do exterior de my-subnet-0, tem de autorizar, pelo menos, um intervalo de endereços a ter acesso ao ponto final privado.

Suponha que tem uma VM na rede predefinida, na mesma região que o seu cluster, mas não em my-subnet-0.

Por exemplo:

  • my-subnet-0: 10.0.0.0/22
  • Intervalo secundário do agrupamento: 10.52.0.0/14
  • Endereço da VM: 10.128.0.3

Pode autorizar a VM a aceder ao plano de controlo através deste comando:

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

Criar um cluster privado com acesso limitado ao ponto final público

Quando cria um cluster privado com esta configuração, pode optar por usar uma sub-rede gerada automaticamente ou uma sub-rede personalizada.

Usar uma sub-rede gerada automaticamente

Nesta secção, cria um cluster privado denominado private-cluster-1, em que o GKE gera automaticamente uma sub-rede para os nós do cluster. A sub-rede tem o acesso privado à Google ativado. Na sub-rede, o GKE cria automaticamente dois intervalos secundários: um para pods e outro para serviços.

Pode usar a CLI Google Cloud 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
    

where:

  • --create-subnetwork name=my-subnet-1 faz com que o GKE crie automaticamente uma sub-rede com o nome my-subnet-1.
  • --enable-master-authorized-networks especifica que o acesso ao ponto final público está restrito a intervalos de endereços IP que autoriza.
  • --enable-ip-alias torna o cluster nativo de 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 controlo (opcional para o Autopilot). Esta definição é permanente para este cluster e tem de ser exclusiva na VPC. A utilização de endereços IP internos não RFC 1918 é suportada.

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

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

  • O intervalo principal de my-subnet-1.
  • O intervalo secundário usado para agrupamentos.

Suponhamos que tem um grupo de máquinas, fora da sua rede VPC, com endereços no intervalo 203.0.113.0/29. Pode autorizar essas máquinas a acederem ao ponto final público introduzindo este comando:

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 controlo:

  • O intervalo principal de my-subnet-1.
  • O intervalo secundário usado para agrupamentos.
  • Intervalos de endereços que autorizou, por exemplo, 203.0.113.0/29.

Usar uma sub-rede personalizada

Nesta secção, cria os seguintes recursos:

  • Um cluster privado com o nome private-cluster-2.
  • Uma rede chamada my-net-2.
  • Uma sub-rede denominada my-subnet-2, com o intervalo principal 192.168.0.0/20, para os nós do cluster. A sua sub-rede tem os seguintes intervalos de endereços secundários:
    • my-pods para os endereços IP do pod.
    • my-services para os endereços IP de serviço.

Consola

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

  1. Aceda à página Redes VPC na Google Cloud consola
    .

    Aceda a redes de VPC

  2. Clique em Criar rede de VPC.

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

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

  5. Na secção Nova sub-rede, em Nome, introduza my-subnet-2.

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

  7. Para o Intervalo de endereços IP, introduza 192.168.0.0/20.

  8. Clique em Criar intervalo de IPs secundário. Para Nome do intervalo de sub-rede, introduza my-services e, para Intervalo de IP secundário, introduza 10.0.32.0/20.

  9. Clique em Adicionar intervalo de IP. Para Nome do intervalo de sub-rede, introduza my-pods e, para Intervalo de IP secundário, introduza 10.4.0.0/14.

  10. Defina o acesso privado Google como ativado.

  11. Clique em Concluído.

  12. Clique em Criar.

Criar um cluster privado

Crie um cluster privado que use a sua sub-rede:

  1. Aceda à página do Google Kubernetes Engine na Google Cloud consola.

    Aceda ao Google Kubernetes Engine

  2. Clique em Criar e, de seguida, na secção Padrão ou Autopilot, clique em Configurar.

  3. No campo Nome, introduza private-cluster-2.

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

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

  6. Para criar um painel de controlo acessível a partir de intervalos de IPs externos autorizados, mantenha a caixa de verificação Aceder ao painel de controlo através do respetivo endereço IP externo selecionada.

  7. (Opcional para o Autopilot) Defina o Intervalo de IPs do plano de controlo como 172.16.0.16/28.

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

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

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

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

  12. Na lista Intervalo CIDR secundário de serviços, selecione my-services.

  13. Selecione a caixa de verificação Ativar redes autorizadas do plano de controlo.

  14. Clique em Criar.

gcloud

Crie uma rede

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

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

Crie 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 serviços:

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 privado

Agora, crie um cluster privado, private-cluster-2, usando a rede, a sub-rede e os intervalos secundários que criou.

  • 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
    

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

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

Suponhamos que tem um grupo de máquinas, fora do my-net-2, com endereços no intervalo 203.0.113.0/29. Pode autorizar essas máquinas a acederem ao ponto final público introduzindo este comando:

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

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

  • O intervalo principal de my-subnet-2.
  • O intervalo secundário my-pods.
  • Intervalos de endereços que autorizou, por exemplo, 203.0.113.0/29.

Usar o Cloud Shell para aceder a um cluster privado

Se tiver ativado um ponto final privado, não pode aceder ao plano de controlo do GKE com o Cloud Shell.

Se quiser usar o Cloud Shell para aceder ao cluster, tem de adicionar o endereço IP externo do Cloud Shell à lista de redes autorizadas do cluster.

Para o fazer:

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

    dig +short myip.opendns.com @resolver1.opendns.com
    
  2. Adicione o endereço externo do 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 o seguinte:

    • CLUSTER_NAME: o nome do cluster.
    • EXISTING_AUTH_NETS: os endereços IP da sua lista existente de redes autorizadas. Pode encontrar as suas redes autorizadas na consola 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. Obtenha credenciais para poder usar o kubectl para aceder ao cluster:

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

    Substitua PROJECT_ID pelo ID do seu projeto.

  4. Use kubectl no Cloud Shell para aceder ao seu cluster:

    kubectl get nodes
    

    O resultado é semelhante ao seguinte:

    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
    

Criar um cluster privado com acesso ilimitado ao ponto final público

Nesta secção, cria um cluster privado onde qualquer endereço IP pode aceder ao plano de controlo.

Consola

  1. Aceda à página do Google Kubernetes Engine na Google Cloud consola.

    Aceda ao Google Kubernetes Engine

  2. Clique em Criar e, de seguida, na secção Padrão ou Autopilot, clique em Configurar.

  3. No campo Nome, introduza private-cluster-3.

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

  5. Selecione a opção Cluster privado.

  6. Mantenha a caixa de verificação Aceder ao plano de controlo através do respetivo endereço IP externo selecionada.

  7. (Opcional para o Autopilot) Defina o Intervalo de IPs do plano de controlo como 172.16.0.32/28.

  8. Deixe Rede e Sub-rede do nó definidas como default. Isto faz com que o GKE gere uma sub-rede para o seu cluster.

  9. Desmarque a caixa de verificação Ativar redes autorizadas do plano de controlo.

  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
    

where:

  • --create-subnetwork name=my-subnet-3 faz com que o GKE crie automaticamente uma sub-rede com o nome my-subnet-3.
  • --no-enable-master-authorized-networks desativa as redes autorizadas para o cluster.
  • --enable-ip-alias torna o cluster nativo de 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 controlo (opcional para o Autopilot). Esta definição é permanente para este cluster e tem de ser exclusiva na VPC. A utilização de endereços IP internos não RFC 1918 é suportada.

Adicione regras de firewall para exemplos de utilização específicos

Esta secção explica como adicionar uma regra de firewall a um cluster. Por predefinição, as regras de firewall restringem o plano de controlo do cluster para iniciar apenas ligações TCP aos seus nós e pods nas portas 443 (HTTPS) e 10250 (kubelet). Para algumas funcionalidades do Kubernetes, pode ter de adicionar regras de firewall para permitir o acesso em portas adicionais. Não crie regras de firewall nem regras de políticas de firewall hierárquicas que tenham uma prioridade mais elevada do que as regras de firewall criadas automaticamente.

As funcionalidades do Kubernetes que requerem regras de firewall adicionais incluem:

A adição de uma regra de firewall permite o tráfego do plano de controlo do cluster para todos os seguintes elementos:

  • A porta especificada de cada nó (hostPort).
  • A porta especificada de cada Pod em execução nestes nós.
  • A porta especificada de cada serviço em execução nestes nós.

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

Para adicionar uma regra de firewall num cluster, tem de registar o bloco CIDR do plano de controlo do cluster e o destino usado. Depois de registar esta informação, pode criar a regra.

Veja o bloco CIDR do plano de controlo

Precisa do bloco CIDR do plano de controlo do cluster para adicionar uma regra de firewall.

Consola

  1. Aceda à página do Google Kubernetes Engine na Google Cloud consola.

    Aceda ao Google Kubernetes Engine

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

No separador Detalhes, em Rede, tome nota do valor no campo Intervalo de endereços do plano de controlo.

gcloud

Execute o seguinte comando:

gcloud container clusters describe CLUSTER_NAME

Substitua CLUSTER_NAME pelo nome do seu cluster.

No resultado do comando, tome nota do valor no campo masterIpv4CidrBlock.

Veja as regras de firewall existentes

Tem de especificar o destino (neste caso, os nós de destino) que as regras de firewall existentes do cluster usam.

Consola

  1. Aceda à página Políticas de firewall na Google Cloud consola.

    Aceder a Políticas de firewall

  2. Para Filtrar tabela para Regras de firewall de VPC, introduza gke-CLUSTER_NAME.

Nos resultados, tome nota do valor no campo Alvos.

gcloud

Execute o seguinte 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
    )'

No resultado do comando, tome nota do valor no campo Targets.

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

Adicione uma regra de firewall

Consola

  1. Aceda à página Políticas de firewall na Google Cloud consola.

    Aceder a Políticas de firewall

  2. Clique em Criar regra de firewall.

  3. Em Nome, introduza o nome da regra de firewall.

  4. Na lista Rede, selecione a rede relevante.

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

  6. Em Ação em caso de correspondência, clique em Permitir.

  7. Na lista Alvos, selecione Etiquetas de alvos especificadas.

  8. Para Etiquetas de destino, introduza o valor de destino que anotou anteriormente.

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

  10. Para Intervalos IPv4 de origem, introduza o bloco CIDR do painel de controlo do cluster.

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

  12. Clique em Criar.

gcloud

Execute o seguinte 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 o seguinte:

  • FIREWALL_RULE_NAME: o nome que escolher para a regra da firewall.
  • CONTROL_PLANE_RANGE: o intervalo de endereços IP do plano de controlo do cluster (masterIpv4CidrBlock) que recolheu anteriormente.
  • PROTOCOL:PORT: a porta e o respetivo protocolo, tcp ou udp.
  • TARGET: o valor do alvo (Targets) que recolheu anteriormente.

Para adicionar uma regra de firewall para uma VPC partilhada, adicione as seguintes flags ao comando:

--project HOST_PROJECT_ID
--network NETWORK_ID

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

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

Consola

  1. Aceda à página do Google Kubernetes Engine na Google Cloud consola.

    Aceda ao Google Kubernetes Engine

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

  3. Para clusters do Autopilot, na secção Noções básicas do cluster, verifique o campo Ponto final externo. O valor é Desativado.

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

  1. Na página Clusters, clique no separador Nodes.
  2. Em Conjuntos de nós, clique no nome do conjunto de nós.
  3. Na página Detalhes do conjunto de nós, em Grupos de instâncias, clique no nome do grupo de instâncias. Por exemplo, gke-private-cluster-0-default-pool-5c5add1f-grp.
  4. Na lista de instâncias, verifique se as suas instâncias não têm endereços IP externos.

gcloud

Execute o seguinte comando:

kubectl get nodes --output wide

A coluna EXTERNAL-IP da saída 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

Valide a reutilização do intercâmbio de VPC no cluster

Todos os clusters privados que criar após 15 de janeiro de 2020 usam ligações de interligação de redes VPC.

Pode verificar se o seu cluster privado reutiliza ligações de interligação de redes VPC através da CLI gcloud ou da Google Cloud consola.

Consola

Verifique a linha VPC peering na página Detalhes do cluster. Se o seu cluster estiver a reutilizar ligações de peering de VPC, o resultado começa 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 a reutilizar ligações de peering de VPC, o resultado começa com gke-n. Por exemplo, gke-n34a117b968dee3b2221-93c6-40af-peer.

Configurações avançadas de clusters

Esta secção descreve algumas configurações avançadas que pode querer quando criar um cluster privado.

Conceder acesso à Internet de saída a nós privados

Para fornecer acesso à Internet de saída para os seus nós privados, como extrair imagens de um registo externo, use o Cloud NAT para criar e configurar um Cloud Router. O Cloud NAT permite que os nós privados estabeleçam ligações de saída através da Internet para enviar e receber pacotes.

O Cloud Router permite que todos os seus nós na região usem o Cloud NAT para todos os intervalos de IP de alias primários. Também aloca automaticamente os endereços IP externos para o gateway NAT.

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

Criar um cluster privado numa rede de VPC partilhada

Para saber como criar um cluster privado numa rede de VPC partilhada, consulte o artigo Criar um cluster privado numa VPC partilhada.

Implementar uma aplicação de contentor do Windows Server

Para saber como implementar uma aplicação de contentor do Windows Server num cluster com nós privados, consulte a documentação do conjunto de nós do Windows.

Aceder ao ponto final privado do plano de controlo globalmente

O ponto final privado do plano de controlo é implementado por um balanceador de carga de rede de passagem interno na rede VPC do plano de controlo. Os clientes internos ou ligados através de anexos de VLAN do Cloud Interconnect e túneis do Cloud VPN podem aceder a balanceadores de carga de rede de passagem internos.

Por predefinição, estes clientes têm de estar localizados na mesma região que o equilibrador de carga.

Quando ativa o acesso global do plano de controlo, o balanceador de carga de passagem interno fica acessível a nível global: as VMs de cliente e os sistemas no local podem ligar-se ao ponto final privado do plano de controlo, sujeitos à configuração de redes autorizadas, a partir de qualquer região.

Para mais informações sobre os balanceadores de carga de encaminhamento interno e o acesso global, consulte o artigo Balanceadores de carga internos e redes ligadas.

Ativar o acesso global do ponto final privado do plano de controlo

Por predefinição, o acesso global não está ativado para o ponto final privado do painel de controlo quando cria um cluster privado. Para ativar o acesso global do plano de controlo, use as seguintes ferramentas com base no modo do cluster:

  • Para clusters padrão, pode usar Google Cloud CLI ou a consola Google Cloud .
  • Para clusters do Autopilot, pode usar o recurso do google_container_cluster Terraform.

Consola

Para criar um novo cluster privado com o acesso global ao plano de controlo ativado, siga estes passos:

  1. Na Google Cloud consola, aceda à página Criar um cluster do Autopilot.

    Aceda a Crie um cluster do Autopilot

    Também pode concluir esta tarefa criando um cluster padrão.

  2. Introduza um Nome.

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

  4. Selecione Cluster privado.

  5. Selecione a caixa de verificação Ativar acesso global do plano de controlo.

  6. Configure outros campos como quiser.

  7. Clique em Criar.

Para ativar o acesso global do plano de controlo para um cluster privado existente, siga os passos seguintes:

  1. Aceda à página do Google Kubernetes Engine na Google Cloud consola.

    Aceda ao Google Kubernetes Engine

  2. Junto ao cluster que quer editar, clique em Ações e, de seguida, clique em Editar.

  3. Na secção Rede, junto a Acesso global ao plano de controlo, clique em Editar.

  4. Na caixa de diálogo Editar acesso global do plano de controlo, selecione a caixa de verificação Ativar acesso global do plano de controlo.

  5. Clique em Guardar alterações.

gcloud

Adicione a flag --enable-master-global-access para criar um cluster privado com o acesso global ao ponto final privado do painel de controlo ativado:

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

Também pode ativar o acesso global ao ponto final privado do plano de controlo para um cluster privado existente:

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

Validar o acesso global do ponto final privado do plano de controlo

Pode verificar se o acesso global ao ponto final privado do plano de controlo está ativado executando o seguinte comando e analisando a respetiva saída.

gcloud container clusters describe CLUSTER_NAME

O resultado inclui uma secção privateClusterConfig onde pode ver o estado 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

Aceder ao ponto final privado do plano de controlo a partir de outras redes

Quando cria um cluster privado do GKE e desativa o ponto final público do plano de controlo, tem de administrar o cluster com ferramentas como kubectl através do ponto final privado do respetivo plano de controlo. Pode aceder ao ponto final privado do painel de controlo do cluster a partir de outra rede, incluindo o seguinte:

  • Uma rede no local ligada à rede VPC do cluster através de túneis de VPN na nuvem ou anexos de VLAN do Cloud Interconnect
  • Outra rede VPC que está ligada à rede VPC do cluster através de túneis do Cloud VPN

O diagrama seguinte mostra um caminho de encaminhamento entre uma rede no local e os nós do plano de controlo do GKE:

Diagrama que mostra o encaminhamento entre a VPC no local e o plano de controlo do cluster

Para permitir que os sistemas noutra rede se liguem ao ponto final privado do plano de controlo de um cluster, cumpra os seguintes requisitos:

  1. Identificar e registar informações de rede relevantes para o cluster e o ponto final privado do respetivo plano de controlo.

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

    Substitua o seguinte:

    A partir do resultado do comando, identifique e registe as seguintes informações para usar nos passos seguintes:

    • network: o nome ou o URI da rede VPC do cluster.
    • privateEndpoint: O endereço IPv4 do ponto final privado do plano de controlo ou o intervalo CIDR IPv4 delimitador (masterIpv4CidrBlock).
    • peeringName: o nome da ligação de intercâmbio da rede da VPC usada para ligar a rede da VPC do cluster à rede da VPC do plano de controlo.

    O resultado é semelhante ao seguinte:

    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 ponto final privado do plano de controlo para permitir que os pacotes entrem a partir de qualquer região na rede VPC do cluster. A ativação do acesso global ao ponto final privado do plano de controlo permite-lhe estabelecer ligação ao ponto final privado através de túneis da Cloud VPN ou anexos de VLAN do Cloud Interconnect localizados em qualquer região e 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 na outra rede. Uma vez que o endereço IP do ponto final privado do plano de controlo se enquadra sempre no intervalo de endereços IPv4, a criação de uma rota para o endereço IP ou o respetivo intervalo envolvente fornece um caminho para os pacotes da outra rede para o ponto final privado do plano de controlo se:masterIpv4CidrBlockprivateEndpoint

    • A outra rede liga-se à rede VPC do cluster através de anexos de VLAN do Cloud Interconnect ou túneis do Cloud VPN que usam rotas dinâmicas (BGP): use uma rota anunciada personalizada do Cloud Router. Para mais informações, consulte o artigo Anuncie intervalos de endereços personalizados na documentação do Cloud Router.

    • A outra rede liga-se à rede VPC do cluster através de túneis de VPN clássica que não usam rotas dinâmicas: tem de configurar uma rota estática na outra rede.

  4. Configure a rede VPC do cluster para exportar as respetivas rotas personalizadas na relação de peering para a rede VPC do painel de controlo.O Google Cloud configura sempre a rede VPC do painel de controlo para importar rotas personalizadas da rede VPC do cluster. Este passo fornece um caminho para os pacotes do ponto final privado do plano de controlo de volta para a outra rede.

    Para ativar a exportação de rotas personalizadas da rede VPC do cluster, use o seguinte comando:

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

    Substitua o seguinte:

    • PEERING_NAME: o nome do intercâmbio que liga a rede VPC do cluster à rede VPC do plano de controlo
    • CLUSTER_VPC_NETWORK: o nome ou o URI da rede VPC do cluster

    Quando a exportação de rotas personalizadas está ativada para a VPC, a criação de rotas que se sobreponham aos intervalos de IP pode danificar o cluster.Google Cloud

    Para mais detalhes sobre como atualizar a troca de rotas para associações de intercâmbio de rede VPC existentes, consulte o artigo Atualize a associação.

    As rotas personalizadas na rede VPC do cluster incluem rotas cujos destinos são intervalos de endereços IP noutras redes, por exemplo, uma rede no local. Para garantir que estas rotas entram em vigor como rotas personalizadas de interligação na rede VPC do plano de controlo, consulte Destinos suportados da outra rede.

Destinos suportados da outra rede

Os intervalos de endereços que a outra rede envia para os Cloud Routers na rede VPC do cluster têm de cumprir as seguintes condições:

  • Embora a VPC do cluster possa aceitar um trajeto predefinido (0.0.0.0/0), a rede VPC do plano de controlo rejeita sempre os trajetos predefinidos porque já tem um trajeto predefinido local. Se a outra rede enviar uma rota predefinida para a sua rede VPC, a outra rede também tem de enviar os destinos específicos dos sistemas que precisam de se ligar ao ponto final privado do plano de controlo. Para mais detalhes, consulte o artigo Ordem de encaminhamento.

  • Se a rede VPC do plano de controlo aceitar rotas que substituam efetivamente uma rota predefinida, essas rotas interrompem a conetividade com as APIs e os serviçosGoogle Cloud , interrompendo o plano de controlo do cluster. Como exemplo representativo, a outra rede não pode anunciar trajetos com destinos 0.0.0.0/1 e 128.0.0.0/1. Consulte o ponto anterior para ver uma alternativa.

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

Proteger um cluster privado com os VPC Service Controls

Para proteger ainda mais os seus clusters privados do GKE, pode protegê-los através do VPC Service Controls.

O VPC Service Controls oferece segurança adicional para os seus clusters privados do GKE para ajudar a mitigar o risco de exfiltração de dados. Com os VPC Service Controls, pode adicionar projetos a perímetros de serviço que protegem recursos e serviços de pedidos originados fora do perímetro.

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

Se usar o Artifact Registry com o seu cluster privado do GKE num perímetro de serviço dos VPC Service Controls, tem de configurar o encaminhamento para o IP virtual restrito para evitar a exfiltração de dados.

Limpar

Depois de concluir as tarefas nesta página, siga estes passos para remover os recursos e evitar a incorrência de encargos indesejados na sua conta:

Elimine os clusters

Consola

  1. Aceda à página do Google Kubernetes Engine na Google Cloud consola.

    Aceda ao Google Kubernetes Engine

  2. Selecione cada cluster.

  3. Clique em Eliminar.

gcloud

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

Elimine a rede

Consola

  1. Aceda à página Redes VPC na Google Cloud consola.

    Aceda a redes de VPC

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

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

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

gcloud

gcloud compute networks delete my-net-0

O que se segue?