Usar Private Service Connect para acceder a la IA generativa en Vertex AI desde un entorno local


Los hosts on-premise pueden acceder a la IA generativa en Vertex AI a través de Internet público o de forma privada mediante una arquitectura de red híbrida que utilice Private Service Connect (PSC) a través de Cloud VPN o Cloud Interconnect. Ambas opciones ofrecen cifrado SSL/TLS. Sin embargo, la opción privada ofrece un rendimiento mucho mejor y, por lo tanto, se recomienda para aplicaciones críticas.

En este tutorial, usarás VPN de alta disponibilidad (HA VPN) 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 virtual (VPC) que pueden servir de base para la conectividad privada multicloud y on-premise.

Este tutorial está dirigido a administradores de redes empresariales, científicos de datos e investigadores que estén familiarizados con Vertex AI, VPC, la consola de Google Cloud y Cloud Shell. Tener conocimientos sobre 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

  • Crea dos redes de VPC, tal 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 REST de IA generativa en Vertex AI.
  • Implementa pasarelas de VPN de alta disponibilidad, túneles de Cloud VPN y Cloud Routers para conectar vertex-networking-vpc y onprem-vpc.
  • Crea un endpoint de Private Service Connect (PSC) para reenviar solicitudes a la API REST de GenAI.
  • Configura una ruta anunciada personalizada de Cloud Router en vertex-networking-vpc para anunciar rutas del punto final de Private Service Connect a onprem-vpc.
  • Crea una instancia de VM de Compute Engine en onprem-vpc para representar una aplicación cliente que envía solicitudes a la API REST de GenAI a través de una VPN de alta disponibilidad.

Costes

En este documento, se utilizan los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costes basada en el uso previsto, utiliza la calculadora de precios.

Los usuarios nuevos Google Cloud pueden disfrutar de una prueba gratuita.

Cuando termines las tareas que se describen en este documento, puedes evitar que se te siga facturando eliminando los recursos que has creado. Para obtener más información, consulta la sección Limpiar.

Antes de empezar

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

    Go to project selector

  2. Select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
  3. Verify that billing is enabled for your Google Cloud project.

  4. Si no eres el propietario del proyecto, este debe concederte el rol de gestión de identidades y accesos roles/resourcemanager.projectIamAdmin . Necesitas este rol para conceder roles y permisos de gestión de identidades y accesos a ti mismo y a las cuentas de servicio.
  5. Abre Cloud Shell para ejecutar los comandos que se indican en este tutorial. Cloud Shell es un entorno de shell interactivo para Google Cloud que te permite gestionar tus proyectos y recursos desde el navegador web.
  6. En Cloud Shell, define el proyecto actual como tu Google Cloud ID de proyecto y almacena el mismo ID de proyecto en la variable de shell projectid:
      projectid="PROJECT_ID"
      gcloud config set project ${projectid}
    Sustituye PROJECT_ID por el ID de tu proyecto. Si es necesario, puedes encontrar el ID de tu proyecto en la Google Cloud consola. Para obtener más información, consulta Buscar el ID de un proyecto.
  7. Make sure that you have the following role or roles on the project: 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

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

    4. For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      Ir a IAM
    2. Selecciona el proyecto.
    3. Haz clic en Conceder acceso.
    4. En el campo Nuevos principales, introduce tu identificador de usuario. Normalmente, se trata de la dirección de correo de una cuenta de Google.

    5. En la lista Selecciona un rol, elige un rol.
    6. Para conceder más roles, haz clic en Añadir otro rol y añade cada rol adicional.
    7. Haz clic en Guardar.

  8. Enable the DNS, IAM, Compute Engine, Service Usage, and Vertex AI APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

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

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

Crear las redes de VPC

  1. Crea la red de VPC para acceder a la API 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 intervalo 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, ve a la pestaña Redes del proyecto actual de la página Red de VPC. Google Cloud

    Ir a la red de VPC

  5. En la lista de redes de VPC, comprueba 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, comprueba que la subred onprem-vpc-subnet1 se ha creado en la red onprem-vpc.

Configurar la conectividad híbrida

En esta sección, creará dos pasarelas de VPN de alta disponibilidad que estarán conectadas entre sí. Una de ellas se encuentra en la red de vertex-networking-vpcVPC. La otra se encuentra en la red de VPC onprem-vpc. Cada pasarela contiene un Cloud Router y un par de túneles VPN.

