Crea servicios de asignación de puertos

En esta página, se describe cómo los productores de servicios pueden publicar servicios que usan asignaciones de puertos de Private Service Connect.

La asignación de puertos de Private Service Connect permite que las instancias de máquina virtual (VM) de consumidores se comunican de forma privada con puertos de servicio específicos en VMs de productores específicas mediante un único extremo de Private Service Connect.

Antes de comenzar

Roles obligatorios

Para obtener los permisos que necesitas para prepararte para publicar un servicio con la asignación de puertos de Private Service Connect, pídele al administrador que te otorgue los siguientes roles de IAM en el proyecto del productor:

Si quieres obtener más información para otorgar roles, consulta Administra el acceso.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Crea y publica un servicio de asignación de puertos

Los servicios de asignación de puertos tienen parámetros de configuración similares a los balanceadores de cargas de red de transferencia internos, pero el tráfico no tiene balanceo de cargas. Para crear y publicar un servicio de asignación de puertos, haz lo siguiente:

  • Crea un NEG de asignación de puertos
  • Agrega extremos de red al NEG de asignación de puertos
  • Crea un servicio de asignación de puertos
  • Publica el servicio de asignación de puertos

Crea un NEG de asignación de puertos

Un NEG de red de asignación de puertos es un NEG regional con el tipo de extremo de red GCE_VM_IP_PORTMAP. No es posible cambiar el tipo de NEG de asignación de puertos después de crearlo.

Cuando creas un NEG de asignación de puertos, debes elegir una subred. Los extremos de red que asocias con el NEG de asignación de puertos debe tener una interfaz de red principal en esta subred.

Console

  1. En la consola de Google Cloud, ve a la página Grupos de extremos de red.

    Ir a Grupos de extremos de red

  2. Haz clic en Crear un grupo de extremos de red.

  3. Escribe un Nombre.

  4. Haz clic en Tipo de grupo de extremos de red y, luego, selecciona NEG de asignación de puertos (regional)

  5. Selecciona una Región.

  6. Selecciona una Red.

  7. Selecciona una Subred.

  8. Haz clic en Crear.

gcloud

Usa el 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

Reemplaza lo siguiente:

  • NEG: el nombre del NEG de asignación de puertos.
  • REGION: la región del NEG de asignación de puertos.
  • NETWORK: la red de VPC de la NEG de asignación de puertos
  • SUBNET: la subred del NEG de asignación de puertos

API

Envía una solicitud POST al 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"
}

Reemplaza lo siguiente:

  • PROJECT_ID: el ID del proyecto del NEG de asignación de puertos
  • REGION: la región del NEG de asignación de puertos.
  • NEG: el nombre del NEG de asignación de puertos.
  • NETWORK: la red de VPC de la NEG de asignación de puertos
  • SUBNET: la subred del NEG de asignación de puertos

Agrega extremos de red al NEG de asignación de puertos

Crea uno o más extremos de red con asignaciones de puertos y conéctalos al NEG de asignación de puertos.

Los extremos de red para los NEG de asignación de puertos son zonales y deben cumplir con los siguientes requisitos:

  • Cada extremo de red se refiere a una VM de Compute Engine que tiene una interfaz de red principal en la misma subred que el NEG de asignación de puertos.
  • Cada extremo de red hace referencia a un puerto de destino del cliente único.
  • Cada extremo de red debe hacer referencia a una combinación única de puertos de servicio y VM.

Console

  1. En la consola de Google Cloud, ve a la página Grupos de extremos de red.

    Ir a Grupos de extremos de red

  2. Haz clic en el nombre del NEG de asignación de puertos que deseas actualizar.

  3. Haz clic en Agregar extremos de red.

  4. Haz clic en Instancia de VM y, luego, selecciona una VM.

  5. Haz clic en Puerto de VM 1 y, luego, ingresa un puerto de servicio.

  6. Haz clic en Puerto del cliente 1 y, luego, ingresa un puerto de destino del cliente.

  7. Por cada extremo de red adicional que quieras agregar, haz clic en Agregar extremo de red y, luego, ingresa los detalles del extremo de red.

  8. Haz clic en Crear.

gcloud

Usa el comando network-endpoint-groups update Incluye una marca --add-endpoint para cada extremo de red que quieres conectar.

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

Reemplaza lo siguiente:

  • NEG: el nombre del NEG de asignación de puertos.
  • REGION: la región del NEG de asignación de puertos.
  • CLIENT_DESTINATION_PORT_1: el puerto de destino del cliente del primer extremo de red
  • PROJECT_ID: el ID del proyecto del proyecto del productor.
  • ZONE_1: la zona del primer extremo de red.
  • VM_1_NAME: el nombre de la VM de destino para el primer extremo de red
  • VM_1_PORT: el puerto de servicio del primer extremo de red
  • CLIENT_DESTINATION_PORT_2: el puerto de destino del cliente del segundo extremo de red
  • ZONE_2: la zona del segundo extremo de red.
  • VM_2_NAME: el nombre de la VM de destino para el segundo extremo de red
  • VM_2_PORT: el puerto de servicio del segundo extremo de red

API

Envía una solicitud POST al 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
    }
  ]
}

