Configurar la conectividad de Vertex AI a otras redes

En este documento se describen las opciones para ampliar el alcance de los servicios de Vertex AI implementados con acceso privado a servicios.

A continuación, se explica brevemente por qué se recomienda implementar los servicios en un punto final de Private Service Connect si se adapta mejor a tus necesidades.

Como los servicios privados acceden a los hosts de los servicios de Vertex AI en una red gestionada que está emparejada con la tuya, asegúrate de conocer el contenido de Emparejamientos de VPC antes de leer el resto de este documento.

De forma predeterminada, la configuración del peering solo permite que la red de Vertex AI emparejada acceda a los endpoints de tus subredes locales. La exportación de rutas personalizadas permite que la red del productor llegue a otras redes a las que tu red tenga rutas estáticas o dinámicas.

Como no se admite el peering transitivo, las conexiones de Vertex AI no pueden acceder a los endpoints de otras redes que estén emparejadas directamente con tu red, aunque la opción "Exportar rutas personalizadas" esté habilitada. En el ejemplo que se muestra en el siguiente diagrama, los paquetes pueden atravesar la conexión de peering 1, pero no la conexión de peering 2.

Con el peering transitivo

Para permitir que Vertex AI acceda a la red de usuario n.º 2, sustituye la conexión de peering n.º 2 por la VPN n.º 2, como se muestra en el siguiente diagrama.

Sin emparejamiento transitivo

Si habilitas las rutas personalizadas en la conexión de emparejamiento 1, los paquetes IP de la red de Vertex AI podrán llegar a la red de usuario 2.

Para permitir que los paquetes de respuesta de la red de usuario n.º 2 se enruten de vuelta a la red de Vertex AI, la ruta de retorno también debe estar en la tabla de enrutamiento de la red de usuario n.º 2. Las rutas de VPN se intercambian mediante el protocolo de pasarela fronteriza (BGP) en Cloud Routers. Podemos personalizar la configuración de BGP en el usuario 1 para anunciar una ruta al intervalo de red de Vertex AI de 10.1.0.0/16 a su red de usuario emparejada 2.

Ten en cuenta que puedes editar ambos lados de la configuración de BGP de la VPN 1 para permitir que la red on-premise y la red de Vertex AI aprendan rutas entre sí. Como no se intenta transmitir paquetes de ruta directa desde la red de Vertex AI, ni paquetes de respuesta a través de conexiones de peering secuenciales con respecto a ninguna red, ninguno de estos intentos de reenvío se bloquea explícitamente.

Configurar la conectividad de Vertex AI a Internet

Si no se especifica ninguna red al iniciar una carga de trabajo, esta se ejecuta en un proyecto de productor independiente gestionado por Google.

Si se especifica una red, la carga de trabajo se ejecuta en un proyecto de productor que está emparejado con el proyecto de consumidor.

De forma predeterminada, la red de Vertex AI tiene su propia ruta a Internet y la red del productor tiene su propia ruta predeterminada a Internet.

Para forzar que las conexiones salientes de la red del productor se enruten a través de tu red, puedes habilitar Controles de Servicio de VPC para las interconexiones. Ten en cuenta que se trata de una configuración independiente de Controles de Servicio de VPC.

Si habilitas Controles de Servicio de VPC para las conexiones de peering, se producirán los siguientes cambios en la red de Vertex AI:

  • Elimina la ruta de Internet predeterminada.
  • Crea una ruta para el destino 199.36.153.4/30 con el siguiente salto de la pasarela de Internet predeterminada.
  • Crea una zona privada gestionada de Cloud DNS para *.googleapis.com con los registros adecuados para asignar nombres de host a una de esas cuatro direcciones.
  • Autoriza a esa zona para que use la red de VPC servicenetworking.

Una vez que hayas hecho este cambio, puedes exportar la ruta predeterminada de tu red para asegurarte de que las conexiones salientes a Internet se enruten a través de tu red VPC. Este cambio también le permite aplicar las políticas necesarias al tráfico saliente de Vertex AI.

Para consultar el estado de Controles de Servicio de VPC en las conexiones de emparejamiento, ejecuta el siguiente comando:

gcloud services vpc-peerings get-vpc-service-controls \
  --network YOUR_NETWORK

Devolverá enabled: true si la configuración está habilitada y la lista está vacía o {} si está inhabilitada.

Trabajar con Controles de Servicio de VPC

