Nesta página, explicamos como configurar seus pools particulares para acessar recursos externos usando um IP externo estático.
Para seguir as instruções detalhadas desta tarefa diretamente no console do Google Cloud , clique em Orientação:
Antes de começar
-
Enable the Cloud Build, Compute Engine, and Service Networking APIs.
Para receber as permissões necessárias para configurar uma conexão particular, peça ao administrador para conceder a você o papel do IAM de Administrador de rede do Compute Engine (
roles/compute.networkAdmin
) no projeto do Cloud em que a rede VPC reside. Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.Para usar os comandos
gcloud
nesta página, instale a Google Cloud CLI.
Crie uma rede VPC
Console
Para criar uma rede VPC usando o console Google Cloud , siga estas etapas:
Abra a página Redes VPC no console do Google Cloud .
Clique em Criar rede VPC para criar uma rede.
A página Criar uma rede VPC vai aparecer.
Digite um Nome para a rede.
Em Modo de criação da sub-rede, selecione Automático.
Se você quiser personalizar outros campos, consulte Criar e gerenciar redes VPC. Caso contrário, deixe todos os campos como estão.
Clique em Criar para criar sua rede VPC.
Depois de clicar em Criar, a nova rede VPC vai aparecer na página Redes VPC.
gcloud
Para criar uma rede VPC usando a ferramenta de linha de comando gcloud
,
insira o seguinte comando no terminal, em que NETWORK_NAME
é o nome da sua rede VPC:
gcloud compute networks create NETWORK_NAME \
--subnet-mode=auto
Depois de clicar em Criar, a nova rede VPC vai aparecer na página Redes VPC.
Para saber mais sobre como criar e gerenciar redes VPC, consulte Criar e gerenciar redes VPC.
Crie uma conexão privada
Console
Para criar uma conexão particular entre sua rede VPC e a rede do produtor de serviços, siga estas etapas:
Abra a página Redes VPC no console do Google Cloud .
Clique no nome da sua rede.
A página Detalhes da rede VPC vai aparecer.
Clique na guia Conexão de serviço privado.
Selecione a guia Intervalos de IP alocados para serviços.
Clique em Alocar intervalo de IP.
Você vai ver a caixa pop-up Alocar um intervalo de IP interno.
Insira um Nome para o intervalo de IP.
Em Intervalo de IP, selecione Automático.
No campo Tamanho do prefixo, insira um tamanho de prefixo para sua rede.
Clique em Alocar para alocar seu intervalo de IP.
Selecione a guia Conexões particulares com os serviços.
Clique em Criar conexão.
O pop-up Criar uma conexão particular vai aparecer.
Em Alocação atribuída, selecione seu intervalo de IP.
Clique em Conectar.
Sua conexão vai aparecer na tabela da guia Conexões particulares com serviços.
Clique em Ativar (Exportar rota personalizada) para garantir que as rotas da VPC sejam aplicadas à rede em que as instâncias do pool privado estão sendo executadas.
Você configurou sua rede.
gcloud
Para criar uma conexão particular entre sua rede VPC e a rede do produtor de serviços, siga estas etapas:
Insira o comando a seguir no terminal para alocar um intervalo de IP para seu serviço:
gcloud compute addresses create RESERVED_RANGE_NAME \ --global \ --prefix-length=PREFIX_LENGTH \ --network=VPC_NETWORK \ --project=PROJECT_ID
Em que:
- RESERVED_RANGE_NAME é o nome do intervalo alocado.
Por exemplo,
my-allocated-range
. - PREFIX_LENGTH é o tamanho do prefixo da sua rede. O tamanho do prefixo precisa ser
/24
ou inferior, como/22
,/21
etc. - VPC_NETWORK é o nome da rede VPC, como
my-vpc-network
. - PROJECT_ID é o ID do projeto que contém sua rede VPC.
- RESERVED_RANGE_NAME é o nome do intervalo alocado.
Por exemplo,
Digite o seguinte comando no terminal para criar uma conexão particular:
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=RESERVED_RANGE_NAME \ --network=VPC_NETWORK \ --project=PROJECT_ID
Em que:
- RESERVED_RANGE_NAME é o nome do intervalo alocado que você criou na etapa anterior.
- VPC_NETWORK é o nome da rede VPC, como
my-vpc-network
. - PROJECT_ID é o ID do projeto que contém sua rede VPC.
Insira o seguinte comando no terminal para garantir que as rotas da VPC sejam aplicadas à rede em que as instâncias do pool particular estão sendo executadas:
gcloud compute networks peerings update servicenetworking-googleapis-com \ --export-custom-routes \ --network=VPC_NETWORK \ --project=PROJECT_ID
Em que:
- VPC_NETWORK é o nome da rede VPC, como
my-vpc-network
. - PROJECT_ID é o ID do projeto que contém sua rede VPC.
- VPC_NETWORK é o nome da rede VPC, como
Você configurou sua rede.
Para saber mais sobre como configurar uma rede, consulte Como configurar uma conexão particular entre sua rede VPC e a rede do produtor de serviços.
Criar um pool particular
Console
Para criar um pool particular usando o console Google Cloud , siga estas etapas:
Abra a página Pool de worker no console Google Cloud :
Selecione o projeto em que você quer criar o pool privado.
Na página Pool de worker, clique em Criar.
O painel Criar pool particular vai aparecer.
No painel lateral Criar pool particular, insira as seguintes informações:
Insira um Nome para o pool particular.
Selecione uma região no menu suspenso.
Em Rede, insira as seguintes informações:
- Projeto: insira o ID ou número do projeto.
- Rede: insira o nome da sua rede VPC.
- (Opcional) Desmarque a caixa Atribuir IPs externos para a configuração de rede mais restrita.
Agora você criou um pool particular.
gcloud
Para criar um pool particular usando a ferramenta de linha de comando gcloud
, insira o seguinte comando
no terminal:
gcloud builds worker-pools create PRIVATEPOOL_ID \
--project=PRIVATEPOOL_PROJECT_ID \
--region=REGION \
--peered-network=PEERED_NETWORK \
--no-public-egress
Em que:
- PRIVATEPOOL_ID é o identificador exclusivo do seu pool particular.
- PRIVATEPOOL_PROJECT_ID é o ID do projeto Google Cloud em que você quer criar o pool particular.
- REGION é uma das regiões com suporte.
- PEERED_NETWORK é o URL do recurso de rede.
--no-public-egress
: se essa sinalização for definida, o pool privado será criado sem um endereço IP externo.
Agora você criou um pool particular.
Para saber mais sobre como criar e gerenciar pools particulares, consulte Como criar e gerenciar pools particulares.
Acessar recursos externos em uma rede privada
Por padrão, os endereços IP externo associados aos pools particulares do Cloud Build não são estáticos nem configuráveis. Elas são atribuídas por Google Cloud. Se você quiser configurar seus pools particulares para acessar recursos externos da rede privada com um IP externo estático, configure uma máquina virtual (VM) no projeto para atuar como um gateway NAT autogerenciado e encaminhar solicitações para a Internet pública. Depois disso, configure rotas personalizadas para encaminhar essas solicitações à VM e garantir que as rotas sejam trocadas com o projeto de rede de serviços.
Nesta seção, explicamos como configurar seus pools particulares para acessar recursos externos usando um IP externo estático. Para isso, siga estas etapas:
Crie um script de inicialização para configurar a VM como proxy de qualquer tráfego roteado para a VM e mascarar esse tráfego como originário do endereço IP dela:
#! /bin/bash set -e sysctl -w net.ipv4.ip_forward=1 IFACE=$(ip -brief link | tail -1 | awk {'print $1'}) iptables -t nat -A POSTROUTING -o "$IFACE" -j MASQUERADE
Configure uma VM na mesma VPC do seu pool particular com uma regra para permitir que as solicitações sejam encaminhadas por proxy pela VPC:
gcloud compute instances create VM_NAME \ --image-project=ubuntu-os-cloud --image-family=ubuntu-2204-lts \ --network=NETWORK_NAME \ --private-network-ip=INTERNAL_IP --can-ip-forward \ --zone=ZONE \ --subnet=SUBNETWORK \ --tags=NAT_TAG \ --metadata-from-file=startup-script=STARTUP_SCRIPT
Em que:
- VM_NAME é o nome que você quer dar à VM.
- NETWORK_NAME é o nome da rede que você criou na seção anterior.
- INTERNAL_IP é qualquer endereço IP interno válido dentro do intervalo da sub-rede da região da VM. Por exemplo,
10.128.0.2
. - ZONE é a zona associada à sua rede, como
us-central1-a
. - (Opcional) SUBNETWORK é o nome da sua sub-rede. O
nome da sua sub-rede pode ser encontrado no REST equivalente da sub-rede no seguinte formato:
projects/project-id/regions/region/subnetworks/subnetwork-name
. Se você selecionou Automático em Modo de conexão de sub-rede ao criar uma rede VPC, não é necessário especificar esse campo. - NAT_TAG é o nome da tag do gateway NAT que permite rotear solicitações condicionalmente, com base em se elas têm ou não uma tag dessa VM. É possível especificar qualquer nome para a tag.
- STARTUP_SCRIPT é o nome do script
de inicialização criado na etapa anterior. Por exemplo,
startup-script-example.sh
. Neste exemplo, a flag--metadata-from-file
é usada para transmitir o conteúdo do script de inicialização especificado para uma chave chamadastartup-script
.
Depois de executar esse comando, você vai ver uma saída que contém o valor do IP externo. Anote o valor do IP externo. Todo o tráfego do seu pool particular para o recurso externo passa por esse endereço. Você pode usar esse endereço para outras configurações, como configurar regras de firewall na sua rede externa.
Configure uma rota para direcionar todas as solicitações ao recurso externo para a instância criada na etapa anterior, permitindo que suas solicitações sejam encaminhadas para as instâncias do pool particular:
gcloud compute routes create PRIVATE_POOL_ROUTE_NAME \ --destination-range=DESTINATION_RANGE \ --next-hop-address=INTERNAL_IP \ --network=NETWORK_NAME \ --priority=POOL_ROUTE_PRIORITY
Em que:
- PRIVATE_POOL_ROUTE_NAME é o nome que você quer dar à rota.
- DESTINATION_RANGE é um intervalo de endereços CIDR válido que contém o destino para onde você quer encaminhar. Por exemplo, uma instância do GitHub Enterprise Edition. Por exemplo,
8.8.8.0/24
. - INTERNAL_IP é o valor do IP interno obtido na etapa anterior. Por exemplo,
10.128.0.2
. - NETWORK_NAME é o nome da rede que você criou na seção anterior.
- POOL_ROUTE_PRIORITY é o número de prioridade que você quer especificar para sua rota.
Esse comando garante que todo o tráfego de um build em uma instância de pool particular seja roteado para a VM de proxy criada, e não diretamente para a Internet pública.
Configure uma rota para encaminhar solicitações do proxy das instâncias marcadas para o intervalo de IP de destino externo. O comando a seguir cria uma rota para encaminhar solicitações à Internet pública associada às instâncias do pool particular.
gcloud compute routes create NAT_EGRESS_ROUTE_NAME \ --destination-range=DESTINATION_RANGE \ --next-hop-gateway=default-internet-gateway \ --network=NETWORK_NAME \ --priority=NAT_ROUTE_PRIORITY \ --tags=NAT_TAG
Em que:
- NAT_EGRESS_ROUTE_NAME é o nome que você quer dar à rota do gateway NAT.
- DESTINATION_RANGE é o endereço do destino que você quer usar como rota. Por exemplo, uma instância do GitHub Enterprise Edition. Por exemplo,
8.8.8.0/24
. - NETWORK_NAME é o nome da rede que você criou na seção anterior.
- NAT_TAG é o nome da tag do gateway NAT que permite rotear solicitações condicionalmente, com base em se elas têm ou não uma tag dessa VM. É possível especificar qualquer nome para a tag.
NAT_ROUTE_PRIORITY é o número de prioridade que você quer especificar para sua rota.
Esse comando garante que qualquer tráfego da VM proxy possa ser direcionado à Internet pública.
Adicione uma regra de firewall para permitir o tráfego do seu pool particular para a VM do gateway NAT:
gcloud compute firewall-rules create RULE_NAME \ --direction=INGRESS --priority=FIREWALL_PRIORITY --action=ALLOW --rules=all \ --network=NETWORK_NAME \ --source-ranges=RESERVED_RANGE \ --target-tags=NAT_TAG
Em que:
- RULE_NAME é o nome que você quer dar à regra de firewall.
- FIREWALL_PRIORITY é o número de prioridade que você quer especificar para sua regra de firewall.
- NETWORK_NAME é o nome da rede que você criou na seção anterior.
- RESERVED_RANGE é o intervalo CIDR que você alocou ao configurar sua rede VPC.
- NAT_TAG é o nome da tag do gateway NAT que permite rotear solicitações condicionalmente, com base em se elas têm ou não uma tag dessa VM. É possível especificar qualquer nome para a tag.
Agora é possível acessar recursos externos do endereço IP estático do gateway NAT autogerenciado na sua VPC.
A seguir
- Saiba mais sobre pools particulares.
- Saiba como configurar o ambiente para criar pools particulares.
- Saiba como acessar recursos em um JFrog Artifactory particular com pools particulares.