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
- Debes habilitar la API Compute Engine en tu proyecto.
- Debes crear VMs para cada uno de los endpoints de red que quieras adjuntar al NEG de asignación de puertos. Todas las VMs deben estar en la misma región.
- Consulta Información sobre los servicios publicados.
- Consulta Información sobre la asignación de puertos de Private Service Connect.
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:
-
Administrador de balanceadores de carga de Compute (
roles/compute.loadBalancerAdmin
) -
Administrador de red de Compute (
roles/compute.networkAdmin
)
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
En la Google Cloud consola, ve a la página Grupos de puntos finales de red.
Haz clic en Crear grupo de endpoints de red.
Escribe un nombre.
Haga clic en Tipo de grupo de endpoints de red y, a continuación, seleccione NEG de asignación de puertos (regional).
Selecciona una región.
Selecciona una red.
Seleccione una subred.
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 puertosREGION
: la región del NEG de asignación de puertosNETWORK
: la red de VPC del NEG de asignación de puertosSUBNET
: 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 NEGREGION
: la región del NEG de asignación de puertosNEG
: el nombre del NEG de asignación de puertosNETWORK
: la red de VPC del NEG de asignación de puertosSUBNET
: 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
En la Google Cloud consola, ve a la página Grupos de puntos finales de red.
Haga clic en el nombre del NEG de asignación de puertos que quiera actualizar.
Haz clic en Añadir endpoints de red.
Haz clic en Instancia de VM y, a continuación, selecciona una VM.
Haz clic en Puerto de VM 1 y, a continuación, introduce un puerto de servicio.
Haga clic en Puerto de cliente 1 y, a continuación, introduzca un puerto de destino del cliente.
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.
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 puertosREGION
: la región del NEG de asignación de puertosCLIENT_DESTINATION_PORT_1
: el puerto de destino del cliente del primer endpoint de red.PROJECT_ID
: el ID del proyecto del productor projectZONE_1
: la zona del primer endpoint de red.VM_1_NAME
: el nombre de la VM de destino del primer endpoint de redVM_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 redVM_2_NAME
: nombre de la VM de destino del segundo endpoint de redVM_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 projectREGION
: la región del NEG de asignación de puertosNEG
: el nombre del NEG de asignación de puertosCLIENT_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 redSERVICE_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 redVM_2_NAME
: nombre de la VM de destino del segundo endpoint de redSERVICE_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
En la Google Cloud consola, ve a la página Balanceo de carga.
- Haga clic en Crear balanceador de carga.
- En Tipo de balanceador de carga, selecciona Balanceador de carga de red (TCP/UDP/SSL) y haz clic en Siguiente.
- En Proxy o pasarela, selecciona Balanceador de carga de pasarela y haz clic en Siguiente.
- En Público o interno, selecciona Interno y haz clic en Siguiente.
- Haz clic en Configurar.
Configuración básica
- Introduce un nombre de balanceador de carga.
- Selecciona una región.
- Selecciona una red.
Configuración de backend
- En Tipo de backend, selecciona Grupo de endpoints de red de asignación de puertos.
- Selecciona un grupo de endpoints de red de asignación de puertos.
Configuración del frontend
- Haz clic en Configuración de frontend.
- Opcional: Introduce un nombre.
- Opcional: Introduce una Descripción.
- Selecciona un protocolo.
- Seleccione una subred.
- Haz clic en Listo.
- Haz clic en Crear.
gcloud
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 backendREGION
: región del servicio de backendNETWORK
: la red de VPC del productor del servicio de backend
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.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íoPROTOCOL
: el protocolo de la regla de reenvío, que puede serTCP
oUDP
SUBNET
: la subred del productor, que debe ser la misma que esté asociada al NEG de asignación de puertosIP_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
Para crear un servicio de backend, envía una solicitud
POST
al métodoregionBackendServices.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 backendREGION
: región del servicio de backendSERVICE
: el nombre del servicio de backendNETWORK
: la red de VPC del productor
Para añadir tu NEG de asignación de puertos al servicio de backend, envía una solicitud
PATCH
al métodoregionBackendServices.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.Para crear una regla de reenvío para tu servicio de asignación de puertos, envía una solicitud
POST
al métodoforwardingRules.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íoPROTOCOL
: el protocolo de la regla de reenvío, que puede serTCP
oUDP
SUBNET
: la subred del productor, que debe ser la misma que esté asociada al NEG de asignación de puertosIP_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.