Si se especifica una red para la carga de trabajo y Controles de Servicio de VPC está habilitado, la carga de trabajo se ejecuta en una red de productor que está emparejada con el proyecto de consumidor y que está sujeta a las mismas políticas que la red de consumidor.

Si estas políticas bloquean el tráfico saliente, la carga de trabajo tampoco podrá acceder a Internet. En este caso, debes seguir los pasos que se indican en la sección anterior para forzar que el tráfico saliente de la carga de trabajo pase por una instancia NAT de tu red de VPC.

Configurar la conectividad desde Vertex AI mediante proxies

Otro patrón para controlar la IP de salida de Vertex AI es forzar que las conexiones salientes de las cargas de trabajo pasen por un proxy web que controles. También permite inspeccionar las conexiones salientes para comprobar el cumplimiento.

Sin embargo, al usar un proxy de terceros, el usuario debe gestionar el certificado del proxy para evitar problemas de autenticación. Además, es posible que estos proxies no propongan una lista de conjuntos de cifrado que se cruce con lo que esperan los SDKs y las APIs de Vertex AI.

Google Cloud ahora ofrece un proxy web seguro para facilitar este patrón. Ahora puedes seguir la guía de inicio rápido Implementar una instancia de proxy web seguro y adaptar tus cargas de trabajo para que lo usen en las conexiones salientes. Estas conexiones parecerán proceder de la dirección IP de origen del proxy.

Si la biblioteca de KFP aún no está instalada en la imagen del componente, la pipeline intenta instalarla antes de ejecutar cualquier código en el que hayas especificado un proxy.

Si la canalización depende del proxy para instalar paquetes de Internet, este intento fallará y es posible que veas un error como el siguiente:

Could not find a version that satisfies the requirement kfp==2.7.0

En casos como este, cuando no puedas instalar KFP antes de ejecutar el código, debes usar una imagen con KFP ya instalado.

Puedes añadir KFP a cualquier imagen base y enviarla a tu repositorio.

En el siguiente ejemplo de Dockerfile se añade KFP a la imagen base python:3.8.

FROM python:3.8
RUN pip install kfp==2.7.0

A continuación, puedes configurar el flujo de procesamiento @component para que use esta imagen:

@component(base_image="$PATH_TO_YOUR_REPOSITORY:YOUR_IMAGE")

Una vez que el componente de la canalización esté en funcionamiento, tu código podrá instalar otros paquetes libremente a través del proxy. En el siguiente ejemplo se instala numpy mediante un proxy en https://10.10.10.10:443.

import subprocess
subprocess.call(['pip', 'install', '--proxy', 'https://10.10.10.10:443', 'numpy'])`

Configurar listas de permitidos para el acceso a la API

En el caso de las transacciones entre cargas de trabajo de Vertex AI y APIs de Google, debes permitir el acceso de las cargas de trabajo a los intervalos de IPs que usan las APIs de Google. Para ello, puedes ejecutar la secuencia de comandos proporcionada para devolver las direcciones IP de los dominios predeterminados.

Proporcionar conectividad híbrida con Private Service Connect

La implementación de servicios de Vertex AI con acceso privado a servicios tiene varias limitaciones.

  • Es posible que tengas que reservar grandes grupos de direcciones IP privadas por carga de trabajo y, al mismo tiempo, evitar conflictos con el direccionamiento de tu VPC.
    • Aunque la configuración inicial sea correcta, ejecutar varias cargas de trabajo en paralelo puede provocar un error RANGES_EXHAUSTED.
  • Complejidad de la implementación y la solución de problemas de redes:
    • Como no se admite el emparejamiento transitivo, debes implementar soluciones alternativas complejas para conceder conectividad entre las distintas redes emparejadas con tu red de VPC.
    • El estado de la tabla de enrutamiento en el entorno del productor no es evidente de inmediato. Como no tienes acceso al proyecto de inquilino, a menudo es difícil determinar qué objetivos puede alcanzar realmente una carga de trabajo de Vertex AI sin realizar pruebas exhaustivas.

Otra opción es implementar estos servicios en un punto final de Private Service Connect.

  • El servicio consume una sola dirección IP en tu red de VPC, lo que te permite conservar el espacio de direcciones privadas para tu propio uso.
  • Como la IP del servicio Vertex AI está en tu propia red, es más sencillo crear y ejecutar pruebas de conectividad para evaluar si se puede acceder a ella desde otras partes de tu entorno.