Utilizzare Private Service Connect per accedere all'IA generativa su Vertex AI da on-premise


Gli host on-premise possono raggiungere l'IA generativa su Vertex AI tramite internet pubblico o in privato tramite un'architettura di rete ibrida che utilizza Private Service Connect (PSC) su Cloud VPN o Cloud Interconnect. Entrambe le opzioni offrono la crittografia SSL/TLS. Tuttavia, l'opzione privata offre prestazioni molto migliori ed è quindi consigliata per le applicazioni critiche.

In questo tutorial utilizzi la VPN ad alta disponibilità (HA VPN) per accedere all'IA generativa su Vertex AI sia pubblicamente, tramite Cloud NAT, sia privatamente, tra due reti Virtual Private Cloud (VPC) che possono servire da base per la connettività privata multi-cloud e on-premise.

Questo tutorial è rivolto ad amministratori di reti aziendali, data scientist e ricercatori che hanno familiarità con Vertex AI, VPC, la console Google Cloud e Cloud Shell. La familiarità con l'IA generativa su Vertex AI è utile, ma non obbligatoria.

Diagramma di architettura che mostra l'utilizzo di Private Service Connect per accedere all'AI generativa su Vertex AI.

Obiettivi

  • Crea due reti VPC, come mostrato nel diagramma precedente:
    • Uno (onprem-vpc) rappresenta una rete on-premise.
    • L'altro (vertex-networking-vpc) serve per accedere all'API REST per l'IA generativa su Vertex AI.
  • Esegui il deployment di gateway VPN ad alta disponibilità, tunnel Cloud VPN e router Cloud per connettere vertex-networking-vpc e onprem-vpc.
  • Crea un endpoint Private Service Connect (PSC) per inoltrare le richieste all'API REST GenAI.
  • Configura una route annunciata personalizzata del router Cloud in vertex-networking-vpc per annunciare le route per l'endpoint Private Service Connect a onprem-vpc.
  • Crea un'istanza VM di Compute Engine in onprem-vpc per rappresentare un'applicazione client che invia richieste all'API REST GenAI tramite VPN ad alta disponibilità.

Costi

In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il Calcolatore prezzi. I nuovi Google Cloud utenti potrebbero avere diritto a una prova gratuita.

Al termine delle attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la sezione Pulizia.

Prima di iniziare

  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. Se non sei il proprietario del progetto, quest'ultimo deve concederti il ruolo IAM roles/resourcemanager.projectIamAdmin . Devi disporre di questo ruolo per concedere a te stesso e agli account di servizio i ruoli e le autorizzazioni IAM.
  5. Apri Cloud Shell per eseguire i comandi elencati in questo tutorial. Cloud Shell è un ambiente shell interattivo per Google Cloud che ti consente di gestire i tuoi progetti e le tue risorse dal browser web.
  6. In Cloud Shell, imposta il progetto corrente sull'ID progetto Google Cloud e memorizza lo stesso ID progetto nella variabile shell projectid:
      projectid="PROJECT_ID"
      gcloud config set project ${projectid}
    Sostituisci PROJECT_ID con l'ID del tuo progetto. Se necessario, puoi trovare l'ID progetto nella console Google Cloud. Per ulteriori informazioni, consulta Trovare l'ID progetto.
  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: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 due reti VPC: vertex-networking-vpc e onprem-vpc

In questa sezione crei due reti VPC: una come rete principale per accedere all'API di IA generativa (nota anche come GenAI) di Vertex AI e l'altra per simulare la rete on-premise.

Crea le reti VPC

  1. Crea la rete VPC per accedere all'API GenAI (vertex-networking-vpc):

    gcloud compute networks create vertex-networking-vpc --subnet-mode custom
    
  2. Crea la rete VPC per simulare la rete on-premise (onprem-vpc):

    gcloud compute networks create onprem-vpc --subnet-mode custom
    
  3. Nella rete onprem-vpc, crea una subnet denominata onprem-vpc-subnet1 con un intervallo IPv4 principale di172.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. Nella console Google Cloud, vai alla scheda Reti nel progetto corrente nella pagina Rete VPC.

    Vai alla rete VPC.

  5. Nell'elenco delle reti VPC, verifica che le due reti siano state create: vertex-networking-vpc e onprem-vpc.

  6. Nella pagina Rete VPC, fai clic sulla scheda Subnet nel progetto corrente.

  7. Nell'elenco delle subnet VPC, verifica che la subnet onprem-vpc-subnet1 sia stata creata nella rete onprem-vpc.

