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

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:

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

  1. Na Google Cloud consola, aceda à página Grupos de pontos finais da rede.

    Aceda a Grupos de pontos finais da rede

  2. Clique em Criar grupo de pontos finais de rede.

  3. Introduza um Nome.

  4. Clique em Tipo de grupo de pontos finais da rede e, de seguida, selecione NEG de mapeamento de portas (regional).

  5. Selecione uma região.

  6. Selecione uma rede.

  7. Selecione uma sub-rede.

  8. 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 portas
  • REGION: a região do NEG de mapeamento de portas
  • NETWORK: a rede VPC do NEG de mapeamento de portas
  • SUBNET: 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 NEG
  • REGION: a região do NEG de mapeamento de portas
  • NEG: o nome do NEG de mapeamento de portas
  • NETWORK: a rede VPC do NEG de mapeamento de portas
  • SUBNET: 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

  1. Na Google Cloud consola, aceda à página Grupos de pontos finais da rede.

    Aceda a Grupos de pontos finais da rede

  2. Clique no nome do NEG de mapeamento de portas que quer atualizar.

  3. Clique em Adicionar pontos finais de rede.

  4. Clique em Instância de VM e, de seguida, selecione uma VM.

  5. Clique em Porta da VM 1 e, de seguida, introduza uma porta de serviço.

  6. Clique em Porta do cliente 1 e, de seguida, introduza uma porta de destino do cliente.

  7. 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.

  8. 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 portas
  • REGION: a região do NEG de mapeamento de portas
  • CLIENT_DESTINATION_PORT_1: a porta de destino do cliente do primeiro ponto final de rede
  • PROJECT_ID: o ID do projeto do projeto do produtor
  • ZONE_1: a zona do primeiro ponto final da rede
  • VM_1_NAME: o nome da VM de destino para o primeiro ponto final de rede
  • VM_1_PORT: a porta de serviço do primeiro ponto final de rede
  • CLIENT_DESTINATION_PORT_2: a porta de destino do cliente do ponto final de rede secundário
  • ZONE_2: a zona do segundo ponto final da rede
  • VM_2_NAME: o nome da VM de destino para o segundo ponto final de rede
  • VM_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 produtor
  • REGION: a região do NEG de mapeamento de portas
  • NEG: o nome do NEG de mapeamento de portas
  • CLIENT_DESTINATION_PORT_1: a porta de destino do cliente do primeiro ponto final de rede
  • ZONE_1: a zona do primeiro ponto final da rede
  • VM_1_NAME: o nome da VM de destino para o primeiro ponto final de rede
  • SERVICE_PORT_1: a porta de serviço do primeiro ponto final de rede
  • CLIENT_DESTINATION_PORT_2: a porta de destino do cliente do ponto final da segunda rede
  • ZONE_2: a zona do segundo ponto final da rede
  • VM_2_NAME: o nome da VM de destino para o segundo ponto final de rede
  • SERVICE_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

  1. Na Google Cloud consola, aceda à página Equilíbrio de carga.

    Aceda ao balanceamento de carga

  2. Clique em Criar equilibrador de carga.
  3. Para Tipo de balanceador de carga, selecione Balanceador de carga de rede (TCP/UDP/SSL) e clique em Seguinte.
  4. Para Proxy ou passagem, selecione Passagem do balanceador de carga e clique em Seguinte.
  5. Para Público ou interno, selecione Interno e clique em Seguinte.
  6. Clique em Configurar.

Configuração básica

  1. Introduza um nome do balanceador de carga.
  2. Selecione uma região.
  3. Selecione uma rede.

Configuração do back-end

  1. Para Tipo de back-end, selecione Grupo de pontos finais da rede de mapeamento de portas.
  2. Selecione um grupo de pontos finais da rede de mapeamento de portas.

Configuração do frontend

  1. Clique em Configuração do front-end.
  2. Opcional: introduza um Nome.
  3. Opcional: introduza uma Descrição.
  4. Selecione um Protocolo.
  5. Selecione uma sub-rede.
  6. Clique em Concluído.
  7. Clique em Criar.

gcloud

  1. 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-end
    • REGION: a região do serviço de back-end
    • NETWORK: a rede VPC do produtor do serviço de back-end
  2. 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.

  3. 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 encaminhamento
    • PROTOCOL: o protocolo da regra de encaminhamento, que pode ser TCP ou UDP
    • SUBNET: a sub-rede do produtor, que tem de ser a mesma sub-rede associada ao NEG de mapeamento de portas
    • IP_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

  1. Para criar um serviço de back-end, envie um pedido POST para o método regionBackendServices.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-end
    • REGION: a região do serviço de back-end
    • SERVICE: o nome do serviço de back-end
    • NETWORK: a rede VPC do produtor
  2. 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.

  3. 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 encaminhamento
    • PROTOCOL: o protocolo da regra de encaminhamento, que pode ser TCP ou UDP
    • SUBNET: a sub-rede do produtor, que tem de ser a mesma sub-rede associada ao NEG de mapeamento de portas
    • IP_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.

O que se segue?