Usa Private Service Connect para acceder a la IA generativa en Vertex AI desde las instalaciones locales


Los hosts locales pueden acceder a la IA generativa en Vertex AI, ya sea a través de la Internet pública o de forma privada a través de una arquitectura de red híbrida que usa Private Service Connect (PSC) a través de Cloud VPN o Cloud Interconnect. Ambas opciones ofrecen encriptación SSL/TLS. Sin embargo, la opción privada ofrece un rendimiento mucho mejor y, por lo tanto, se recomienda para aplicaciones esenciales.

En este instructivo, usarás una VPN de alta disponibilidad (VPN con alta disponibilidad) para acceder a la IA generativa en Vertex AI de forma pública a través de Cloud NAT y, de forma privada, entre dos redes de nube privada (VPC) que pueden servir como base para la conectividad privada local y de múltiples nubes.

Este instructivo está dirigido a administradores de redes empresariales, investigadores y científicos de datos que estén familiarizados con Vertex AI, VPC, la consola de Google Cloud y Cloud Shell. Contar con conocimientos de IA generativa en Vertex AI es útil, pero no obligatorio.

Diagrama de arquitectura del uso de Private Service Connect para acceder a la IA generativa en Vertex AI.

Objetivos

  • Crear dos redes de VPC, como se muestra en el diagrama anterior:
    • Una (onprem-vpc) representa una red local.
    • La otra (vertex-networking-vpc) es para acceder a la API de REST para la IA generativa en Vertex AI.
  • Implementa puertas de enlace de VPN con alta disponibilidad, túneles de Cloud VPN y Cloud Routers para conectar vertex-networking-vpc y onprem-vpc.
  • Crear un extremo de Private Service Connect (PSC) para reenviar solicitudes a la API de REST de GenAI.
  • Configura una ruta anunciada personalizada de Cloud Router en vertex-networking-vpc para anunciar rutas del extremo de Private Service Connect a onprem-vpc.
  • Crear una instancia de VM de Compute Engine en onprem-vpc para representar una aplicación cliente que envíe solicitudes a la API de REST de GenAI a través de una VPN con alta disponibilidad.

Costos

En este documento, usarás los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Cuando finalices las tareas que se describen en este documento, puedes borrar los recursos que creaste para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.

Antes de comenzar

  1. In the Google Cloud console, go to the project selector page.

    Go to project selector

  2. Select or create a Google Cloud project.

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Si no eres el propietario del proyecto, el propietario del proyecto debe otorgarte el rol de IAM de roles/resourcemanager.projectIamAdmin . Debes tener este rol para otorgar roles y permisos de IAM a ti mismo y a las cuentas de servicio.
  5. Abre Cloud Shell para ejecutar los comandos detallados en este instructivo. Cloud Shell es un entorno de shell interactivo para Google Cloud que te permite administrar proyectos y recursos desde el navegador web.
  6. En Cloud Shell, configura el proyecto actual como el ID del proyecto de Google Cloud y almacénalo en la variable de shell projectid:
      projectid="PROJECT_ID"
      gcloud config set project ${projectid}
    Reemplaza PROJECT_ID por el ID del proyecto. Si es necesario, puedes ubicar el ID del proyecto en la consola de Google Cloud. Para obtener más información, consulta Encuentra el ID del proyecto.
  7. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/compute.instanceAdmin.v1, roles/compute.networkAdmin, roles/compute.securityAdmin, roles/dns.admin, roles/iap.tunnelResourceAccessor, roles/iam.serviceAccountCreator, roles/iam.serviceAccountUser, roles/iam.serviceAccountDeleter, roles/resourcemanager.projectIamAdmin, roles/servicedirectory.editor, roles/servicemanagement.quotaAdmin, roles/aiplatform.user

    gcloud projects add-iam-policy-binding PROJECT_ID --member="USER_IDENTIFIER" --role=ROLE
    • Replace PROJECT_ID with your project ID.
    • Replace USER_IDENTIFIER with the identifier for your user account. For example, user:myemail@example.com.

    • Replace ROLE with each individual role.
  8. Enable the DNS, IAM, Compute Engine, Service Usage, and Vertex AI APIs:

    gcloud services enable dns.googleapis.com iam.googleapis.com compute.googleapis.com serviceusage.googleapis.com aiplatform.googleapis.com

