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

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:

Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Também é possível conseguir as permissões necessárias com papéis personalizados ou 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

  1. No console do Google Cloud, acesse a página Grupos de endpoints da rede.

    Acessar grupos de endpoints da rede

  2. Clique em Criar grupo de endpoints de rede.

  3. Digite um Nome.

  4. Clique em Tipo de grupo de endpoints de rede e 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 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 porta
  • REGION: a região do NEG de mapeamento da porta
  • NETWORK: 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 porta
  • NEG: o nome do NEG de mapeamento da porta
  • NETWORK: 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

  1. No console do Google Cloud, acesse a página Grupos de endpoints da rede.

    Acessar grupos de endpoints da rede

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

  3. Clique em Adicionar endpoints da rede.

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

  5. Clique em VM port 1 e insira uma porta de serviço.

  6. Clique em Porta do cliente 1 e insira uma porta de destino do cliente.

  7. Para cada endpoint de rede extra que você quer adicionar, clique em Adicionar endpoint de rede e insira os detalhes do endpoint.

  8. 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 porta
  • REGION: a região do NEG de mapeamento da porta
  • CLIENT_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 porta
  • NEG: o nome do NEG de mapeamento da porta
  • CLIENT_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

  1. No console do Google Cloud, acesse a página Balanceamento de carga.

    Acessar o "Balanceamento de carga"

  2. Clique em Criar balanceador de carga.
  3. Em Tipo de balanceador de carga, selecione Balanceador de carga de rede (TCP/UDP/SSL) e clique em Próxima.
  4. Em Proxy ou passagem, selecione Balanceador de carga de passagem e clique em Próxima.
  5. Em Voltado ao público ou interno, selecione Interno e clique em Próxima.
  6. Clique em Configurar.

Configuração básica

  1. Digite um Nome do balanceador de carga.
  2. Selecione uma Região.
  3. Selecione uma rede.

Configuração de back-end

  1. Em Tipo de back-end, selecione Grupo de endpoints da rede para mapeamento de portas.
  2. Selecione um Grupo de endpoints de rede para mapeamento de portas.

Configuração de front-end

  1. Clique em Configuração de front-end.
  2. Opcional: insira um Nome.
  3. Opcional: digite 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 beta compute backend-services create SERVICE \
        --load-balancing-scheme=internal \
        --region=REGION \
        --network=NETWORK
    

    Substitua:

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

  3. 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 encaminhamento
    • PROTOCOL: o protocolo da regra de encaminhamento, que pode ser TCP ou UDP.
    • SUBNET: a sub-rede do produtor, que precisa ser a mesma sub-rede associada ao NEG de mapeamento de porta
    • IP_ADDRESS: o endereço IP da regra de encaminhamento, que precisa vir do intervalo de endereços IP da sub-rede do produtor.

API

  1. Para criar um serviço de back-end, envie uma solicitação POST para o método regionBackendServices.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-end
    • SERVICE: o nome do serviço de back-end
    • NETWORK: com a rede VPC do produtor.
  2. Para adicionar o NEG de mapeamento de portas ao serviço de back-end, envie uma solicitação PATCH para o método regionBackendServices.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.

  3. Para criar uma regra de encaminhamento para o serviço de mapeamento de portas, envie uma solicitação POST para o método forwardingRules.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 encaminhamento
    • PROTOCOL: o protocolo da regra de encaminhamento, que pode ser TCP ou UDP.
    • SUBNET: a sub-rede do produtor, que precisa ser a mesma sub-rede associada ao NEG de mapeamento de porta
    • IP_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.

A seguir