Crear las pasarelas de VPN de alta disponibilidad

  1. En Cloud Shell, crea la pasarela de VPN de 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 pasarela de VPN de alta disponibilidad para la red VPC onprem-vpc:

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

    Ir a VPN

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

Crear routers de Cloud Router

  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
    

Añadir una pasarela de Cloud NAT a la red de VPC onprem-vpc

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

  1. En Cloud Shell, añade una pasarela de Cloud NAT al onprem-vpc-router1Cloud Router:

    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 Google Cloud consola, ve a la página Cloud Routers.

    Ir a Cloud Routers

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

  4. En la lista de Cloud Routers, haga clic en onprem-vpc-router1.

  5. En la página Detalles del router, comprueba que se ha creado la pasarela us-central-cloudnat-onprem Cloud NAT.

Crear túneles de 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 Google Cloud consola, ve a la página VPN.

    Ir a VPN

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

Establecer sesiones de BGP

Cloud Router usa el protocolo de pasarela fronteriza (BGP) para intercambiar rutas entre tu red de VPC (en este caso, vertex-networking-vpc) y tu red on‐premise (representada por onprem-vpc). En Cloud Router, configura una interfaz y un par BGP para tu router on‐premise. La interfaz y la configuración del par de BGP 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 peers de BGP entre tus routers, empezarán a intercambiar rutas automáticamente.

Establecer sesiones de BGP para vertex-networking-vpc

  1. En Cloud Shell, en la red vertex-networking-vpc, crea una interfaz 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 peer 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 peer 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
    

Establecer 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 peer 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 peer 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
    

Validar la creación de la sesión de BGP

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

    Ir a VPN

  2. En la lista de túneles VPN, comprueba que el valor de la columna Estado de la sesión de BGP de cada túnel haya cambiado de Configurar sesión de BGP a BGP establecido. Puede que tengas que actualizar la pestaña del navegador de la consola Google Cloud para ver los nuevos valores.

Crea el endpoint de Private Service Connect (PSC)

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

Un punto final de Private Service Connect (PSC) es una dirección IP interna de la red onprem-vpc a la que pueden acceder directamente los clientes de esa red. Este endpoint se crea implementando una regla de reenvío que dirige el tráfico de red que coincide con la dirección IP del endpoint de PSC a un paquete de APIs de Google, concretamente, el paquete all-apis.

La dirección IP del endpoint de PSC (192.168.0.1) se anunciará desde el router de 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 asignarla al endpoint:

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

    gcloud compute forwarding-rules create pscvertex \
       --global \
       --network=vertex-networking-vpc\
       --address=psc-googleapi-ip \
       --target-google-apis-bundle=all-apis
    
  3. Lista los endpoints de PSC configurados y comprueba que se ha creado el endpoint pscvertex:

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

    gcloud compute forwarding-rules describe \
       pscvertex --global
    

Crear anuncios de ruta personalizados para vertex-networking-vpc

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

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

    Ir a Cloud Routers

  2. En la lista de Cloud Routers, haga clic en vertex-networking-vpc-router1.

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

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

  5. Marca la casilla Anunciar todas las subredes que pueda ver el router de Cloud Router para seguir anunciando las subredes disponibles para el router de Cloud Router. Si habilita esta opción, se imitará el comportamiento de Cloud Router en el modo de anuncio predeterminado.

  6. Haz clic en Añadir una ruta personalizada.

  7. En Origen, selecciona Intervalo de IP personalizado.

  8. En Intervalo de direcciones IP, introduce la siguiente dirección IP:

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

    Custom route to advertise Private Service Connect endpoint IP address
    
  10. Haz clic en Hecho y, a continuación, en Guardar.

Validar que onprem-vpc ha aprendido las rutas anunciadas

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

    Ir a Rutas

  2. En la pestaña Rutas eficaces, 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, comprueba que haya entradas cuyos nombres empiecen por onprem-vpc-router1-bgp-vertex-networking-vpc-tunnel0 y onprem-vpc-router1-bgp-vfertex-networking-vpc-tunnel1, y que ambas tengan un intervalo de IPs de destino de 192.168.0.1/32. (192.168.0.1 es la dirección IP del endpoint de PSC).

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