Crea dos redes de VPC: vertex-networking-vpc y onprem-vpc

En esta sección, crearás dos redes de VPC: una para que sea la red principal para acceder a la API de IA generativa de Vertex AI (también conocida como GenAI) y la otra para simular la red local.

Crea las redes de VPC

  1. Crea la red de VPC para acceder a la API de GenAI (vertex-networking-vpc):

    gcloud compute networks create vertex-networking-vpc --subnet-mode custom
    
  2. Crea la red de VPC para simular la red local (onprem-vpc):

    gcloud compute networks create onprem-vpc --subnet-mode custom
    
  3. En la red onprem-vpc, crea una subred llamada onprem-vpc-subnet1, con un rango IPv4 principal de 172.16.10.0/24:

    gcloud compute networks subnets create onprem-vpc-subnet1 \
       --range 172.16.10.0/24 \
       --network onprem-vpc \
       --region us-central1
    
  4. En la consola de Google Cloud, ve a la pestaña Redes en el proyecto actual en la página Red de VPC.

    Ir a Red de VPC

  5. En la lista de redes de VPC, verifica que se hayan creado las dos redes: vertex-networking-vpc y onprem-vpc.

  6. En la página Red de VPC, haz clic en la pestaña Subredes del proyecto actual.

  7. En la lista de subredes de VPC, verifica que la subred onprem-vpc-subnet1 se haya creado en la red onprem-vpc.

Configura la conectividad híbrida

En esta sección, crearás dos puertas de enlace de VPN con alta disponibilidad que están conectadas entre sí. Una reside en la red de VPC vertex-networking-vpc. La otra se encuentra en la red de VPC onprem-vpc. Cada puerta de enlace contiene un Cloud Router y un par de túneles VPN.

Crea las puertas de enlace de VPN con alta disponibilidad

  1. En Cloud Shell, crea la puerta de enlace de VPN con alta disponibilidad para la red de VPC vertex-networking-vpc:

    gcloud compute vpn-gateways create vertex-networking-vpn-gw1 \
       --network vertex-networking-vpc \
       --region us-central1
    
  2. Crea la puerta de enlace de VPN con alta disponibilidad para la red de VPC onprem-vpc:

    gcloud compute vpn-gateways create onprem-vpn-gw1 \
       --network onprem-vpc \
       --region us-central1
    
  3. En la consola de Google Cloud, ve a la pestaña Puertas de enlace de CloudVPN en la página VPN.

    Ir a VPN

  4. En la lista de puertas de enlace de VPN, verifica que se hayan creado las dos puertas de enlace (vertex-networking-vpn-gw1 y onprem-vpn-gw1) y que cada una tenga dos direcciones IP.

Crea Cloud Routers

  1. En Cloud Shell, crea un Cloud Router para la red de VPC vertex-networking-vpc:

    gcloud compute routers create vertex-networking-vpc-router1 \
       --region us-central1\
       --network vertex-networking-vpc \
       --asn 65001
    
  2. Crea un Cloud Router para la red de VPC onprem-vpc:

    gcloud compute routers create onprem-vpc-router1 \
       --region us-central1\
       --network onprem-vpc\
       --asn 65002
    

Agrega una puerta de enlace de Cloud NAT a la red de VPC onprem-vpc

