Proxy explícito de PSC del motor de agente

1. Introducción

Una interfaz de Private Service Connect es un recurso que permite que una red de nube privada virtual (VPC) de productor inicie conexiones a varios destinos en una red de VPC de consumidor. Las redes de productores y consumidores pueden estar en diferentes proyectos y organizaciones.

Si un adjunto de red acepta una conexión desde una interfaz de Private Service Connect, Google Cloud asigna a la interfaz una dirección IP de una subred de consumidor que especifica el adjunto de red. Las redes del consumidor y del productor están conectadas y pueden comunicarse mediante direcciones IP internas.

Una conexión entre un adjunto de red y una interfaz de Private Service Connect es similar a la conexión entre un extremo de Private Service Connect y un adjunto de servicio, pero tiene dos diferencias clave:

  • Un adjunto de red permite que una red de productor inicie conexiones a una red de consumidor (salida de servicio administrado), mientras que un extremo permite que una red de consumidor inicie conexiones a una red de productor (entrada de servicio administrado).
  • Una conexión de la interfaz de Private Service Connect es transitiva. Esto significa que una red del productor puede comunicarse con otras redes que están conectadas a la red del consumidor.

Consideraciones sobre la accesibilidad de la interfaz de PSC de Vertex AI

  • PSC-Interface puede enrutar el tráfico a destinos basados en la VPC o en las instalaciones dentro del bloque de direcciones RFC1918.
  • La PSC-Interface que segmenta bloques de direcciones que no son RFC-1918 requiere un proxy explícito implementado en la VPC del consumidor con una dirección RFC-1918. Dentro de la implementación de Vertex AI, el proxy se debe definir junto con un FQDN del extremo de destino.
  • Cuando configuras tu implementación solo con una interfaz de PSC, esta conserva su acceso predeterminado a Internet. Este tráfico de salida sale directamente de la red de usuarios segura y administrada por Google.

Consideraciones sobre la interfaz de PSC de Vertex AI y el VPC-SC

  • Cuando tu proyecto forma parte de un perímetro de Controles del servicio de VPC, el perímetro bloquea el acceso predeterminado a Internet de los arrendatarios administrados por Google para evitar el robo de datos.
  • Para permitir que la implementación acceda a Internet pública en esta situación, debes configurar de forma explícita una ruta de salida segura que enrute el tráfico a través de tu VPC.
  • La forma recomendada de lograr esto es configurar un servidor proxy dentro del perímetro de tu VPC con una dirección RFC1918 y crear una puerta de enlace de Cloud NAT para permitir que la VM proxy acceda a Internet.

Para obtener más información, consulta los siguientes recursos:

Implementa un agente | IA generativa en Vertex AI | Google Cloud

Configura una interfaz de Private Service Connect para los recursos de Vertex AI | Google Cloud

Qué compilarás