Configura la connettività ibrida

In questa sezione crei due gateway VPN ad alta disponibilità connessi tra loro. Uno si trova nella rete VPCvertex-networking-vpc. L'altra si trova nella rete VPConprem-vpc. Ogni gateway contiene un router Cloud e una coppia di tunnel VPN.

Crea i gateway VPN ad alta disponibilità

  1. In Cloud Shell, crea il gateway VPN ad alta disponibilità per la rete VPC vertex-networking-vpc:

    gcloud compute vpn-gateways create vertex-networking-vpn-gw1 \
       --network vertex-networking-vpc \
       --region us-central1
    
  2. Crea il gateway VPN ad alta disponibilità per la rete VPC onprem-vpc:

    gcloud compute vpn-gateways create onprem-vpn-gw1 \
       --network onprem-vpc \
       --region us-central1
    
  3. Nella console Google Cloud, vai alla scheda Gateway VPN cloud nella pagina VPN.

    Vai a VPN

  4. Nell'elenco dei gateway VPN, verifica che i due gateway (vertex-networking-vpn-gw1 e onprem-vpn-gw1) siano stati creati e che ciascuno abbia due indirizzi IP.

Creazione di router Cloud

  1. In Cloud Shell, crea un router Cloud per la rete VPCvertex-networking-vpc:

    gcloud compute routers create vertex-networking-vpc-router1 \
       --region us-central1\
       --network vertex-networking-vpc \
       --asn 65001
    
  2. Crea un router cloud per la rete VPC onprem-vpc:

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

Aggiungi un gateway Cloud NAT alla rete VPC onprem-vpc

In questo passaggio aggiungi un gateway Cloud NAT al router cloud per la rete VPC onprem-vpc. Un gateway Cloud NAT fornisce connettività in uscita per le istanze di macchine virtuali (VM) Compute Engine che non dispongono di indirizzi IP esterni.

  1. In Cloud Shell, aggiungi un gateway Cloud NAT al onprem-vpc-router1 router Cloud:

    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. Nella console Google Cloud, vai alla pagina Cloud Routers.

    Vai a Router Cloud

  3. Nell'elenco dei router Cloud, verifica che siano stati creati vertex-networking-vpc-router1 e onprem-vpc-router1. Potresti dover aggiornare la scheda del browser della console Google Cloud per visualizzare i nuovi valori.

  4. Nell'elenco dei router Cloud, fai clic su onprem-vpc-router1.

  5. Nella pagina Dettagli router, verifica che il gateway Cloud NAT us-central-cloudnat-onprem sia stato creato.

Crea tunnel VPN

  1. Nella rete vertex-networking-vpc, crea un tunnel VPN denominato 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. Nella rete vertex-networking-vpc, crea un tunnel VPN denominato 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. Nella rete onprem-vpc, crea un tunnel VPN denominato 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. Nella rete onprem-vpc, crea un tunnel VPN denominato 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. Nella console Google Cloud, vai alla pagina VPN.

    Vai a VPN

  6. Nell'elenco dei tunnel VPN, verifica che i quattro tunnel VPN siano stati creati.

Definizione di sessioni BGP

Router Cloud utilizza il protocollo BGP (Border Gateway Protocol) per scambiare le route tra la tua rete VPC (in questo caso vertex-networking-vpc) e la tua rete on-premise (rappresentata da onprem-vpc). Su Cloud Router, devi configurare un'interfaccia e un peer BGP per il tuo router on-premise. L'abbinamento dell'interfaccia e della configurazione peer BGP crea una sessione BGP. In questa sezione, creerai due sessioni BGP per vertex-networking-vpc e altre due per onprem-vpc.