En este paso, agregarás una puerta de enlace de Cloud NAT al Cloud Router para la red de VPC onprem-vpc. Una puerta de enlace de Cloud NAT proporciona conectividad saliente para las instancias de máquina virtual (VM) de Compute Engine que no tienen direcciones IP externas.

  1. En Cloud Shell, agrega una puerta de enlace de Cloud NAT al Cloud Router onprem-vpc-router1:

    gcloud compute routers nats create us-central-cloudnat-onprem \
       --router=onprem-vpc-router1 \
       --auto-allocate-nat-external-ips \
       --nat-all-subnet-ip-ranges \
       --region us-central1
    
  2. En la consola de Google Cloud, ve a la página Cloud Routers.

    Ir a Cloud Routers

  3. En la lista de Cloud Router, verifica que se hayan creado vertex-networking-vpc-router1 y onprem-vpc-router1. Es posible que debas actualizar la pestaña del navegador de la consola de Google Cloud para ver los valores nuevos.

  4. En la lista de Cloud Router, haz clic en onprem-vpc-router1.

  5. En la página Detalles del router, verifica que se haya creado la puerta de enlace de Cloud NAT us-central-cloudnat-onprem.

Crea túneles VPN

  1. En la red vertex-networking-vpc, crea un túnel VPN llamado vertex-networking-vpc-tunnel0:

    gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel0 \
       --peer-gcp-gateway onprem-vpn-gw1 \
       --region us-central1 \
       --ike-version 2 \
       --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
       --router vertex-networking-vpc-router1 \
       --vpn-gateway vertex-networking-vpn-gw1 \
       --interface 0
    
  2. En la red vertex-networking-vpc, crea un túnel VPN llamado vertex-networking-vpc-tunnel1:

    gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel1 \
       --peer-gcp-gateway onprem-vpn-gw1 \
       --region us-central1 \
       --ike-version 2 \
       --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
       --router vertex-networking-vpc-router1 \
       --vpn-gateway vertex-networking-vpn-gw1 \
       --interface 1
    
  3. En la red onprem-vpc, crea un túnel VPN llamado onprem-vpc-tunnel0:

    gcloud compute vpn-tunnels create onprem-vpc-tunnel0 \
       --peer-gcp-gateway vertex-networking-vpn-gw1 \
       --region us-central1\
       --ike-version 2 \
       --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
       --router onprem-vpc-router1 \
       --vpn-gateway onprem-vpn-gw1 \
       --interface 0
    
  4. En la red onprem-vpc, crea un túnel VPN llamado onprem-vpc-tunnel1:

    gcloud compute vpn-tunnels create onprem-vpc-tunnel1 \
       --peer-gcp-gateway vertex-networking-vpn-gw1 \
       --region us-central1\
       --ike-version 2 \
       --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
       --router onprem-vpc-router1 \
       --vpn-gateway onprem-vpn-gw1 \
       --interface 1
    
  5. En la consola de Google Cloud, ve a la página VPN.

    Ir a VPN

  6. En la lista de túneles VPN, verifica que se hayan creado los cuatro túneles VPN.

Establece sesiones de BGP

Cloud Router usa el protocolo de puerta de enlace fronteriza (BGP) para intercambiar rutas entre tu red de VPC (en este caso, vertex-networking-vpc) y tu red local (representada por onprem-vpc). En Cloud Router, configura una interfaz y un par de BGP para tu router local. La interfaz y la configuración de par de BGP juntas forman una sesión de BGP. En esta sección, crearás dos sesiones de BGP para vertex-networking-vpc y dos para onprem-vpc.

Una vez que hayas configurado las interfaces y los pares BGP entre tus routers, comenzarán automáticamente a intercambiar rutas.

