Conectividad con servicios alojados en un entorno sin servidor
En esta página se describe cómo puede configurar Integration Connectors para conectarse a servicios alojados en entornos sin servidor, como Cloud Run en Google Cloud.
En la siguiente imagen se muestra una configuración de conectividad de red privada de Integration Connectors a un servicio alojado en el entorno de Cloud Run en Google Cloud:
En esta página se da por hecho que conoces los siguientes conceptos:
- Adjuntos de endpoint
- Zonas gestionadas
- Private Service Connect (PSC)
- Balanceador de carga de Google Cloud
Cuestiones importantes
Cuando crees un adjunto de servicio de PSC, ten en cuenta los siguientes puntos clave:
- La vinculación de servicio de PSC y el balanceador de carga se crean en subredes diferentes de la misma VPC. En concreto, el adjunto de servicio siempre se crea en una subred NAT.
- El tráfico del balanceador de carga y la comprobación de estado deben enviarse al mismo puerto.
- Configura las reglas de cortafuegos para facilitar el flujo de tráfico.
Reglas de entrada
El tráfico de la subred del adjunto de servicio de PSC debe llegar a tu servicio de backend.
Reglas de salida
El tráfico de salida está habilitado de forma predeterminada en un proyecto de Google Cloud, a menos que se configuren reglas de denegación específicas.
- Todos tus componentes de Google Cloud, como el adjunto de servicio de PSC y el balanceador de carga, deben estar en la misma región.
Crear una vinculación de servicio de PSC
Para establecer una conectividad privada desde Integration Connectors, tu servicio debe exponerse a Integration Connectors mediante una vinculación de servicio de PSC. Un acoplamiento de servicio siempre usa un balanceador de carga. Por lo tanto, si tu servicio no está detrás de un balanceador de carga, debes configurarlo.
- Crea un balanceador de carga. Si ya tienes un balanceador de carga, puedes saltarte este paso.
Para crear un balanceador de carga de aplicaciones que use un NEG sin servidor como backend, sigue las instrucciones que se indican en el artículo Configurar un balanceador de carga de aplicaciones interno regional con Cloud Run.
- Crea la vinculación de servicio.
- Crea una subred para NAT de PSC. Con el siguiente comando se crea una subred con el nombre
psc-nat-subnet1
y el propósitoPRIVATE_SERVICE_CONNECT
.gcloud compute networks subnets create psc-nat-subnet1 \ --network=VPC_NETWORK --range=SUBNET_RANGE_1 \ --purpose=PRIVATE_SERVICE_CONNECT
- Crea una regla de cortafuegos para permitir el tráfico de la NAT de PSC al balanceador de carga.
gcloud compute network-firewall-policies rules create PRIORITY --firewall-policy FIREWALL_POLICY_NAME_SA \ --direction=INGRESS --network=VPC_NETWORK \ --action=allow --allow=tcp:BACKEND_SERVER_PORT --src-ip-ranges=SUBNET_RANGE_1
- Crea una vinculación de servicio con la aprobación explícita.
gcloud compute service-attachments create SERVICE_ATTACHMENT_NAME --producer-forwarding-rule=FORWARDING_RULE_NAME --connection-preference=ACCEPT_MANUAL --consumer-accept-list=SERVICE_DIRECTORY_PROJECT_ID=LIMIT --nat-subnets=psc-nat-subnet1
En este comando, LIMIT es el límite de conexiones del proyecto. El límite de conexiones es el número de endpoints de PSC de consumidor que pueden conectarse a este servicio. Para obtener el SERVICE_DIRECTORY_PROJECT_ID, sigue estos pasos:
-
Puedes crear el adjunto de servicio de PSC de forma que solo acepte solicitudes de los proyectos de Google Cloud especificados. Sin embargo, para hacerlo, necesitas el ID del proyecto del directorio de servicios asociado a tu proyecto de Google Cloud. Para obtener el ID del proyecto del directorio de servicios, puedes usar la API List Connections, como se muestra en el siguiente ejemplo.
Sintaxis
curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"
Haz los cambios siguientes:
- CONNECTORS_PROJECT_ID: el ID de tu proyecto de Google Cloud en el que has creado la conexión.
Ejemplo
En este ejemplo se obtiene el ID de proyecto del directorio de servicios del proyecto de Google Cloud
connectors-test
.curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"
Al ejecutar este comando en el terminal, se muestra un resultado similar al siguiente:
..... { "connections": [ { "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa", "createTime": "2022-10-07T09:02:31.905048520Z", "updateTime": "2022-10-07T09:22:39.993778690Z", "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1", "status": { "state": "ACTIVE" }, "configVariables": [ { "key": "project_id", "stringValue": "connectors-test" }, { "key": "dataset_id", "stringValue": "testDataset" } ], "authConfig": {}, "serviceAccount": "564332356444-compute@developer.gserviceaccount.com", "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime", "nodeConfig": { "minNodeCount": 2, "maxNodeCount": 50 } }, ....
En la salida de ejemplo, para el proyecto de Google Cloud
connectors-test
, el ID del proyecto del directorio de servicios esabcdefghijk-tp
.
-
- Crea una subred para NAT de PSC. Con el siguiente comando se crea una subred con el nombre
Crear una vinculación de endpoint para consumir la vinculación de servicio de PSC
Vinculación de endpoint como dirección IPPara obtener instrucciones sobre cómo crear un adjunto de endpoint como dirección IP, consulta Crear un adjunto de endpoint como dirección IP.
Endpoint adjunto como nombre de hostEn algunos casos, como los back-ends con TLS habilitado, el destino requiere que uses nombres de host en lugar de IPs privadas para realizar la validación de TLS. En los casos en los que se utilice un DNS privado en lugar de una dirección IP para el host de destino, además de crear una conexión de endpoint como dirección IP, también debes configurar zonas gestionadas. Para obtener instrucciones sobre cómo crear un adjunto de endpoint como nombre de host, consulta Crear un adjunto de endpoint como nombre de host.
Más adelante, cuando configures la conexión para usar el endpoint, podrás seleccionar este endpoint.
Configurar una conexión para usar el adjunto de endpoint
Ahora que has creado un adjunto de endpoint, úsalo en tu conexión. Cuando cree una conexión o actualice una que ya tenga, vaya a la sección Destinos, seleccione Endpoint attachment (Endpoint adjunto) como Destination Type (Tipo de destino) y elija el endpoint adjunto que haya creado en la lista Endpoint Attachment (Endpoint adjunto).
Si has creado una zona gestionada, selecciona Dirección de host como Tipo de destino y usa el registro A que has creado al crear la zona gestionada.
Consejos para solucionar problemas
Sigue las directrices que se indican en esta sección para evitar problemas habituales:
- Para verificar que el adjunto de endpoint se ha configurado correctamente y que se ha establecido la conexión PSC, comprueba el estado de la conexión. Para obtener más información, consulta Verificar la conexión de la adjunción de endpoint.
- Para obtener información sobre cómo solucionar problemas con los balanceadores de carga, consulta el artículo Solucionar problemas con los balanceadores de carga de aplicación internos.
- La prueba de conectividad de Google Cloud se puede usar para identificar cualquier deficiencia en la configuración de tu red. Para obtener más información, consulta Crear y ejecutar pruebas de conectividad.