Dopo aver configurato le interfacce e i peer BGP tra i router, questi inizieranno automaticamente a scambiarsi le route.

Stabilisci sessioni BGP per vertex-networking-vpc

  1. In Cloud Shell, nella rete vertex-networking-vpc, crea un'interfaccia BGP per 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. Nella rete vertex-networking-vpc, crea un peer BGP per 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. Nella rete vertex-networking-vpc, crea un'interfaccia BGP per 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. Nella rete vertex-networking-vpc, crea un peer BGP per 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
    

Stabilisci sessioni BGP per onprem-vpc

  1. Nella rete onprem-vpc, crea un'interfaccia BGP per 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. Nella rete onprem-vpc, crea un peer BGP per 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. Nella rete onprem-vpc, crea un'interfaccia BGP per 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. Nella rete onprem-vpc, crea un peer BGP per 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
    

Convalida la creazione della sessione BGP

  1. Nella console Google Cloud, vai alla pagina VPN.

    Vai a VPN

  2. Nell'elenco dei tunnel VPN, verifica che il valore nella colonna Stato sessione BGP per ogni tunnel sia passato da Configura sessione BGP a BGP stabilito. Potresti dover aggiornare la scheda del browser della console Google Cloud per visualizzare i nuovi valori.

Crea l'endpoint Private Service Connect (PSC)

In questa sezione, crei un endpoint Private Service Connect (PSC) per le API Google che le istanze VM nella rete onprem-vpc utilizzeranno per accedere all'API GenAI dalla tua rete onprem-vpc.

Un endpoint Private Service Connect (PSC) è un indirizzo IP interno della rete onprem-vpc a cui i client della rete possono accedere direttamente. Questo endpoint viene creato eseguendo il deployment di una regola di forwarding che indirizza il traffico di rete corrispondente all'indirizzo IP dell'endpoint PSC a un bundle di API di Google, nello specifico al bundle all-apis.

L'indirizzo IP dell'endpoint PSC (192.168.0.1) verrà annunciato dal router Cloud vertex-networking-vpc-router come route annunciata personalizzata alla rete onprem-vpc in un passaggio successivo.

  1. Prenota un indirizzo IP interno globale da assegnare all'endpoint:

    gcloud compute addresses create psc-googleapi-ip \
       --global \
       --purpose=PRIVATE_SERVICE_CONNECT \
       --addresses=192.168.0.1 \
       --network=vertex-networking-vpc
    
  2. Crea l'endpoint insieme a una regola di forwarding che lo colleghi alle API e ai servizi Google:

    gcloud compute forwarding-rules create pscvertex \
       --global \
       --network=vertex-networking-vpc\
       --address=psc-googleapi-ip \
       --target-google-apis-bundle=all-apis
    
  3. Elenca gli endpoint PSC configurati e verifica che l'endpoint pscvertex sia stato creato:

    gcloud compute forwarding-rules list  \
       --filter target="(all-apis OR vpc-sc)" --global
    
  4. Visualizza i dettagli dell'endpoint PSC configurato e verifica che l'indirizzo IP sia 192.168.0.1:

    gcloud compute forwarding-rules describe \
       pscvertex --global
    

Crea annunci di route personalizzati per vertex-networking-vpc

In questa sezione, crei una route annunciata personalizzata per vertex-networking-vpc-router1 (il router Cloud per vertex-networking-vpc) per annunciare l'indirizzo IP dell'endpoint PSC alla rete onprem-vpc.

  1. Nella console Google Cloud, vai alla pagina Cloud Routers.

    Vai a Router Cloud

  2. Nell'elenco dei router Cloud, fai clic su vertex-networking-vpc-router1.

  3. Nella pagina Dettagli del router, fai clic su Modifica.

  4. Nella sezione Route annunciate, seleziona Route per Crea route personalizzate.

  5. Seleziona la casella di controllo Annuncia tutte le subnet visibili al router Cloud per continuare a pubblicizzare le subnet disponibili per il router Cloud. L'attivazione di questa opzione simula il comportamento del router Cloud in modalità di annuncio predefinita.

  6. Fai clic su Aggiungi un percorso personalizzato.

  7. In Origine, seleziona Intervallo IP personalizzato.

  8. In Intervallo di indirizzi IP, inserisci il seguente indirizzo IP:

    192.168.0.1
    
  9. In Descrizione, inserisci il seguente testo:

    Custom route to advertise Private Service Connect endpoint IP address
    
  10. Fai clic su Fine e poi su Salva.

