Crear servicios de asignación de puertos

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

La asignación de puertos de Private Service Connect permite que los clientes consumidores se comuniquen de forma privada con puertos de servicio específicos en VMs de productores concretas a través de un único punto final de Private Service Connect.

Antes de empezar

Roles obligatorios

Para obtener los permisos que necesitas para preparar la publicación de un servicio con la asignación de puertos de Private Service Connect, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en el proyecto del productor:

Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.

Crear y publicar un servicio de asignación de puertos

Los servicios de asignación de puertos tienen configuraciones similares a las de los balanceadores de carga de red de paso a través internos, pero el tráfico no se balancea. Para crear y publicar un servicio de asignación de puertos, haz lo siguiente:

  • Crear un NEG de asignación de puertos
  • Añadir endpoints de red al NEG de asignación de puertos
  • Crear un servicio de asignación de puertos
  • Publicar el servicio de asignación de puertos

Crear un NEG de asignación de puertos

Un NEG de red de asignación de puertos es un NEG regional con el tipo de punto final de red GCE_VM_IP_PORTMAP. No se puede cambiar el tipo de un NEG de asignación de puertos una vez creado.

Cuando creas un NEG de asignación de puertos, eliges una subred. Los endpoints de red que asocies al NEG de asignación de puertos deben tener una interfaz de red principal en esta subred.

Consola

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

    Ve a Grupos de puntos finales de red.

  2. Haz clic en Crear grupo de endpoints de red.

  3. Escribe un nombre.

  4. Haga clic en Tipo de grupo de endpoints de red y, a continuación, seleccione NEG de asignación de puertos (regional).

  5. Selecciona una región.

  6. Selecciona una red.

  7. Seleccione una subred.

  8. Haz clic en Crear.

gcloud

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

Haz los cambios siguientes:

  • 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 del 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/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"
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID de proyecto de la asignación de puertos NEG
  • 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 del NEG de asignación de puertos
  • SUBNET: la subred del NEG de asignación de puertos.

Añadir endpoints de red al NEG de asignación de puertos

Crea uno o varios endpoints de red con asignaciones de puertos y adjúntalos al NEG de asignación de puertos.

Los endpoints de red de los NEGs de asignación de puertos son zonales y deben cumplir los siguientes requisitos:

  • Cada endpoint de red hace referencia 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 endpoint de red hace referencia a un puerto de destino de cliente único.
  • Cada punto final de red debe hacer referencia a una combinación única de puerto de servicio y VM.

Consola

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

    Ve a Grupos de puntos finales de red.

  2. Haga clic en el nombre del NEG de asignación de puertos que quiera actualizar.

  3. Haz clic en Añadir endpoints de red.

  4. Haz clic en Instancia de VM y, a continuación, selecciona una VM.

  5. Haz clic en Puerto de VM 1 y, a continuación, introduce un puerto de servicio.

  6. Haga clic en Puerto de cliente 1 y, a continuación, introduzca un puerto de destino del cliente.

  7. Por cada punto final de red adicional que quieras añadir, haz clic en Añadir punto final de red y, a continuación, introduce los detalles del punto final de red.

  8. Haz clic en Crear.

gcloud

Usa el comando network-endpoint-groups update. Incluye una marca --add-endpoint por cada endpoint de red que quieras adjuntar.

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

Haz los cambios siguientes:

  • 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 endpoint de red.
  • PROJECT_ID: el ID del proyecto del productor project
  • ZONE_1: la zona del primer endpoint de red.
  • VM_1_NAME: el nombre de la VM de destino del primer endpoint de red
  • VM_1_PORT: el puerto de servicio del primer endpoint de red.
  • CLIENT_DESTINATION_PORT_2: puerto de destino del cliente del segundo endpoint de red.
  • ZONE_2: la zona del segundo punto final de red
  • VM_2_NAME: nombre de la VM de destino del segundo endpoint de red
  • VM_2_PORT: el puerto de servicio del segundo endpoint de red.

API

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

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto del productor project
  • 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 endpoint de red.
  • ZONE_1: la zona del primer endpoint de red.
  • VM_1_NAME: el nombre de la VM de destino del primer endpoint de red
  • SERVICE_PORT_1: el puerto de servicio del primer endpoint de red.
  • CLIENT_DESTINATION_PORT_2: el puerto de destino del cliente del segundo endpoint de red.
  • ZONE_2: la zona del segundo punto final de red
  • VM_2_NAME: nombre de la VM de destino del segundo endpoint de red
  • SERVICE_PORT_2: el puerto de servicio del segundo endpoint de red.

Crear un servicio de asignación de puertos

Para crear un servicio de asignación de puertos, sigue estos pasos.

No puedes cambiar el NEG de asignación de puertos asociado a un servicio de backend después de añadir el NEG. Sin embargo, puedes actualizar los puntos finales 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 otro servicio backend, elimina la regla de reenvío y crea una nueva.

Consola

Iniciar la configuración

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

    Ir a Balanceo de carga

  2. Haga clic en Crear balanceador de carga.
  3. En Tipo de balanceador de carga, selecciona Balanceador de carga de red (TCP/UDP/SSL) y haz clic en Siguiente.
  4. En Proxy o pasarela, selecciona Balanceador de carga de pasarela y haz clic en Siguiente.
  5. En Público o interno, selecciona Interno y haz clic en Siguiente.
  6. Haz clic en Configurar.

Configuración básica

  1. Introduce un nombre de balanceador de carga.
  2. Selecciona una región.
  3. Selecciona una red.

Configuración de backend

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

Configuración del frontend

  1. Haz clic en Configuración de frontend.
  2. Opcional: Introduce un nombre.
  3. Opcional: Introduce una Descripción.
  4. Selecciona un protocolo.
  5. Seleccione 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 compute backend-services create SERVICE \
        --load-balancing-scheme=internal \
        --region=REGION \
        --network=NETWORK
    

    Haz los cambios siguientes:

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

    No puedes añadir varios NEGs de asignación de puertos a un mismo servicio de backend.

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

    Sustituye NEG por el nombre del NEG de asignación de puertos.

  3. Para 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 de todos los puertos de destino del 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
    

    Haz los cambios siguientes:

    • 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 que esté asociada al NEG de asignación de puertos
    • IP_ADDRESS: la dirección IP de la regla de reenvío, que debe proceder del intervalo 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/v1/projects/PROJECT_ID/regions/REGION/backendServices
    {
      "name": "SERVICE",
      "loadBalancingScheme": "INTERNAL",
      "network": "projects/PROJECT_ID/global/networks/NETWORK"
    }
    

    Haz los cambios siguientes:

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

    No puedes añadir varios NEGs de asignación de puertos a un mismo servicio de backend.

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

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

  3. Para 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 de todos los puertos de destino del 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"
    }
    

    Haz los cambios siguientes:

    • 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 que esté asociada al NEG de asignación de puertos
    • IP_ADDRESS: la dirección IP de la regla de reenvío, que debe proceder del intervalo de direcciones IP de la subred del productor

Publicar 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 una vinculación de servicio. Cuando crees el adjunto de servicio, especifica la regla de reenvío asociada a tu servicio de asignación de puertos.

Siguientes pasos