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
Aceda à página Redes VPC na Google Cloud consola
.Clique em add_box Criar rede de VPC.
Em Nome, introduza
my-net-0
.Para o Modo de criação de sub-rede, selecione Personalizado.
Na secção Nova sub-rede, em Nome, introduza
my-subnet-0
.Na lista Região, selecione a região pretendida.
Para o Intervalo de endereços IP, introduza
10.2.204.0/22
.Defina o acesso privado Google como ativado.
Clique em Concluído.
Clique em Criar.
Criar um cluster privado
Aceda à página do Google Kubernetes Engine na Google Cloud consola.
Clique em
Criar e, de seguida, na secção Padrão ou Autopilot, clique em Configurar.Para o Nome, especifique
private-cluster-0
.No painel de navegação, clique em Rede.
Na lista Rede, selecione my-net-0.
Na lista Sub-rede do nó, selecione my-subnet-0.
Selecione o botão de opção Cluster privado.
Desmarque a caixa de verificação Aceder ao plano de controlo através do respetivo endereço IP externo.
(Opcional para o Autopilot): defina o Intervalo de IPs do plano de controlo como
172.16.0.32/28
.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 nomemy-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 nomemy-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 principal192.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
Aceda à página Redes VPC na Google Cloud consola
.Clique em add_box Criar rede de VPC.
Em Nome, introduza
my-net-2
.Para o Modo de criação de sub-rede , selecione Personalizado.
Na secção Nova sub-rede, em Nome, introduza
my-subnet-2
.Na lista Região, selecione a região pretendida.
Para o Intervalo de endereços IP, introduza
192.168.0.0/20
.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, introduza10.0.32.0/20
.Clique em Adicionar intervalo de IP. Para Nome do intervalo de sub-rede, introduza
my-pods
e, para Intervalo de IP secundário, introduza10.4.0.0/14
.Defina o acesso privado Google como ativado.
Clique em Concluído.
Clique em Criar.
Criar um cluster privado
Crie um cluster privado que use a sua sub-rede:
Aceda à página do Google Kubernetes Engine na Google Cloud consola.
Clique em
Criar e, de seguida, na secção Padrão ou Autopilot, clique em Configurar.No campo Nome, introduza
private-cluster-2
.No painel de navegação, clique em Rede.
Selecione o botão de opção Cluster privado.
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.
(Opcional para o Autopilot) Defina o Intervalo de IPs do plano de controlo como
172.16.0.16/28
.Na lista Rede, selecione my-net-2.
Na lista Sub-rede do nó, selecione my-subnet-2.
Desmarque a caixa de verificação Criar automaticamente intervalos secundários.
Na lista Intervalo CIDR secundário do pod, selecione my-pods.
Na lista Intervalo CIDR secundário de serviços, selecione my-services.
Selecione a caixa de verificação Ativar redes autorizadas do plano de controlo.
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:
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
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.
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.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
Aceda à página do Google Kubernetes Engine na Google Cloud consola.
Clique em
Criar e, de seguida, na secção Padrão ou Autopilot, clique em Configurar.No campo Nome, introduza
private-cluster-3
.No painel de navegação, clique em Rede.
Selecione a opção Cluster privado.
Mantenha a caixa de verificação Aceder ao plano de controlo através do respetivo endereço IP externo selecionada.
(Opcional para o Autopilot) Defina o Intervalo de IPs do plano de controlo como
172.16.0.32/28
.Deixe Rede e Sub-rede do nó definidas como
default
. Isto faz com que o GKE gere uma sub-rede para o seu cluster.Desmarque a caixa de verificação Ativar redes autorizadas do plano de controlo.
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 nomemy-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:
- Webhooks de admissão
- Servidores de API agregados
- Conversão de webhook
- Configuração de auditoria dinâmica
- Geralmente, qualquer API que tenha um campo ServiceReference requer regras de firewall adicionais.
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
Aceda à página do Google Kubernetes Engine na Google Cloud consola.
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
Aceda à página Políticas de firewall na Google Cloud consola.
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
Aceda à página Políticas de firewall na Google Cloud consola.
Clique em add_box Criar regra de firewall.
Em Nome, introduza o nome da regra de firewall.
Na lista Rede, selecione a rede relevante.
Em Direção do tráfego, clique em Entrada.
Em Ação em caso de correspondência, clique em Permitir.
Na lista Alvos, selecione Etiquetas de alvos especificadas.
Para Etiquetas de destino, introduza o valor de destino que anotou anteriormente.
Na lista Filtro de origem, selecione Intervalos IPv4.
Para Intervalos IPv4 de origem, introduza o bloco CIDR do painel de controlo do cluster.
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.
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
ouudp
.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
Aceda à página do Google Kubernetes Engine na Google Cloud consola.
Na lista de clusters, clique no nome do cluster.
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:
- Na página Clusters, clique no separador Nodes.
- Em Conjuntos de nós, clique no nome do conjunto de nós.
- 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.
- 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:
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.
Introduza um Nome.
No painel de navegação, clique em Rede.
Selecione Cluster privado.
Selecione a caixa de verificação Ativar acesso global do plano de controlo.
Configure outros campos como quiser.
Clique em Criar.
Para ativar o acesso global do plano de controlo para um cluster privado existente, siga os passos seguintes:
Aceda à página do Google Kubernetes Engine na Google Cloud consola.
Junto ao cluster que quer editar, clique em more_vert Ações e, de seguida, clique em edit Editar.
Na secção Rede, junto a Acesso global ao plano de controlo, clique em edit Editar.
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.
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:
Para permitir que os sistemas noutra rede se liguem ao ponto final privado do plano de controlo de um cluster, cumpra os seguintes requisitos:
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:
CLUSTER_NAME
: o nome do cluster.COMPUTE_LOCATION
: a localização do Compute Engine do cluster
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
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.
Crie uma rota para o endereço IP
privateEndpoint
ou o intervalo de endereços IPmasterIpv4CidrBlock
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:masterIpv4CidrBlock
privateEndpoint
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.
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 controloCLUSTER_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
e128.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
Aceda à página do Google Kubernetes Engine na Google Cloud consola.
Selecione cada cluster.
Clique em delete Eliminar.
gcloud
gcloud container clusters delete -q private-cluster-0 private-cluster-1 private-cluster-2 private-cluster-3
Elimine a rede
Consola
Aceda à página Redes VPC na Google Cloud consola.
Na lista de redes, clique em
my-net-0
.Na página Detalhes da rede de VPC, clique em delete Eliminar rede de VPC.
Na caixa de diálogo Eliminar uma rede, clique em Eliminar.
gcloud
gcloud compute networks delete my-net-0
O que se segue?
- Saiba mais sobre as configurações avançadas com clusters privados.
- Saiba como criar clusters nativos da VPC.
- Saiba mais acerca do intercâmbio da rede da VPC.
- Siga o tutorial sobre como aceder a clusters privados do GKE com pools privadas do Cloud Build.