Verifica che onprem-vpc abbia appreso le route annunciate

  1. Nella console Google Cloud, vai alla pagina Route.

    Vai a Route

  2. Nella scheda Route operative, procedi nel seguente modo:

    1. In Rete, scegli onprem-vpc.
    2. In Regione, scegli us-central1 (Iowa).
    3. Fai clic su Visualizza.
    4. Nell'elenco dei route, verifica che siano presenti voci i cui nomi iniziano con onprem-vpc-router1-bgp-vertex-networking-vpc-tunnel0 e onprem-vpc-router1-bgp-vfertex-networking-vpc-tunnel1 e che entrambe abbiano un intervallo IP di destinazione pari a 192.168.0.1/32. (192.168.0.1 è l'indirizzo IP dell'endpoint PSC).

      Se queste voci non vengono visualizzate immediatamente, attendi qualche minuto e poi aggiorna la scheda del browser della console Google Cloud .

Configura un'istanza VM nella rete on-premise

In questa sezione, crei un'istanza VM Compute Engine nella rete VPC onprem-vpc. Questa istanza VM simula un client on-premise che si connette all'endpoint PSC e accede all'API di AI generativa.

Creare un account di servizio gestito dall'utente

In questo tutorial crei un account di servizio gestito dall'utente seguendo le best practice di Compute Engine e IAM.

  1. In Cloud Shell, esegui i seguenti comandi, sostituendo PROJECT_ID con il tuo ID progetto:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  2. Crea l'account di servizio:

    gcloud iam service-accounts create user-managed-sa
    
  3. Assegna il ruolo IAM Utente Vertex AI (roles/aiplatform.user) all'account di servizio:

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

Crea l'istanza VM on-prem-client

In questo passaggio crei l'istanza VM, che utilizza l'indirizzo IP di Private Service Connect (192.168.0.1) per accedere alle API di Google tramite la VPN ad alta disponibilità.

Per consentire a Identity-Aware Proxy (IAP) di connettersi alle tue istanze VM, crea una regola firewall che:

  • Si applica a tutte le istanze VM che vuoi rendere accessibili tramite IAP. In questo caso, esiste solo on-prem-client.
  • Consente il traffico TCP attraverso la porta 22 dall'intervallo IP 35.235.240.0/20. Questo intervallo contiene tutti gli indirizzi IP utilizzati da IAP per l'inoltro TCP.
  1. Crea l'istanza VM on-prem-client. Il seguente comando installa anche i pacchetti tcpdump e dnsutils, che contengono le utilità tcpdump e dig che utilizzerai in un secondo momento per convalidare le richieste 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 regola firewall IAP denominata 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
    

Convalida l'accesso pubblico a internet all'IA generativa su Vertex AI

In questa sezione, accedi all'istanza VM on-prem-client utilizzando Identity-Aware Proxy e poi convalidi la connettività pubblica alle API Vertex AI (inclusa GenAI) eseguendo il comando dig sul dominio pubblico Vertex AI (us-central1-aiplatform.googleapis.com).

  1. In Cloud Shell (scheda 1), esegui i comandi seguenti, sostituendo PROJECT_ID con il tuo ID progetto:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  2. Accedi all'istanza VM on-prem-client utilizzando IAP:

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

    dig us-central1-aiplatform.googleapis.com
    

    Dovresti vedere un output dig simile al seguente, dove gli indirizzi IP nella sezione della risposta sono indirizzi IP pubblici:

    ; <<>> 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 e convalida l'accesso privato all'IA generativa su Vertex AI