En este instructivo, compilarás un Agent Engine integral implementado con una interfaz de Private Service Connect (PSC) para permitir la conectividad a un sitio público (https://api.frankfurter.app/) a través de una VM de proxy implementada en la VPC del consumidor con una dirección RFC1918. La implementación de ejemplo se aplica en un proyecto habilitado para VPC-SC o para administradores que requieren salida a Internet a través de la red de los clientes en lugar de la VPC del arrendatario.

Figura 1

f42f2db921f6d5af.png

Crearás un solo psc-network-attachment en la VPC del consumidor aprovechando el intercambio de tráfico de DNS para resolver la VM proxy de la red del consumidor en el proyecto del inquilino que aloja Agent Engine, lo que generará los siguientes casos de uso:

Implementa Agent Engine y configura una VM de proxy para que actúe como proxy explícito, lo que le permitirá acceder a una URL pública https://api.frankfurter.app

Qué aprenderás

  • Cómo crear un adjunto de red
  • Cómo un productor puede usar un adjunto de red para crear una interfaz de PSC
  • Cómo establecer la comunicación del productor al consumidor con el intercambio de tráfico de DNS
  • Cómo implementar y usar una VM de proxy para la salida a Internet

Requisitos

Proyecto de Google Cloud

Permisos de IAM

2. Antes de comenzar

Actualiza el proyecto para que admita el instructivo

En este instructivo, se usan variables para facilitar la implementación de la configuración de gcloud en Cloud Shell.

Dentro de Cloud Shell, haz lo siguiente:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

Habilitación de la API

Dentro de Cloud Shell, haz lo siguiente:

gcloud services enable "compute.googleapis.com"
gcloud services enable "aiplatform.googleapis.com"
gcloud services enable "dns.googleapis.com"
gcloud services enable "notebooks.googleapis.com"
gcloud services enable "storage.googleapis.com"
gcloud services enable "iap.googleapis.com"

Verifica que las APIs se hayan habilitado correctamente

gcloud services list --enabled

3. Configuración del consumidor

Crea la VPC del consumidor

Esta VPC reside en un proyecto del cliente. Se crearán los siguientes recursos en esta VPC

  • Subred del consumidor
  • Subred de adjunto de red
  • Cloud Router (obligatorio para Cloud NAT)
  • Cloud NAT

Dentro de Cloud Shell, haz lo siguiente:

gcloud compute networks create consumer-vpc --project=$projectid --subnet-mode=custom

Crea las subredes de consumidor

Dentro de Cloud Shell, crea la subred para la VM del proxy:

gcloud compute networks subnets create rfc1918-subnet1 --project=$projectid --range=10.10.10.0/28 --network=consumer-vpc --region=us-central1

Crea la subred del adjunto de red de Private Service Connect

Dentro de Cloud Shell, crea la subred para la vinculación de red de PSC:

gcloud compute networks subnets create intf-subnet --project=$projectid --range=192.168.10.0/28 --network=consumer-vpc --region=us-central1

Configuración de Cloud Router y NAT

En este instructivo, se usa Cloud NAT para proporcionar acceso a Internet a la VM de proxy, que no tiene una dirección IP pública. Cloud NAT permite que las VMs que solo tienen direcciones IP privadas se conecten a Internet, lo que les permite realizar tareas como instalar paquetes de software.

Dentro de Cloud Shell, crea el Cloud Router.

gcloud compute routers create cloud-router-for-nat --network consumer-vpc --region us-central1

Dentro de Cloud Shell, crea la puerta de enlace de NAT con el registro habilitado. Usaremos el registro para validar el acceso a la IP pública de la API de Frankfurter (https://api.frankfurter.app/).

gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-for-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1 --enable-logging --log-filter=ALL

4. Habilitar IAP

Para permitir que IAP se conecte a tus instancias de VM, crea una regla de firewall que cumpla con lo siguiente:

  • Se aplica a todas las instancias de VM a las que deseas acceder mediante IAP.
  • Permite el tráfico de entrada desde el rango de IP 35.235.240.0/20. Este rango contiene todas las direcciones IP que IAP usa para el reenvío de TCP.

Dentro de Cloud Shell, crea la regla de firewall de IAP.

gcloud compute firewall-rules create ssh-iap-consumer \
    --network consumer-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

5. Crea instancias de VM de consumidor

En Cloud Shell, crea la instancia de VM del consumidor, proxy-vm, que actuará como proxy explícito para Agent Engine. Usaremos tinyproxy como la aplicación para el tráfico HTTP de proxy.

gcloud compute instances create proxy-vm \
    --project=$projectid \
    --machine-type=e2-micro \
    --image-family debian-11 \
    --no-address \
    --can-ip-forward \
    --image-project debian-cloud \
    --zone us-central1-a \
    --subnet=rfc1918-subnet1 \
    --shielded-secure-boot \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump
      sudo apt-get install tinyproxy -y
      sudo apt-get install apache2 -y
      sudo service apache2 restart
      echo 'proxy server !!' | tee /var/www/html/index.html
      EOF"

6. Adjunto de red de Private Service Connect

Los adjuntos de red son recursos regionales que representan el lado del consumidor de una interfaz de Private Service Connect. Debes asociar una sola subred con un adjunto de red y el productor asigna IPs a la interfaz de Private Service Connect desde esa subred. La subred debe estar en la misma región que el adjunto de red. Un adjunto de red debe estar en la misma región que el servicio del productor.

Crea el adjunto de red

Dentro de Cloud Shell, crea la conexión de red.

gcloud compute network-attachments create psc-network-attachment \
    --region=us-central1