Criar serviços de mapeamento de portas
Nesta página, descrevemos 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 as instâncias de máquina virtual (VM) do consumidor se comuniquem de maneira particular com portas de serviço específicas em VMs de produtores específicos por meio de um único endpoint do Private Service Connect.
Antes de começar
- Você precisa ativar a API Compute Engine no projeto.
- É necessário criar VMs para cada um dos endpoints de rede que você quer anexar ao NEG de mapeamento de portas. As VMs precisam estar todas na mesma região.
- Leia Sobre os serviços publicados.
- Leia Sobre o mapeamento de portas do Private Service Connect.
Funções exigidas
Para receber as permissões necessárias para se preparar para publicar um serviço com o mapeamento de portas do Private Service Connect, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto do produtor:
-
Administrador do balanceador de carga do Compute (
roles/compute.loadBalancerAdmin
) -
Administrador de rede do Compute (
roles/compute.networkAdmin
)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
Criar e publicar 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 tem balanceamento de carga. Para criar e publicar um serviço de mapeamento de portas, faça o seguinte:
- Criar um NEG para mapeamento de portas
- Adicionar endpoints de rede ao NEG de mapeamento de portas
- Criar um serviço de mapeamento de portas
- Publicar o serviço de mapeamento de portas
Criar um NEG para mapeamento de portas
O NEG de rede de mapeamento de portas
é um NEG regional com o tipo de endpoint de rede GCE_VM_IP_PORTMAP
. Não
é possível alterar o tipo de NEG de mapeamento de porta depois que ele for criado.
Ao criar um NEG para mapeamento de portas, você escolhe uma sub-rede. Os endpoints de rede associados ao NEG de mapeamento de portas precisam ter uma interface de rede principal nessa sub-rede.
Console
No console do Google Cloud, acesse a página Grupos de endpoints da rede.
Clique em Criar grupo de endpoints de rede.
Digite um Nome.
Clique em Tipo de grupo de endpoints de rede e 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 beta compute network-endpoint-groups create NEG \ --region=REGION \ --network=NETWORK \ --subnet=SUBNET \ --network-endpoint-type=GCE_VM_IP_PORTMAP
Substitua:
NEG
: o nome do NEG de mapeamento da portaREGION
: a região do NEG de mapeamento da portaNETWORK
: a rede VPC do NEG de mapeamento de portas.SUBNET
: a sub-rede do NEG de mapeamento de porta
API
Envie uma solicitação POST
para o
método regionNetworkEndpointGroups.insert
.
POST https://compute.googleapis.com/compute/beta/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:
PROJECT_ID
: o ID do projeto do NEG de mapeamento da porta.REGION
: a região do NEG de mapeamento da portaNEG
: o nome do NEG de mapeamento da portaNETWORK
: a rede VPC do NEG de mapeamento de portas.SUBNET
: a sub-rede do NEG de mapeamento de porta
Adicionar endpoints de rede ao NEG de mapeamento de portas
Crie um ou mais endpoints de rede com mapeamentos de portas e anexe-os ao NEG de mapeamento de portas.
Os endpoints de rede para mapeamento de portas de NEGs são definidos por zona e precisam atender aos seguintes requisitos:
- Cada endpoint de rede se refere a uma VM do Compute Engine que tem uma interface de rede principal na mesma sub-rede do NEG de mapeamento de portas.
- Cada endpoint de rede se refere a uma porta de destino de cliente exclusiva.
Cada endpoint de rede precisa se referir a uma combinação exclusiva de porta de serviço e VM.
Console
No console do Google Cloud, acesse a página Grupos de endpoints da rede.
Clique no nome do NEG de mapeamento de portas que você quer atualizar.
Clique em Adicionar endpoints da rede.
Clique em Instância de VM e selecione uma VM.
Clique em VM port 1 e insira uma porta de serviço.
Clique em Porta do cliente 1 e insira uma porta de destino do cliente.
Para cada endpoint de rede extra que você quer adicionar, clique em Adicionar endpoint de rede e insira os detalhes do endpoint.
Clique em Criar.
gcloud
Use o
comando network-endpoint-groups update
. Inclua uma sinalização --add-endpoint
para cada
endpoint de rede que você quer anexar.
gcloud beta 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:
NEG
: o nome do NEG de mapeamento da portaREGION
: a região do NEG de mapeamento da portaCLIENT_DESTINATION_PORT_1
: a porta de destino do cliente do primeiro endpoint da rede.PROJECT_ID
: o ID do projeto do produtor.ZONE_1
: a zona do primeiro endpoint de rede.VM_1_NAME
: o nome da VM de destino para o primeiro endpoint de rede.VM_1_PORT
: a porta de serviço do primeiro endpoint de rede.CLIENT_DESTINATION_PORT_2
: a porta de destino do cliente do segundo endpoint de rede.ZONE_2
: a zona do segundo endpoint de rede.VM_2_NAME
: o nome da VM de destino para o segundo endpoint de rede.VM_2_PORT
: a porta de serviço do segundo endpoint de rede.
API
Envie uma solicitação POST
para o
método regionNetworkEndpointGroups.attachNetworkEndpoints
.
POST https://compute.googleapis.com/compute/beta/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:
PROJECT_ID
: o ID do projeto do produtor.REGION
: a região do NEG de mapeamento da portaNEG
: o nome do NEG de mapeamento da portaCLIENT_DESTINATION_PORT_1
: a porta de destino do cliente do primeiro endpoint da rede.ZONE_1
: a zona do primeiro endpoint de rede.VM_1_NAME
: o nome da VM de destino para o primeiro endpoint de rede.SERVICE_PORT_1
: a porta de serviço do primeiro endpoint de rede.CLIENT_DESTINATION_PORT_2
: a porta de destino do cliente do segundo endpoint da rede.ZONE_2
: a zona do segundo endpoint de rede.VM_2_NAME
: o nome da VM de destino para o segundo endpoint de rede.SERVICE_PORT_2
: a porta de serviço do segundo endpoint de rede.
Criar um serviço de mapeamento de portas
Para criar um serviço de mapeamento de portas, conclua as etapas a seguir.
Não é possível alterar o NEG de mapeamento de portas associado a um serviço de back-end depois de adicionar o NEG. No entanto, é possível atualizar os endpoints de rede do NEG de mapeamento de portas.
Não é possível atualizar a conexão de uma regra de encaminhamento depois que ela é criada. Se você precisar se conectar a um serviço de back-end diferente, exclua a regra de encaminhamento e crie uma nova.
Console
Iniciar a configuração
No console do Google Cloud, acesse a página Balanceamento de carga.
- Clique em Criar balanceador de carga.
- Em Tipo de balanceador de carga, selecione Balanceador de carga de rede (TCP/UDP/SSL) e clique em Próxima.
- Em Proxy ou passagem, selecione Balanceador de carga de passagem e clique em Próxima.
- Em Voltado ao público ou interno, selecione Interno e clique em Próxima.
- Clique em Configurar.
Configuração básica
- Digite um Nome do balanceador de carga.
- Selecione uma Região.
- Selecione uma rede.
Configuração de back-end
- Em Tipo de back-end, selecione Grupo de endpoints da rede para mapeamento de portas.
- Selecione um Grupo de endpoints de rede para mapeamento de portas.
Configuração de front-end
- Clique em Configuração de front-end.
- Opcional: insira um Nome.
- Opcional: digite 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 beta compute backend-services create SERVICE \ --load-balancing-scheme=internal \ --region=REGION \ --network=NETWORK
Substitua:
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 é possível adicionar vários NEGs de mapeamento de portas a um único serviço de back-end.
gcloud beta compute backend-services add-backend SERVICE \ --network-endpoint-group=NEG \ --network-endpoint-group-region=REGION
Substitua
NEG
pelo nome do NEG de mapeamento de porta.Para criar uma regra de encaminhamento para o serviço de mapeamento de portas, use o comando
forwarding-rules create
.A regra de encaminhamento precisa ser configurada para encaminhar tráfego para todas as portas de destino do cliente.
gcloud beta 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:
RULE
: o nome da regra de encaminhamentoPROTOCOL
: o protocolo da regra de encaminhamento, que pode serTCP
ouUDP
.SUBNET
: a sub-rede do produtor, que precisa ser a mesma sub-rede associada ao NEG de mapeamento de portaIP_ADDRESS
: o endereço IP da regra de encaminhamento, que precisa vir do intervalo de endereços IP da sub-rede do produtor.
API
Para criar um serviço de back-end, envie uma solicitação
POST
para o métodoregionBackendServices.insert
.POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/backendServices { "name": "SERVICE", "loadBalancingScheme": "INTERNAL", "network": "projects/PROJECT_ID/global/networks/NETWORK" }
Substitua:
PROJECT_ID
: o ID do projeto do serviço de back-end.REGION
: a região do serviço de back-endSERVICE
: o nome do serviço de back-endNETWORK
: com a rede VPC do produtor.
Para adicionar o NEG de mapeamento de portas ao serviço de back-end, envie uma solicitação
PATCH
para o métodoregionBackendServices.patch
.Não é possível adicionar vários NEGs de mapeamento de portas a um único serviço de back-end.
PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/backendServices/SERVICE { "backends": [ { "group": "https://compute.googleapis.com/compute/beta/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 serviço de mapeamento de portas, envie uma solicitação
POST
para o métodoforwardingRules.insert
.A regra de encaminhamento precisa ser configurada para encaminhar tráfego para todas as portas de destino do cliente.
POST https://compute.googleapis.com/compute/beta/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:
RULE
: o nome da regra de encaminhamentoPROTOCOL
: o protocolo da regra de encaminhamento, que pode serTCP
ouUDP
.SUBNET
: a sub-rede do produtor, que precisa ser a mesma sub-rede associada ao NEG de mapeamento de portaIP_ADDRESS
: o endereço IP da regra de encaminhamento, que precisa vir do intervalo de endereços IP da sub-rede do produtor
Publicar o serviço de mapeamento de portas
Para disponibilizar seu serviço de mapeamento de portas aos consumidores, publique o serviço criando um anexo de serviço. Ao criar o anexo de serviço, especifique a regra de encaminhamento associada ao serviço de mapeamento de portas.