Establece sesiones de BGP para vertex-networking-vpc

  1. En Cloud Shell, en la red vertex-networking-vpc, crea una interfaz de BGP para vertex-networking-vpc-tunnel0:

    gcloud compute routers add-interface vertex-networking-vpc-router1 \
       --interface-name if-tunnel0-to-onprem \
       --ip-address 169.254.0.1 \
       --mask-length 30 \
       --vpn-tunnel vertex-networking-vpc-tunnel0 \
       --region us-central1
    
  2. En la red vertex-networking-vpc, crea un par de BGP para bgp-onprem-tunnel0:

    gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \
       --peer-name bgp-onprem-tunnel0 \
       --interface if-tunnel0-to-onprem \
       --peer-ip-address 169.254.0.2 \
       --peer-asn 65002 \
       --region us-central1
    
  3. En la red vertex-networking-vpc, crea una interfaz de BGP para vertex-networking-vpc-tunnel1:

    gcloud compute routers add-interface vertex-networking-vpc-router1 \
       --interface-name if-tunnel1-to-onprem \
       --ip-address 169.254.1.1 \
       --mask-length 30 \
       --vpn-tunnel vertex-networking-vpc-tunnel1 \
       --region us-central1
    
  4. En la red vertex-networking-vpc, crea un par de BGP para bgp-onprem-tunnel1:

    gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \
       --peer-name bgp-onprem-tunnel1 \
       --interface if-tunnel1-to-onprem \
       --peer-ip-address 169.254.1.2 \
       --peer-asn 65002 \
       --region us-central1
    

Establece sesiones de BGP para onprem-vpc

  1. En la red onprem-vpc, crea una interfaz de BGP para onprem-vpc-tunnel0:

    gcloud compute routers add-interface onprem-vpc-router1 \
       --interface-name if-tunnel0-to-vertex-networking-vpc \
       --ip-address 169.254.0.2 \
       --mask-length 30 \
       --vpn-tunnel onprem-vpc-tunnel0 \
       --region us-central1
    
  2. En la red onprem-vpc, crea un par de BGP para bgp-vertex-networking-vpc-tunnel0:

    gcloud compute routers add-bgp-peer onprem-vpc-router1 \
       --peer-name bgp-vertex-networking-vpc-tunnel0 \
       --interface if-tunnel0-to-vertex-networking-vpc \
       --peer-ip-address 169.254.0.1 \
       --peer-asn 65001 \
       --region us-central1
    
  3. En la red onprem-vpc, crea una interfaz de BGP para onprem-vpc-tunnel1:

    gcloud compute routers add-interface onprem-vpc-router1  \
       --interface-name if-tunnel1-to-vertex-networking-vpc \
       --ip-address 169.254.1.2 \
       --mask-length 30 \
       --vpn-tunnel onprem-vpc-tunnel1 \
       --region us-central1
    
  4. En la red onprem-vpc, crea un par de BGP para bgp-vertex-networking-vpc-tunnel1:

    gcloud compute routers add-bgp-peer onprem-vpc-router1 \
       --peer-name bgp-vertex-networking-vpc-tunnel1 \
       --interface if-tunnel1-to-vertex-networking-vpc \
       --peer-ip-address 169.254.1.1 \
       --peer-asn 65001 \
       --region us-central1
    

Valida la creación de sesiones de BGP

  1. En la consola de Google Cloud, ve a la página VPN.

    Ir a VPN

  2. En la lista de túneles VPN, verifica que el valor en la columna Estado de la sesión de BGP para cada uno de los túneles haya cambiado de Configura la sesión de BGP a BGP establecida. Es posible que debas actualizar la pestaña del navegador de la consola de Google Cloud para ver los valores nuevos.

Crea el extremo de Private Service Connect (PSC)

En esta sección, crearás un extremo de Private Service Connect (PSC) para las APIs de Google que las instancias de VM en la red onprem-vpc usarán para acceder a la API de GenAI desde tu red onprem-vpc.

Un extremo de Private Service Connect (PSC) es una dirección IP interna en la red onprem-vpc a la que pueden acceder directamente los clientes de esa red. Este extremo se crea a través de la implementación de una regla de reenvío que dirige el tráfico de red que coincide con la dirección IP del extremo de PSC en un paquete de APIs de Google: en particular, el paquete all-apis.