Configurar 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 endpoint de PSC y accede a la API GenAI.

Crear una cuenta de servicio gestionada por el usuario

En este tutorial, crearás una cuenta de servicio gestionada por el usuario siguiendo las prácticas recomendadas de Compute Engine y de IAM.

  1. En Cloud Shell, ejecuta los siguientes comandos y sustituye PROJECT_ID por el ID de tu proyecto:

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

    gcloud iam service-accounts create user-managed-sa
    
  3. Asigna el rol de gestión de identidades y accesos 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"
    

Crear la instancia de VM de 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 la VPN de alta disponibilidad.

Para permitir que Identity-Aware Proxy (IAP) se conecte a tus instancias de VM, crea una regla de cortafuegos que haga lo siguiente:

  • Se aplica a todas las instancias de VM a las que quieras acceder a través de IAP. En este caso, solo hay on-prem-client.
  • Permite el tráfico TCP a través del puerto 22 desde el intervalo de IPs 35.235.240.0/20. Este intervalo contiene todas las direcciones IP que usa IAP para el reenvío de TCP.
  1. Crea la instancia de VM on-prem-client. El siguiente comando también instala los paquetes tcpdump y dnsutils, que contienen las utilidades tcpdump y dig que usarás más adelante para validar tus solicitudes de 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 cortafuegos 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
    

Validar el acceso a Internet público a la IA generativa en Vertex AI

En esta sección, iniciarás sesión en la instancia de VM on-prem-client mediante Identity-Aware Proxy y, a continuación, validarás la conectividad pública a las APIs de Vertex AI (incluida la IA generativa) ejecutando el comando dig en el dominio público de Vertex AI (us-central1-aiplatform.googleapis.com).

  1. En Cloud Shell (pestaña 1), ejecuta los siguientes comandos. Sustituye PROJECT_ID por el ID de tu proyecto:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  2. Inicia sesión en la instancia de VM on-prem-client mediante 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 dig similar al siguiente, donde las direcciones IP de 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
    

Configurar y validar el acceso privado a la IA generativa en Vertex AI

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

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

En este paso, añade una línea al archivo /etc/hosts que hace que las solicitudes enviadas al endpoint del servicio público (us-central1-aiplatform.googleapis.com) se redirijan al endpoint de PSC (192.168.0.1).

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

    sudo vim /etc/hosts
    
  2. Añade la siguiente línea al archivo:

    192.168.0.1 us-central1-aiplatform.googleapis.com
    

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

    El archivo editado debería tener este aspecto:

    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, pulsa la tecla Esc y, a continuación, escribe :wq para guardar el archivo y salir.
    • Si usas nano, escribe Control+O y pulsa Enter para guardar el archivo. A continuación, escribe Control+X para salir.
  4. Haga ping al endpoint 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 endpoint 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 datos de IP cuando envíes una solicitud de predicción online al endpoint:

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

Crear la solicitud privada

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

  1. Mantén el comando tcpdump en la pestaña 1 y abre una nueva sesión de Cloud Shell (pestaña 2) haciendo clic en abrir una pestaña nueva en Cloud Shell.

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

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  3. Inicia sesión en la instancia de VM on-prem-client mediante IAP:

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

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  5. Usa un editor de texto como vim o nano para crear un archivo 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 endpoint de PSC, que reenvía la solicitud a la API GenAI. Cuando el endpoint 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ía ver una respuesta similar a la del 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, comprueba que la dirección IP del endpoint de PSC (192.168.0.1) se haya usado para acceder a las APIs de Vertex AI desde la instancia de VM on-prem-client (subred 172.16.10.0/28).

    En la terminal tcpdump de la pestaña 1 de Cloud Shell, puedes ver que no es necesario buscar el DNS de us-central1-aiplatform.googleapis.com, ya que la línea que has añadido al archivo /etc/hosts tiene prioridad y se usa la dirección IP del endpoint de PSC (192.168.0.1) en la ruta de datos.

    Debería ver un resultado de 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
    

Limpieza

Para evitar que se apliquen cargos en tu Google Cloud cuenta por los recursos utilizados en este tutorial, elimina el proyecto que contiene los recursos o conserva el proyecto y elimina los recursos.

Para eliminar los recursos individuales del proyecto, ejecuta 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

Siguientes pasos