Usar Public NAT com o GKE
Esta página mostra como configurar um exemplo de configuração do Public NAT com o Google Kubernetes Engine (GKE). Antes de configurar o Public NAT, leia a Visão geral do Public NAT.
Pré-requisitos
É necessário fazer o seguinte antes de configurar o Public NAT.
Acessar permissões do IAM
O papel roles/compute.networkAdmin concede permissões para criar um gateway NAT no Cloud Router, reservar e atribuir endereços IP de NAT e especificar sub-redes (sub-redes) cujo tráfego deve usar a conversão de endereços de rede pelo gateway NAT.
Configurar o Google Cloud
Antes de começar, configure os seguintes itens no Google Cloud.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Como configurar o exemplo do GKE
Use este exemplo se você quiser ver uma configuração simples do Public NAT funcionando com o GKE.
Etapa 1: criar uma rede e sub-rede da VPC
Se você já tiver uma rede e uma sub-rede, pule esta etapa.
Console
No Console do Google Cloud, acesse a página Redes VPC.
Clique em Criar rede VPC.
Informe um Nome de
custom-network1
.Em Sub-redes, defina o Modo de criação da sub-rede como Personalizado.
Em Nova sub-rede, insira um Nome de
subnet-us-east-192
.Em Região, selecione us-east4.
Digite um intervalo de endereço IP
192.168.1.0/24
.Clique em Concluído e em Criar.
gcloud
Crie uma nova rede de nuvem privada virtual (VPC) no modo personalizado no projeto:
gcloud compute networks create custom-network1 \ --subnet-mode custom
Saída:
.NAME MODE IPV4_RANGE GATEWAY_IPV4 custom-network1 custom
Especifique o prefixo de sub-rede da primeira região. Neste exemplo, atribuímos
192.168.1.0/24
à regiãous-east4
.gcloud compute networks subnets create subnet-us-east-192 \ --network custom-network1 \ --region us-east4 \ --range 192.168.1.0/24
Saída:
NAME REGION NETWORK RANGE subnet-us-east-192 us-east4 custom-network1 192.168.1.0/24
Terraform
É possível usar um módulo do Terraform para criar uma rede e uma sub-rede de nuvem privada virtual personalizada.
Etapa 2: criar um cluster particular
Console
No Console do Google Cloud, acesse a página de clusters do Kubernetes.
Clique em Criar cluster.
Em Nome, insira
nat-test-cluster
.Defina o Tipo de local como Zonal.
Defina a Zona como us-east4-c.
No painel de navegação, clique em Rede.
Selecione Cluster particular.
Desmarque a caixa de seleção Acesso ao plano de controle usando o endereço IP externo.
Insira um intervalo de IP do plano de controle de
172.16.0.0/28
.Defina Rede como
custom-network1
.Para criar e iniciar o cluster, clique em Criar.
gcloud
gcloud container clusters create "nat-test-cluster" \ --zone "us-east4-c" \ --username "admin" \ --cluster-version "latest" \ --machine-type "e2-medium" \ --disk-type "pd-standard" \ --disk-size "100" \ --scopes "https://www.googleapis.com/auth/compute","https://www.googleapis.com/auth/devstorage.read_only","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/monitoring","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly","https://www.googleapis.com/auth/trace.append" \ --num-nodes "3" \ --enable-private-nodes \ --enable-private-endpoint \ --master-ipv4-cidr "172.16.0.0/28" \ --enable-ip-alias \ --network "projects/PROJECT_ID/global/networks/custom-network1" \ --subnetwork "projects/PROJECT_ID/regions/us-east4/subnetworks/subnet-us-east-192" \ --max-nodes-per-pool "110" \ --enable-master-authorized-networks \ --addons HorizontalPodAutoscaling,HttpLoadBalancing \ --enable-autoupgrade \ --enable-autorepair
Terraform
Use um recurso do Terraform para criar um cluster particular.
Etapa 3: criar uma regra de firewall que permita conexões SSH
Console
No Console do Google Cloud, acesse a página Firewall.
Clique em Criar regra de firewall.
Informe um Nome de
allow-ssh
.Especifique uma rede de
custom-network1
.Defina a Direção do tráfego como Entrada.
Defina a Ação se houver correspondência como Permitir.
Defina Destinos como Todas as instâncias na rede.
Defina Filtro de origem como Intervalos IPv4.
Defina Intervalos de IPs de origem como
35.235.240.0/20
.Defina Protocolos e portas como Protocolos e portas especificados.
Marque a caixa de seleção tcp e insira a porta
22
.Clique em Criar
gcloud
gcloud compute firewall-rules create allow-ssh \ --network custom-network1 \ --source-ranges 35.235.240.0/20 \ --allow tcp:22
Terraform
Use um recurso do Terraform para criar uma regra de firewall.
Etapa 4: criar permissões SSH via IAP para um de seus nós
Em uma etapa posterior, use o IAP para se conectar ao seu nó.
Console
No console do Google Cloud, acesse a página Identity-Aware Proxy.
Selecione a guia Recursos SSH e TCP.
Marque a caixa de seleção ao lado do primeiro nó da lista em Todos os recursos do túnel > us-east4-c. Seu nome será semelhante a
gke-nat-test-cluster-default-pool-b50db58d-075t
.Anote o nome do nó. Posteriormente, você o usará para testar a conectividade.
No painel à direita, clique em Adicionar principal.
Para conceder aos usuários, grupos ou contas de serviço acesso aos recursos, no campo Novos principais, especifique os endereços de e-mail.
Se você estiver apenas testando esse recurso, poderá inserir seu próprio endereço de e-mail.
Para conceder aos principais acesso aos recursos por meio do recurso de encaminhamento TCP do Cloud IAP, na lista suspensa Papel, selecione Cloud IAP > Usuário do túnel protegido pelo IAP.
Clique em Save.
gcloud
Para esta etapa, use as instruções do Console.
Etapa 5: fazer login no nó e confirmar que não é possível acessar a Internet
Console
No console do Google Cloud, acesse a página Instâncias de VMs.
Encontre o nó em que você criou permissões SSH IAP. Na coluna Conectar, clique na seta suspensa SSH e selecione Abrir na janela do navegador.
Se esta for a primeira vez que você se conecta à instância, o Google Cloud gera as chaves SSH para você.
No prompt do nó, encontre o código do processo do contêiner
kube-dns
:pgrep '^kube-dns$'
Acesse o contêiner:
sudo nsenter --target PROCESS_ID --net /bin/bash
A partir de
kube-dns
, tente se conectar à Internet:curl example.com
Você não deve obter nenhum resultado. Se fizer isso, talvez você não tenha criado o cluster como um cluster particular ou pode haver algum outro problema. Para resolver esse problema, consulte As VMs podem acessar a Internet inesperadamente sem o Public NAT.
Para finalizar o comando, talvez seja necessário inserir
Ctrl+C
.
gcloud
Encontre o nome de um dos nós do cluster:
gcloud compute instances list
O nome de um nó é semelhante a
gke-nat-test-cluster-default-pool-1a4cbd06-3m8v
. Anote o nome do nó e use-o sempre que aparecerNODE_NAME
nos comandos a seguir.Conectar-se ao nós:
gcloud compute ssh NODE_NAME \ --zone us-east4-c \ --tunnel-through-iap
No prompt do nó, encontre o código do processo do contêiner
kube-dns
:pgrep '^kube-dns$'
Acesse o contêiner:
sudo nsenter --target PROCESS_ID --net /bin/bash
A partir de
kube-dns
, tente se conectar à Internet:curl example.com
Nenhum resultado será exibido. Para finalizar o comando, talvez seja necessário inserir
Ctrl+C
.
Etapa 6: criar uma configuração NAT usando o Cloud Router
É necessário criar o Cloud Router na mesma região que as instâncias que usam o Public NAT. O Public NAT é usado apenas para colocar informações NAT nas VMs. Ele não é usado como parte do gateway NAT real.
Essa configuração permite que todas as instâncias da região usem o Public NAT para todos os intervalos de IP alias e primário. Ela também aloca automaticamente os endereços IP externos para o gateway NAT. Para mais opções, consulte a documentação da CLI do Google Cloud.
Console
No Console do Google Cloud, acesse a página do Cloud NAT.
Clique em Primeiros passos ou Criar gateway NAT.
Digite um nome de gateway de
nat-config
.Defina a Rede VPC para
custom-network1
.Defina a Região como us-east4.
Em Cloud Router, selecione Criar novo roteador.
- Informe um Nome de
nat-router
. - Clique em Criar
- Informe um Nome de
Clique em Criar.
gcloud
Criar um Cloud Router
gcloud compute routers create nat-router \ --network custom-network1 \ --region us-east4
Adicionar uma configuração ao roteador
gcloud compute routers nats create nat-config \ --router-region us-east4 \ --router nat-router \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips
Terraform
É possível usar um recurso do Terraform para criar um Cloud Router.
Use um módulo do Terraform para criar uma configuração NAT.
Etapa 7: tentar se conectar à Internet novamente
Pode levar até três minutos para que a configuração de NAT seja propagada. Portanto, aguarde pelo menos um minuto antes de tentar acessar a Internet novamente.
Se você ainda não tiver feito login no kube-dns
, reconecte usando o procedimento na Etapa 5. Depois de fazer login, execute novamente o comando curl
:
curl example.com
Você verá a saída que contém o seguinte conteúdo:
<html> <head> <title>Example Domain</title> ... ... ... </head> <body> <div> <h1>Example Domain</h1> <p>This domain is established to be used for illustrative examples in documents. You can use this domain in examples without prior coordination or asking for permission.</p> <p><a href="http://www.iana.org/domains/example">More information...</a></p> </div> </body> </html>
A seguir
- Configurar um gateway do Public NAT.
- Criar um Exemplo de configuração do Compute Engine.