Reemplaza lo siguiente:

  • PROJECT_ID: el ID del proyecto del proyecto del productor.
  • REGION: la región del NEG de asignación de puertos.
  • NEG: el nombre del NEG de asignación de puertos.
  • CLIENT_DESTINATION_PORT_1: el puerto de destino del cliente del primer extremo de red
  • ZONE_1: la zona del primer extremo de red.
  • VM_1_NAME: el nombre de la VM de destino para el primer extremo de red
  • SERVICE_PORT_1: el puerto de servicio del primer extremo de red
  • CLIENT_DESTINATION_PORT_2: el puerto de destino del cliente del segundo extremo de red
  • ZONE_2: la zona del segundo extremo de red.
  • VM_2_NAME: el nombre de la VM de destino para el segundo extremo de red
  • SERVICE_PORT_2: el puerto de servicio del segundo extremo de red

Crea un servicio de asignación de puertos

Para crear un servicio de asignación de puertos, completa los siguientes pasos.

No puedes cambiar el NEG de asignación de puertos asociado con un servicio de backend después de agregar el NEG. Sin embargo, puedes actualizar los extremos de red del NEG de asignación de puertos.

No puedes actualizar la conexión de una regla de reenvío después de crearla. Si necesitas conectarte a un servicio de backend diferente, borra la regla de reenvío y, luego, crea una nueva.

Console

Inicia la configuración

  1. En la consola de Google Cloud, ve a la página Balanceo de cargas.

    Ir a Balanceo de cargas

  2. Haz clic en Crear balanceador de cargas.
  3. En Tipo de balanceador de cargas, selecciona Balanceador de cargas de red (TCP/UDP/SSL) y haz clic en Siguiente.
  4. En Proxy o de transferencia, selecciona Balanceador de cargas de transferencia y haz clic en Siguiente.
  5. En Orientado al público o interno, selecciona Interno y haz clic en Siguiente.
  6. Haz clic en Configurar.

Configuración básica

  1. Ingresa un nombre de balanceador de cargas.
  2. Selecciona una Región.
  3. Selecciona una Red.

Configuración de backend

  1. En Tipo de backend, selecciona Grupo de extremos de red de asignación de puertos.
  2. Selecciona un grupo de extremos de red de asignación de puertos.

Configuración de frontend

  1. Haz clic en Configuración de frontend.
  2. Opcional: Ingresa un Nombre.
  3. Ingresa una Descripción (opcional).
  4. Selecciona un protocolo
  5. Selecciona una Subred.
  6. Haz clic en Listo.
  7. Haz clic en Crear.

gcloud

  1. Para crear un servicio de backend, usa el comando backend-services create.

    gcloud beta compute backend-services create SERVICE \
        --load-balancing-scheme=internal \
        --region=REGION \
        --network=NETWORK
    

    Reemplaza lo siguiente:

    • SERVICE: el nombre del servicio de backend.
    • REGION: la región del servicio de backend.
    • NETWORK: la red de VPC de productor del servicio de backend
  2. Para agregar tu NEG de asignación de puertos al servicio de backend, usa el comando backend-services add-backend.

    No puedes agregar varios NEGs de asignación de puertos a un solo servicio de backend.

    gcloud beta compute backend-services add-backend SERVICE \
        --network-endpoint-group=NEG \
        --network-endpoint-group-region=REGION
    

    Reemplaza NEG por el nombre del NEG de asignación de puertos

  3. Si quieres crear una regla de reenvío para tu servicio de asignación de puertos, usa el comando forwarding-rules create.

    La regla de reenvío debe configurarse para reenviar el tráfico a todos los puertos de destino del 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
    

    Reemplaza lo siguiente:

    • RULE: el nombre de la regla de reenvío.
    • PROTOCOL: el protocolo de la regla de reenvío, que puede ser TCP o UDP.
    • SUBNET: la subred del productor, que debe ser la misma subred que está asociada con el NEG de asignación de puertos
    • IP_ADDRESS: la dirección IP de la regla de reenvío que debe provenir del rango de direcciones IP de la subred del productor

API

  1. Para crear un servicio de backend, envía una solicitud POST al 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"
    }
    

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID del proyecto de servicios de backend
    • REGION: la región del servicio de backend.
    • SERVICE: el nombre del servicio de backend.
    • NETWORK: la red de VPC de productor.
  2. Para agregar tu NEG de asignación de puertos al servicio de backend, envía un PATCH al método regionBackendServices.patch.

    No puedes agregar varios NEGs de asignación de puertos a un solo servicio de backend.

    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"
        }
      ]
    }
    

    Reemplaza NEG por el nombre de tu NEG de asignación de puertos.

  3. Si quieres crear una regla de reenvío para tu servicio de asignación de puertos, envía una solicitud POST al método forwardingRules.insert.

    La regla de reenvío debe configurarse para reenviar el tráfico a todos los puertos de destino del 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"
    }
    

    Reemplaza lo siguiente:

    • RULE: el nombre de la regla de reenvío.
    • PROTOCOL: el protocolo de la regla de reenvío, que puede ser TCP o UDP.
    • SUBNET: la subred del productor, que debe ser la misma subred que está asociada con el NEG de asignación de puertos
    • IP_ADDRESS: la dirección IP de la regla de reenvío que debe provenir del rango de direcciones IP de la subred del productor

Publica el servicio de asignación de puertos

Para que tu servicio de asignación de puertos esté disponible para los consumidores, publica el servicio creando un adjunto de servicio. Cuando creas el adjunto de servicio, especifica la regla de reenvío asociada con tu servicio de asignación de puertos.

¿Qué sigue?