La dirección IP del extremo de PSC (192.168.0.1) se anunciará desde el Cloud Router vertex-networking-vpc-router como una ruta anunciada personalizada a la red onprem-vpc en un paso posterior.

  1. Reserva una dirección IP interna global para asignar al extremo:

    gcloud compute addresses create psc-googleapi-ip \
       --global \
       --purpose=PRIVATE_SERVICE_CONNECT \
       --addresses=192.168.0.1 \
       --network=vertex-networking-vpc
    
  2. Crea el extremo, junto con una regla de reenvío que conecte el extremo a los servicios y las APIs de Google:

    gcloud compute forwarding-rules create pscvertex \
       --global \
       --network=vertex-networking-vpc\
       --address=psc-googleapi-ip \
       --target-google-apis-bundle=all-apis
    
  3. Enumera los extremos configurados de PSC y verifica que se haya creado el extremo pscvertex:

    gcloud compute forwarding-rules list  \
       --filter target="(all-apis OR vpc-sc)" --global
    
  4. Obtén los detalles del extremo de PSC configurado y verifica que la dirección IP sea 192.168.0.1:

    gcloud compute forwarding-rules describe \
       pscvertex --global
    

Crea anuncios de ruta personalizados para vertex-networking-vpc

En esta sección, crearás una ruta anunciada personalizada para vertex-networking-vpc-router1 (el Cloud Router de vertex-networking-vpc) para anunciar la dirección IP del extremo de PSC a la red onprem-vpc.

  1. En la consola de Google Cloud, ve a la página Cloud Routers.

    Ir a Cloud Routers

  2. En la lista de Cloud Router, haz clic en vertex-networking-vpc-router1.

  3. En la página de detalles del router, haz clic en Editar.

  4. En la sección Rutas anunciadas, en Rutas, selecciona Crear rutas personalizadas.

  5. Selecciona la casilla de verificación Anunciar todas las subredes visibles para Cloud Router. Esto hará que continúe el anuncio de las subredes disponibles en el Cloud Router. Habilitar esta opción imita el comportamiento de Cloud Router en el modo de anuncio predeterminado.

  6. Haz clic en Agregar una ruta personalizada.

  7. En Fuente, selecciona Rango de IP personalizado.

  8. En Rango de direcciones IP, ingresa la siguiente dirección IP:

    192.168.0.1
    
  9. En Descripción, ingresa el siguiente texto:

    Custom route to advertise Private Service Connect endpoint IP address
    
  10. Haz clic en Listo y, luego, en Guardar.

Valida que onprem-vpc haya aprendido las rutas anunciadas

  1. En la consola de Google Cloud, ve a la página Rutas.

    Ir a Rutas

  2. En la pestaña Effective routes, haz lo siguiente:

    1. En Red, elige onprem-vpc.
    2. En Región, elige us-central1 (Iowa).
    3. Haz clic en Ver.
    4. En la lista de rutas, verifica que haya entradas cuyos nombres comiencen con onprem-vpc-router1-bgp-vertex-networking-vpc-tunnel0 y onprem-vpc-router1-bgp-vfertex-networking-vpc-tunnel1 y que ambos tengan el rango de IP de destino de192.168.0.1/32. (192.168.0.1 es la dirección IP del extremo de PSC).

      Si estas entradas no aparecen de inmediato, espera unos minutos y, luego, actualiza la pestaña del navegador de la consola de Google Cloud.

Configura una instancia de VM en la red local

En esta sección, crearás una instancia de VM de Compute Engine en la red de VPC onprem-vpc. Esta instancia de VM simula un cliente local que se conecta al extremo de PSC y accede a la API de GenAI.

Crea una cuenta de servicio administrada por el usuario.

En este instructivo, crearás una cuenta de servicio administrada por el usuario según las prácticas recomendadas de IAM y Compute Engine.

  1. En Cloud Shell, ejecuta los siguientes comandos y reemplaza PROJECT_ID por el ID del proyecto:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  2. Cree la cuenta de servicio:

    gcloud iam service-accounts create user-managed-sa
    
  3. Asigna el rol de IAM de usuario de Vertex AI (roles/aiplatform.user) a la cuenta de servicio:

    gcloud projects add-iam-policy-binding $projectid \
       --member="serviceAccount:user-managed-sa@$projectid.iam.gserviceaccount.com" \
       --role="roles/aiplatform.user"
    

