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
- Debes habilitar la API de Compute Engine en tu proyecto.
- Debes crear VMs para cada extremo de red que quieres conectar a la asignación de puertos NEG. Todas las VMs deben estar en la misma región.
- Consulta Acerca de los servicios publicados.
- Consulta Acerca de la asignación de puertos de Private Service Connect.
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:
-
Administrador de balanceador de cargas de Compute (
roles/compute.loadBalancerAdmin
) -
Administrador de la red de Compute (
roles/compute.networkAdmin
)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
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
En la consola de Google Cloud, ve a la página Grupos de extremos de red.
Haz clic en Crear un grupo de extremos de red.
Escribe un Nombre.
Haz clic en Tipo de grupo de extremos de red y, luego, selecciona NEG de asignación de puertos (regional)
Selecciona una Región.
Selecciona una Red.
Selecciona una Subred.
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 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/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 puertosREGION
: 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 puertosSUBNET
: 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
En la consola de Google Cloud, ve a la página Grupos de extremos de red.
Haz clic en el nombre del NEG de asignación de puertos que deseas actualizar.
Haz clic en Agregar extremos de red.
Haz clic en Instancia de VM y, luego, selecciona una VM.
Haz clic en Puerto de VM 1 y, luego, ingresa un puerto de servicio.
Haz clic en Puerto del cliente 1 y, luego, ingresa un puerto de destino del cliente.
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.
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 redPROJECT_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 redVM_1_PORT
: el puerto de servicio del primer extremo de redCLIENT_DESTINATION_PORT_2
: el puerto de destino del cliente del segundo extremo de redZONE_2
: la zona del segundo extremo de red.VM_2_NAME
: el nombre de la VM de destino para el segundo extremo de redVM_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 redZONE_1
: la zona del primer extremo de red.VM_1_NAME
: el nombre de la VM de destino para el primer extremo de redSERVICE_PORT_1
: el puerto de servicio del primer extremo de redCLIENT_DESTINATION_PORT_2
: el puerto de destino del cliente del segundo extremo de redZONE_2
: la zona del segundo extremo de red.VM_2_NAME
: el nombre de la VM de destino para el segundo extremo de redSERVICE_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
En la consola de Google Cloud, ve a la página Balanceo de cargas.
- Haz clic en Crear balanceador de cargas.
- En Tipo de balanceador de cargas, selecciona Balanceador de cargas de red (TCP/UDP/SSL) y haz clic en Siguiente.
- En Proxy o de transferencia, selecciona Balanceador de cargas de transferencia y haz clic en Siguiente.
- En Orientado al público o interno, selecciona Interno y haz clic en Siguiente.
- Haz clic en Configurar.
Configuración básica
- Ingresa un nombre de balanceador de cargas.
- Selecciona una Región.
- Selecciona una Red.
Configuración de backend
- En Tipo de backend, selecciona Grupo de extremos de red de asignación de puertos.
- Selecciona un grupo de extremos de red de asignación de puertos.
Configuración de frontend
- Haz clic en Configuración de frontend.
- Opcional: Ingresa un Nombre.
- Ingresa una Descripción (opcional).
- Selecciona un protocolo
- Selecciona una Subred.
- Haz clic en Listo.
- Haz clic en Crear.
gcloud
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
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 puertosSi 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 serTCP
oUDP
.SUBNET
: la subred del productor, que debe ser la misma subred que está asociada con el NEG de asignación de puertosIP_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
Para crear un servicio de backend, envía una solicitud
POST
al métodoregionBackendServices.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 backendREGION
: la región del servicio de backend.SERVICE
: el nombre del servicio de backend.NETWORK
: la red de VPC de productor.
Para agregar tu NEG de asignación de puertos al servicio de backend, envía un
PATCH
al métodoregionBackendServices.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.Si quieres 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 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 serTCP
oUDP
.SUBNET
: la subred del productor, que debe ser la misma subred que está asociada con el NEG de asignación de puertosIP_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.