Crie serviços de mapeamento de portas
Esta página descreve como os produtores de serviços podem publicar serviços que usam o mapeamento de portas do Private Service Connect.
O mapeamento de portas do Private Service Connect permite que os clientes consumidores comuniquem de forma privada com portas de serviço específicas em VMs de produtor específicas através de um único ponto final do Private Service Connect.
Antes de começar
- Tem de ativar a API Compute Engine no seu projeto.
- Tem de criar VMs para cada um dos pontos finais de rede que quer anexar ao NEG de mapeamento de portas. Todas as VMs têm de estar na mesma região.
- Leia o artigo Acerca dos serviços publicados.
- Leia o artigo Acerca do mapeamento de portas do Private Service Connect.
Funções necessárias
Para receber as autorizações de que precisa para se preparar para publicar um serviço com o mapeamento de portas do Private Service Connect, peça ao seu administrador para lhe conceder as seguintes funções da IAM no projeto do produtor:
-
Administrador do balanceador de carga do Compute (
roles/compute.loadBalancerAdmin
) -
Administrador de rede de Calcular (
roles/compute.networkAdmin
)
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Crie e publique um serviço de mapeamento de portas
Os serviços de mapeamento de portas têm configurações semelhantes aos balanceadores de carga de rede de passagem interna, mas o tráfego não é equilibrado. Para criar e publicar um serviço de mapeamento de portas, faça o seguinte:
- Crie um NEG de mapeamento de portas
- Adicione pontos finais de rede ao NEG de mapeamento de portas
- Crie um serviço de mapeamento de portas
- Publique o serviço de mapeamento de portas
Crie um NEG de mapeamento de portas
Um NEG de mapeamento de portas
é um NEG regional com o tipo de ponto final de rede de GCE_VM_IP_PORTMAP
. Não é possível alterar o tipo de um NEG de mapeamento de portas depois de criado.
Quando cria um NEG de mapeamento de portas, escolhe uma sub-rede. Os pontos finais de rede que associa ao NEG de mapeamento de portas têm de ter uma interface de rede principal nesta sub-rede.
Consola
Na Google Cloud consola, aceda à página Grupos de pontos finais da rede.
Clique em Criar grupo de pontos finais de rede.
Introduza um Nome.
Clique em Tipo de grupo de pontos finais da rede e, de seguida, selecione NEG de mapeamento de portas (regional).
Selecione uma região.
Selecione uma rede.
Selecione uma sub-rede.
Clique em Criar.
gcloud
Use o comando
network-endpoints-groups create
.
gcloud compute network-endpoint-groups create NEG \ --region=REGION \ --network=NETWORK \ --subnet=SUBNET \ --network-endpoint-type=GCE_VM_IP_PORTMAP
Substitua o seguinte:
NEG
: o nome do NEG de mapeamento de portasREGION
: a região do NEG de mapeamento de portasNETWORK
: a rede VPC do NEG de mapeamento de portasSUBNET
: a sub-rede do NEG de mapeamento de portas
API
Envie um pedido POST
para o método regionNetworkEndpointGroups.insert
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/networkEndpointGroups { "name": "NEG", "networkEndpointType": "GCE_VM_IP_PORTMAP", "network": "projects/PROJECT_ID/global/networks/NETWORK", "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET" }
Substitua o seguinte:
PROJECT_ID
: o ID do projeto do mapeamento de portas do NEGREGION
: a região do NEG de mapeamento de portasNEG
: o nome do NEG de mapeamento de portasNETWORK
: a rede VPC do NEG de mapeamento de portasSUBNET
: a sub-rede do NEG de mapeamento de portas
Adicione pontos finais de rede ao NEG de mapeamento de portas
Crie um ou mais pontos finais de rede com mapeamentos de portas e anexe-os ao NEG de mapeamento de portas.
Os pontos finais de rede para NEGs de mapeamento de portas são zonais e têm de cumprir os seguintes requisitos:
- Cada ponto final de rede refere-se a uma VM do Compute Engine que tem uma interface de rede principal na mesma sub-rede que o NEG de mapeamento de portas.
- Cada ponto final de rede refere-se a uma porta de destino do cliente única.
Cada ponto final de rede tem de referir-se a uma combinação única de porta de serviço e VM.
Consola
Na Google Cloud consola, aceda à página Grupos de pontos finais da rede.
Clique no nome do NEG de mapeamento de portas que quer atualizar.
Clique em Adicionar pontos finais de rede.
Clique em Instância de VM e, de seguida, selecione uma VM.
Clique em Porta da VM 1 e, de seguida, introduza uma porta de serviço.
Clique em Porta do cliente 1 e, de seguida, introduza uma porta de destino do cliente.
Para cada ponto final de rede adicional que quer adicionar, clique em Adicionar ponto final de rede e, de seguida, introduza os detalhes do ponto final de rede.
Clique em Criar.
gcloud
Use o comando
network-endpoint-groups update
. Inclua uma flag --add-endpoint
para cada ponto final de rede que quer anexar.
gcloud compute network-endpoint-groups update NEG \ --region=REGION \ --add-endpoint=client-destination-port=CLIENT_DESTINATION_PORT_1,instance=projects/PROJECT_ID/zones/ZONE_1/instances/VM_1_NAME,port=VM_1_PORT \ --add-endpoint=client-destination-port=CLIENT_DESTINATION_PORT_2,instance=projects/PROJECT_ID/zones/ZONE_2/instances/VM_2_NAME,port=VM_2_PORT
Substitua o seguinte:
NEG
: o nome do NEG de mapeamento de portasREGION
: a região do NEG de mapeamento de portasCLIENT_DESTINATION_PORT_1
: a porta de destino do cliente do primeiro ponto final de redePROJECT_ID
: o ID do projeto do projeto do produtorZONE_1
: a zona do primeiro ponto final da redeVM_1_NAME
: o nome da VM de destino para o primeiro ponto final de redeVM_1_PORT
: a porta de serviço do primeiro ponto final de redeCLIENT_DESTINATION_PORT_2
: a porta de destino do cliente do ponto final de rede secundárioZONE_2
: a zona do segundo ponto final da redeVM_2_NAME
: o nome da VM de destino para o segundo ponto final de redeVM_2_PORT
: a porta de serviço do segundo ponto final de rede
API
Envie um pedido POST
para o método regionNetworkEndpointGroups.attachNetworkEndpoints
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/networkEndpointGroups/NEG/attachNetworkEndpoints { "networkEndpoints": [ { "clientDestinationPort":CLIENT_DESTINATION_PORT_1, "instance": "projects/PROJECT_ID/zones/ZONE_1/instances/VM_1_NAME", "port": SERVICE_PORT_1 }, { "clientDestinationPort": CLIENT_DESTINATION_PORT_2, "instance": "projects/PROJECT_ID/zones/ZONE_2/instances/VM_2_NAME", "port": SERVICE_PORT_2 } ] }
Substitua o seguinte:
PROJECT_ID
: o ID do projeto do projeto do produtorREGION
: a região do NEG de mapeamento de portasNEG
: o nome do NEG de mapeamento de portasCLIENT_DESTINATION_PORT_1
: a porta de destino do cliente do primeiro ponto final de redeZONE_1
: a zona do primeiro ponto final da redeVM_1_NAME
: o nome da VM de destino para o primeiro ponto final de redeSERVICE_PORT_1
: a porta de serviço do primeiro ponto final de redeCLIENT_DESTINATION_PORT_2
: a porta de destino do cliente do ponto final da segunda redeZONE_2
: a zona do segundo ponto final da redeVM_2_NAME
: o nome da VM de destino para o segundo ponto final de redeSERVICE_PORT_2
: a porta de serviço do segundo ponto final de rede
Crie um serviço de mapeamento de portas
Para criar um serviço de mapeamento de portas, conclua os seguintes passos.
Não pode alterar o NEG de mapeamento de portas associado a um serviço de back-end depois de adicionar o NEG. No entanto, pode atualizar os pontos finais de rede do NEG de mapeamento de portas.
Não é possível atualizar a associação de uma regra de encaminhamento depois de criada. Se precisar de estabelecer ligação a um serviço de back-end diferente, elimine a regra de encaminhamento e, em seguida, crie uma nova.
Consola
Inicie a configuração
Na Google Cloud consola, aceda à página Equilíbrio de carga.
- Clique em Criar equilibrador de carga.
- Para Tipo de balanceador de carga, selecione Balanceador de carga de rede (TCP/UDP/SSL) e clique em Seguinte.
- Para Proxy ou passagem, selecione Passagem do balanceador de carga e clique em Seguinte.
- Para Público ou interno, selecione Interno e clique em Seguinte.
- Clique em Configurar.
Configuração básica
- Introduza um nome do balanceador de carga.
- Selecione uma região.
- Selecione uma rede.
Configuração do back-end
- Para Tipo de back-end, selecione Grupo de pontos finais da rede de mapeamento de portas.
- Selecione um grupo de pontos finais da rede de mapeamento de portas.
Configuração do frontend
- Clique em Configuração do front-end.
- Opcional: introduza um Nome.
- Opcional: introduza uma Descrição.
- Selecione um Protocolo.
- Selecione uma sub-rede.
- Clique em Concluído.
- Clique em Criar.
gcloud
Para criar um serviço de back-end, use o comando
backend-services create
.gcloud compute backend-services create SERVICE \ --load-balancing-scheme=internal \ --region=REGION \ --network=NETWORK
Substitua o seguinte:
SERVICE
: o nome do serviço de back-endREGION
: a região do serviço de back-endNETWORK
: a rede VPC do produtor do serviço de back-end
Para adicionar o NEG de mapeamento de portas ao serviço de back-end, use o comando
backend-services add-backend
.Não pode adicionar vários NEGs de mapeamento de portas a um único serviço de back-end.
gcloud compute backend-services add-backend SERVICE \ --network-endpoint-group=NEG \ --network-endpoint-group-region=REGION
Substitua
NEG
pelo nome do mapeamento de portas do NEG.Para criar uma regra de encaminhamento para o seu serviço de mapeamento de portas, use o comando
forwarding-rules create
.A regra de encaminhamento tem de ser configurada para encaminhar o tráfego para todas as portas de destino do cliente.
gcloud compute forwarding-rules create RULE \ --load-balancing-scheme=INTERNAL \ --ip-protocol=PROTOCOL \ --network=NETWORK \ --subnet=SUBNET \ --address=IP_ADDRESS \ --ports=ALL \ --region=REGION \ --backend-service=SERVICE
Substitua o seguinte:
RULE
: o nome da regra de encaminhamentoPROTOCOL
: o protocolo da regra de encaminhamento, que pode serTCP
ouUDP
SUBNET
: a sub-rede do produtor, que tem de ser a mesma sub-rede associada ao NEG de mapeamento de portasIP_ADDRESS
: o endereço IP da regra de encaminhamento, que tem de ser proveniente do intervalo de endereços IP da sub-rede do produtor
API
Para criar um serviço de back-end, envie um pedido
POST
para o métodoregionBackendServices.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices { "name": "SERVICE", "loadBalancingScheme": "INTERNAL", "network": "projects/PROJECT_ID/global/networks/NETWORK" }
Substitua o seguinte:
PROJECT_ID
: o ID do projeto do serviço de back-endREGION
: a região do serviço de back-endSERVICE
: o nome do serviço de back-endNETWORK
: a rede VPC do produtor
Para adicionar o NEG de mapeamento de portas ao serviço de back-end, envie um pedido ao método
regionBackendServices.patch
.PATCH
Não pode adicionar vários NEGs de mapeamento de portas a um único serviço de back-end.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/SERVICE { "backends": [ { "group": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/networkEndpointGroups/NEG" } ] }
Substitua
NEG
pelo nome do NEG de mapeamento de portas.Para criar uma regra de encaminhamento para o seu serviço de mapeamento de portas, envie um pedido para o método
forwardingRules.insert
.POST
A regra de encaminhamento tem de ser configurada para encaminhar o tráfego para todas as portas de destino do cliente.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules { "name": "RULE", "loadBalancingScheme": "INTERNAL", "IPProtocol": "PROTOCOL", "network": "projects/PROJECT_ID/global/networks/NETWORK", "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET", "IPAddress": "IP_ADDRESS", "allPorts": true, "backendService": "projects/PROJECT_ID/regions/REGION/backendServices/SERVICE" }
Substitua o seguinte:
RULE
: o nome da regra de encaminhamentoPROTOCOL
: o protocolo da regra de encaminhamento, que pode serTCP
ouUDP
SUBNET
: a sub-rede do produtor, que tem de ser a mesma sub-rede associada ao NEG de mapeamento de portasIP_ADDRESS
: o endereço IP da regra de encaminhamento, que tem de ser proveniente do intervalo de endereços IP da sub-rede do produtor
Publique o serviço de mapeamento de portas
Para disponibilizar o seu serviço de mapeamento de portas aos consumidores, publique o serviço criando uma associação de serviço. Quando cria a associação de serviço, especifique a regra de encaminhamento associada ao seu serviço de mapeamento de portas.