Conectividad de red en una VPC de Google Cloud
En esta página se describe cómo configurar la conectividad privada de Integration Connectors a tu servicio backend, como MySQL, Postgres y SQL Server, alojado en Google Cloud VPC.
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
La conectividad privada con la VPC de Google Cloud puede clasificarse en cualquiera de las siguientes categorías:
- Tanto el servicio de backend como el adjunto de servicio de PSC están en el mismo proyecto de Google Cloud o en la misma VPC.
- Tanto el servicio de backend como la vinculación de servicio de PSC están en proyectos de Google Cloud o VPC diferentes.
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 de la comprobación de estado debe 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.
Conectividad privada a un servicio backend en una VPC de Google Cloud
En esta sección se describe cómo establecer una conectividad privada cuando tanto el servicio backend como el adjunto de servicio de PSC se encuentran en el mismo proyecto de Google Cloud.
En la siguiente imagen se muestra la configuración de la conectividad de red privada de Integration Connectors a un servicio alojado en una VPC de Google Cloud:
Para configurar una conectividad privada con un servicio backend en una VPC de Google Cloud, sigue estos pasos:
- Crea un adjunto de servicio de PSC.
- Crea una vinculación de endpoint para consumir la vinculación de servicio de PSC.
- Configura una conexión para usar el adjunto de endpoint.
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 una exploración para comprobar el estado y permite el tráfico de la exploración.
- Crea la sonda de comprobación del estado.
gcloud compute health-checks create tcp HEALTH_CHECK_NAME --port BACKEND_SERVER_PORT --region=REGION
En este comando, asigna el valor BACKEND_SERVER_PORT a 3306, que es el puerto predeterminado en el que se ejecuta el servidor MySQL.
- Crea una regla de cortafuegos para permitir el tráfico de la sonda.
gcloud compute firewall-rules create VPC_NETWORK-allow-health-check --direction=INGRESS --priority=1000 --network=VPC_NETWORK --allow=tcp:BACKEND_SERVER_PORT --source-ranges=35.191.0.0/16,130.211.0.0/22
- Crea la sonda de comprobación del estado.
- Crea un balanceador de carga interno L4 y permite el tráfico del balanceador de carga.
- Crea un servicio de backend.
gcloud compute backend-services create BACKEND_SERVICE --load-balancing-scheme=internal --protocol=tcp --health-checks=HEALTH_CHECK_NAME --health-checks-region=REGION
- Añade el grupo de instancias al servicio de backend.
gcloud compute backend-services add-backend BACKEND_SERVICE --instance-group=INSTANCE_GROUP_NAME --instance-group-zone=ZONE
- Crea una regla de reenvío.
gcloud compute forwarding-rules create FORWARDING_RULE_NAME --load-balancing-scheme=internal --network=VPC_NETWORK --subnet=SUBNET_NAME_2 --ip-protocol=TCP --ports=BACKEND_SERVER_PORT --backend-service=BACKEND_SERVICE --backend-service-region=REGION
-
Crea una regla de cortafuegos para permitir el tráfico interno del balanceador de carga al grupo de instancias.
gcloud compute firewall-rules create VPC_NETWORK-allow-internal --direction=INGRESS --priority=1000 --network=VPC_NETWORK --action=ALLOW --rules=all --source-ranges=SUBNET_RANGE_2
- Crea un servicio de backend.
- 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
Una vez que hayas creado una vinculación de servicio de PSC, crea una vinculación de endpoint para consumir la vinculación de servicio de PSC. Para obtener más información, consulta Crear un archivo adjunto de endpoint.
Conectividad privada para diferentes proyectos de Google Cloud
En esta sección se describe cómo establecer una conectividad privada cuando el servicio backend y el adjunto de servicio de PSC están en proyectos o VPCs de Google Cloud diferentes.
En la siguiente imagen se muestra la configuración de conectividad de red privada en la que el adjunto de servicio de PSC y el servicio backend se encuentran en proyectos de Google Cloud diferentes:
Para configurar la conectividad privada de diferentes proyectos de Google Cloud, sigue estos pasos:
- Configurar la conectividad privada.
- Crea una vinculación de endpoint para consumir la vinculación de servicio de PSC.
- Configura una conexión para usar el adjunto de endpoint.
Configurar la conectividad privada
Para configurar la conectividad privada, sigue estos pasos:
- Crea un balanceador de carga. Si ya tienes un balanceador de carga, puedes saltarte este paso.
- Crea un NEG de zona. Para obtener más información, consulta Crear un NEG zonal.
- Añade el NEG de zona como backend y crea las siguientes reglas:
- Crea una regla de reenvío.
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=internal --network=VPC_NETWORK --subnet=SUBNET_NAME_2 \ --ip-protocol=TCP --ports=BACKEND_SERVER_PORT --backend-service=BACKEND_SERVICE \ --backend-service-region=REGION
-
Crea una regla de cortafuegos para permitir el tráfico interno del balanceador de carga al grupo de instancias.
gcloud compute firewall-rules create FIREWALL_RULE_NAME_INTERNAL \ --direction=INGRESS --priority=1000 --network=VPC_NETWORK \ --action=ALLOW --rules=all --source-ranges=SUBNET_RANGE_2
- Crea una regla de reenvío.
- 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
Incluir en la lista de permitidos el proyecto de Integration Connectors en una vinculación de servicio
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 es abcdefghijk-tp
.
Después de incluir en la lista de permitidos el proyecto de Integration Connectors en una vinculación de servicio de PSC, crea una vinculación de endpoint para consumir la vinculación de servicio de PSC. Para obtener más información, consulta Crear un archivo adjunto de endpoint.
Crear una vinculación de endpoint
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
Si tienes problemas con la conectividad privada, 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.
- Comprueba que las reglas de cortafuegos tengan la siguiente configuración:
- Se debe permitir que el tráfico de la subred del adjunto de servicio de PSC llegue a tu servicio de backend.
- El balanceador de carga debe poder enviar tráfico a tu servicio de backend.
- Balanceadores de carga de transferencia (ILB TCP/UDP de nivel 4)
Las solicitudes de las IPs de NAT de la vinculación de servicio de PSC deben poder
llegar a tu backend. Estas IPs de NAT se asignan automáticamente del intervalo de subred de NAT de PSC. Por lo tanto, debes permitir todo el intervalo de IPs de la subred de NAT en la que se encuentra tu adjunto de servicio. Para encontrar la subred NAT de PSC,
usa el siguiente comando:
gcloud compute networks subnets list --project=PROJECT_ID --region=REGION --filter="purpose=PRIVATE_SERVICE_CONNECT"
- Balanceadores de carga basados en proxy o HTTP(s) (balanceador de carga interno de proxy de nivel 4 y balanceador de carga interno de nivel 7)
Las solicitudes de un balanceador de carga de proxy proceden de la subred de solo proxy de la
región. Por lo tanto, las reglas de cortafuegos deben configurarse para permitir que las solicitudes de los intervalos de subred de solo proxy lleguen a tu backend. Para encontrar la subred de solo proxy, usa el siguiente comando:
gcloud compute networks subnets list --project=PROJECT_ID --region=REGION --filter="purpose=REGIONAL_MANAGED_PROXY"
- La sonda de comprobación de estado debe poder acceder a tu sistema backend. Las sondas de comprobación de estado de Google Cloud tienen un intervalo de IP fijo (35.191.0.0/16 y 130.211.0.0/22). Por lo tanto, se debe permitir que estas direcciones IP envíen tráfico a tu servidor backend.
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.
- Balanceadores de carga de transferencia (ILB TCP/UDP de nivel 4)
Las solicitudes de las IPs de NAT de la vinculación de servicio de PSC deben poder
llegar a tu backend. Estas IPs de NAT se asignan automáticamente del intervalo de subred de NAT de PSC. Por lo tanto, debes permitir todo el intervalo de IPs de la subred de NAT en la que se encuentra tu adjunto de servicio. Para encontrar la subred NAT de PSC,
usa el siguiente comando:
- 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.