Crea la instancia de VM on-prem-client

En este paso, crearás la instancia de VM, que usa la dirección IP de Private Service Connect (192.168.0.1) para acceder a las APIs de Google a través de VPN con alta disponibilidad.

Para permitir que Identity-Aware Proxy (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 que deseas que sean accesibles a través de IAP. (En este caso, solo hay on-prem-client).
  • Permite el tráfico de TCP a través del puerto 22 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.
  1. Crea la instancia de VM on-prem-client. Con el siguiente comando, también se instalan los paquetes tcpdump y dnsutils, que contienen las utilidades tcpdump y dig que usarás más adelante para validar tus solicitudes a la API:

    gcloud compute instances create on-prem-client \
       --zone=us-central1-a \
       --image-family=debian-11 \
       --image-project=debian-cloud \
       --subnet=onprem-vpc-subnet1 \
       --scopes=https://www.googleapis.com/auth/cloud-platform \
       --no-address \
       --shielded-secure-boot \
       --service-account=user-managed-sa@$projectid.iam.gserviceaccount.com \
       --metadata startup-script="#! /bin/bash
          sudo apt-get update
          sudo apt-get install tcpdump dnsutils -y"
    
  2. Crea una regla de firewall de IAP llamada ssh-iap-on-prem-vpc:

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

Valida el acceso a Internet pública para la IA generativa en Vertex AI

En esta sección, debes acceder a la instancia de VM on-prem-client con Identity-Aware Proxy y, luego, validar la conectividad pública a las APIs de Vertex AI (incluida GenAI); para ello, ejecuta el comando dig en el dominio público de Vertex AI (us-central1-aiplatform.googleapis.com).

  1. En Cloud Shell (Tab One), ejecuta los siguientes comandos y reemplaza PROJECT_ID por el ID del proyecto:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  2. Accede a la instancia de VM on-prem-client con IAP:

    gcloud compute ssh on-prem-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
    
  3. Ejecuta el comando dig:

    dig us-central1-aiplatform.googleapis.com
    

    Deberías ver un resultado de dig similar al siguiente, en el que las direcciones IP en la sección de respuesta son direcciones IP públicas:

    ; <<>> DiG 9.16.44-Debian <<>> us-central1.aiplatfom.googleapis.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42506
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 512
    ;; QUESTION SECTION:
    ;us-central1.aiplatfom.googleapis.com. IN A
    
    ;; ANSWER SECTION:
    us-central1.aiplatfom.googleapis.com. 300 IN A  173.194.192.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.152.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  172.217.219.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.146.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.147.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.125.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.136.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.148.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.200.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.234.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.251.171.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  108.177.112.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.128.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.251.6.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  172.217.212.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  74.125.124.95
    
    ;; Query time: 8 msec
    ;; SERVER: 169.254.169.254#53(169.254.169.254)
    ;; WHEN: Wed Sep 27 04:10:16 UTC 2023
    ;; MSG SIZE  rcvd: 321
    

Configura y valida el acceso privado a la IA generativa en Vertex AI

En esta sección, debes configurar el acceso privado a la IA generativa en Vertex AI para que, cuando envíes solicitudes al extremo de servicio público (us-central1-aiplatform.googleapis.com), se redireccionen a tu extremo de PSC. El extremo de PSC, a su vez, reenvía la solicitud

Actualiza el archivo /etc/hosts para que apunte al extremo de PSC

En este paso, agregarás una línea al archivo /etc/hosts que hace que las solicitudes enviadas al extremo del servicio público (us-central1-aiplatform.googleapis.com) se redireccionen al extremo de PSC (192.168.0.1).

  1. En la instancia de VM on-prem-client (pestaña uno), usa un editor de texto, como vim o nano para abrir el archivo /etc/hosts:

    sudo vim /etc/hosts
    
  2. Agrega la siguiente línea al archivo:

    192.168.0.1 us-central1-aiplatform.googleapis.com
    

    Esta línea asigna la dirección IP del extremo de PSC (192.168.0.1) al nombre de dominio completamente calificado para la API de Google de Vertex AI (us-central1-aiplatform.googleapis.com).

    El archivo editado debería verse de la siguiente manera:

    127.0.0.1       localhost
    ::1             localhost ip6-localhost ip6-loopback
    ff02::1         ip6-allnodes
    ff02::2         ip6-allrouters
    
    192.168.0.1 us-central1-aiplatform.googleapis.com  # Added by you
    172.16.10.6 on-prem-client.us-central1-a.c.vertex-genai-400103.internal on-prem-client  # Added by Google
    169.254.169.254 metadata.google.internal  # Added by Google
    
  3. Guarda el archivo de la siguiente manera:

    • Si usas vim, presiona la tecla Esc y, a continuación, escribe :wq para guardar el archivo y salir.
    • Si usas nano, escribe Control+O y presiona Enter para guardar el archivo y, luego, escribe Control+X para salir.
  4. Haz ping en el extremo de Vertex AI de la siguiente manera:

    ping us-central1-aiplatform.googleapis.com
    

    El comando ping debería devolver el siguiente resultado. 192.168.0.1 es la dirección IP del extremo de PSC:

    PING us-central1-aiplatform.googleapis.com (192.168.0.1) 56(84) bytes of data.
    
  5. Escribe Control+C para salir de ping.

  6. Ejecuta el siguiente comando tcpdump para validar la resolución de DNS y la ruta de acceso de los datos IP cuando envíes una solicitud de predicción en línea al extremo:

     sudo tcpdump -i any port 53 -n or host 192.168.0.1
    

Crea la solicitud privada

En este paso, crearás un archivo de texto llamado request.json que contenga la carga útil para una solicitud curl de muestra que envías a la API de REST de GenAI. Para obtener más información sobre las solicitudes de muestra, consulta Solicitud de ejemplo.

  1. Con el comando tcpdump en ejecución en la pestaña uno, abre una sesión nueva de Cloud Shell (pestaña dos); para ello, haz clic en abrir una pestaña nueva en Cloud Shell.

  2. En la sesión nueva de Cloud Shell (pestaña dos), ejecuta los siguientes comandos y reemplaza PROJECT_ID por el ID del proyecto:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  3. Accede a la instancia de VM on-prem-client con IAP:

    gcloud compute ssh on-prem-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
    
  4. Ejecuta los siguientes comandos y reemplaza PROJECT_ID por el ID del proyecto:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  5. Usa un editor de texto, como vim o nano, para crear un archivo nuevo llamado request.json que contenga el siguiente texto:

    {
       "instances": [
          { "prompt": "Give me ten interview questions for the role of program manager."}
       ],
       "parameters": {
          "temperature": 0.2,
          "maxOutputTokens": 256,
          "topK": 40,
          "topP": 0.95
       }
    }
    
  6. Ejecuta el siguiente comando para enviar una solicitud al extremo de PSC, que reenvía la solicitud a la API de GenAI. Cuando el extremo recibe la respuesta, la reenvía a la VM on-prem-client:

    curl -X POST \
       -H "Authorization: Bearer $(gcloud auth print-access-token)" \
       -H "Content-Type: application/json; charset=utf-8" \
       -d @request.json \
       "https://us-central1-aiplatform.googleapis.com/v1/projects/$projectid/locations/us-central1/publishers/google/models/text-bison:predict"
    

    Deberías ver una respuesta similar al siguiente ejemplo:

    {
       "predictions": [
          {
          "content": " 1. **What is your experience in managing programs?**\n2. **What are your strengths and weaknesses as a program manager?**\n3. **What is your approach to managing a program?**\n4. **How do you handle risks and challenges in a program?**\n5. **How do you communicate with stakeholders in a program?**\n6. **How do you measure the success of a program?**\n7. **What is your experience in working with cross-functional teams?**\n8. **What is your experience in managing budgets and resources?**\n9. **What is your experience in managing change in a program?**\n10. **What are your career goals as a program manager?**",
          "citationMetadata": {
             "citations": []
          },
          "safetyAttributes": {
             "categories": [
             "Finance",
             "Health"
             ],
             "blocked": false,
             "scores": [
                0.6,
                0.1
             ]
          }
          }
       ],
       "metadata": {
          "tokenMetadata": {
             "outputTokenCount": {
                "totalBillableCharacters": 505,
                "totalTokens": 153
             },
             "inputTokenCount": {
                "totalBillableCharacters": 54,
                "totalTokens": 12
             }
          }
       }
    }
    
  7. En la pestaña Uno, verifica que la dirección IP del extremo de PSC (192.168.0.1) se haya usado para acceder a las APIs de Vertex AI desde la instancia de VM de on-prem-client (subred 172.16.10.0/28).

    En la terminal tcpdump en la pestaña uno de Cloud Shell, puedes ver que no es necesaria una búsqueda de DNS a us-central1-aiplatform.googleapis.com, ya que la línea que agregaste al archivo /etc/hosts tiene prioridad y se usa la dirección IP del extremo de PSC (192.168.0.1) en la ruta de datos.

    Deberías ver un resultado tcpdump similar al siguiente:

    23:48:49.938797 ens4  Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [P.], seq 2054:2093, ack 6264, win 501, options [nop,nop,TS val 2943864305 ecr 2340789954], length 39
    23:48:49.938947 ens4  Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [P.], seq 2093:2117, ack 6264, win 501, options [nop,nop,TS val 2943864305 ecr 2340789954], length 24
    23:48:49.939839 ens4  Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [F.], seq 2117, ack 6264, win 501, options [nop,nop,TS val 2943864306 ecr 2340789954], length 0
    23:48:49.940292 ens4  In  IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [.], ack 2117, win 272, options [nop,nop,TS val 2340789958 ecr 2943864305], length 0
    23:48:49.940437 ens4  In  IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [F.], seq 6264, ack 2117, win 272, options [nop,nop,TS val 2340789958 ecr 2943864305], length 0
    23:48:49.940442 ens4  Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [.], ack 6265, win 501, options [nop,nop,TS val 2943864307 ecr 2340789958], length 0
    23:48:49.941193 ens4  In  IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [.], ack 2118, win 272, options [nop,nop,TS val 2340789959 ecr 2943864306], length 0
    

Limpia

Para evitar que se apliquen cargos a su cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.

Para borrar los recursos individuales del proyecto, puedes ejecutar los siguientes comandos en Cloud Shell:

   projectid=PROJECT_ID
   gcloud config set project ${projectid}
   gcloud compute firewall-rules delete ssh-iap-on-prem-vpc --quiet
   gcloud compute instances delete on-prem-client --zone=us-central1-a --quiet
   gcloud iam service-accounts delete user-managed-sa@$projectid.iam.gserviceaccount.com --quiet
   gcloud compute forwarding-rules delete pscvertex --global --quiet
   gcloud compute addresses delete psc-googleapi-ip --global --quiet
   gcloud compute vpn-tunnels delete vertex-networking-vpc-tunnel0 vertex-networking-vpc-tunnel1 onprem-vpc-tunnel0 onprem-vpc-tunnel1 --region=us-central1 --quiet
   gcloud compute routers nats delete us-central-cloudnat-onprem --router=onprem-vpc-router1 --region=us-central1 --quiet
   gcloud compute routers delete vertex-networking-vpc-router1 onprem-vpc-router1 --region=us-central1 --quiet
   gcloud compute vpn-gateways delete vertex-networking-vpn-gw1 onprem-vpn-gw1 --region=us-central1 --quiet
   gcloud compute networks subnets delete onprem-vpc-subnet1 --region=us-central1 --quiet
   gcloud compute networks delete onprem-vpc --quiet
   gcloud compute networks delete vertex-networking-vpc --quiet

¿Qué sigue?