In questa sezione, configuri l'accesso privato all'IA generativa su Vertex AI in modo che, quando invii richieste all'endpoint del servizio pubblico (us-central1-aiplatform.googleapis.com), queste vengano reindirizzate all'endpoint PSC. L'endpoint PSC, a sua volta, inoltra la richiesta a

Aggiorna il file /etc/hosts in modo che punti all'endpoint PSC

In questo passaggio, aggiungi una riga al file /etc/hosts che indirizzi le richieste inviate all'endpoint del servizio pubblico (us-central1-aiplatform.googleapis.com) all'endpoint PSC (192.168.0.1).

  1. Nell'istanza VM on-prem-client (scheda 1), utilizza un editor di testo come vim o nano per aprire il file /etc/hosts:

    sudo vim /etc/hosts
    
  2. Aggiungi la seguente riga al file:

    192.168.0.1 us-central1-aiplatform.googleapis.com
    

    Questa riga assegna l'indirizzo IP dell'endpoint PSC (192.168.0.1) al nome di dominio completo per l'API Google Vertex AI (us-central1-aiplatform.googleapis.com).

    Il file modificato dovrebbe avere il seguente aspetto:

    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. Salva il file come segue:

    • Se utilizzi vim, premi il tasto Esc, quindi digita :wq per salvare il file ed uscire.
    • Se utilizzi nano, digita Control+O e premi Enter per salvare il file, quindi digita Control+X per uscire.
  4. Esegui il ping dell'endpoint Vertex AI come segue:

    ping us-central1-aiplatform.googleapis.com
    

    Il comando ping dovrebbe restituire il seguente output. 192.168.0.1 è l'indirizzo IP dell'endpoint PSC:

    PING us-central1-aiplatform.googleapis.com (192.168.0.1) 56(84) bytes of data.
    
  5. Digita Control+C per uscire da ping.

  6. Esegui il seguente comando tcpdump per verificare la risoluzione DNS e il percorso dei dati IP quando invii una richiesta di previsione online all'endpoint:

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

Crea la richiesta privata

In questo passaggio crei un file di testo denominato request.json che contiene il payload per una richiesta curl di esempio che invii all'API REST GenAI. Per ulteriori informazioni sulle richieste di esempio, consulta la sezione Richiesta di esempio.

  1. Mantenendo in esecuzione il comando tcpdump nella scheda 1, apri una nuova sessione Cloud Shell (scheda 2) facendo clic su Apri una nuova scheda in Cloud Shell.

  2. Nella nuova sessione Cloud Shell (scheda 2), esegui i seguenti comandi, sostituendo PROJECT_ID con l'ID progetto:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  3. Accedi all'istanza VM on-prem-client utilizzando IAP:

    gcloud compute ssh on-prem-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
    
  4. Esegui i seguenti comandi, sostituendo PROJECT_ID con l'ID progetto:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  5. Utilizza un editor di testo come vim o nano per creare un nuovo file denominato request.json contenente il seguente testo:

    {
       "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. Esegui il seguente comando per inviare una richiesta all'endpoint PSC, che la inoltra all'API GenAI. Quando l'endpoint riceve la risposta, la inoltra alla 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"
    

    Dovresti visualizzare una risposta simile al seguente esempio:

    {
       "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. Nella scheda 1, verifica che l'indirizzo IP dell'endpoint PSC (192.168.0.1) sia stato utilizzato per accedere alle API Vertex AI dall'istanza VM on-prem-client (subnet 172.16.10.0/28).

    Dal terminale tcpdump nella scheda 1 di Cloud Shell, puoi vedere che non è necessaria una ricerca DNS per us-central1-aiplatform.googleapis.com perché la riga che hai aggiunto al file /etc/hosts ha la precedenza e l'indirizzo IP dell'endpoint PSC (192.168.0.1) viene utilizzato nel percorso dati.

    Dovresti vedere un output tcpdump simile al seguente:

    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
    

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.

Puoi eliminare le singole risorse del progetto eseguendo i seguenti comandi in 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

Passaggi successivi