Vertex AI accede privatamente agli endpoint di previsione online utilizzando PSC

1. Introduzione

Gli host on-premise possono raggiungere una previsione online in modo nativo attraverso la rete internet pubblica (opzione 1) o utilizzando Cloud VPN o Cloud Interconnect con Private Service Connect (PSC) (opzione 2) dalla rete on-premise, entrambi con crittografia SSL/TLS. La connettività ibrida alla previsione online sull'interconnessione è più efficiente di quella consigliata da Internet per le applicazioni critiche, come illustrato nella Figura 1.

In questo tutorial dimostreremo come utilizzare la VPN ad alta disponibilità (VPN ad alta disponibilità) per accedere privatamente a Previsione online tra due reti VPC che possono fungere da base per la connettività privata multi-cloud e on-premise.

Tieni presente che Vertex Online Prediction è un endpoint pubblico, quindi vuoi limitare l'accesso utilizzando Controlli di servizio VPC (VPC-SC) per creare perimetri sicuri per consentire o negare l'accesso a Vertex e ad altre API di Google. Questo tutorial non copre VPC-SC. Per ulteriori dettagli, fai riferimento a Controlli di servizio VPC con Vertex AI

24a07ba49a7bcb16.png

Cosa creerai

Configurerai una rete VPC denominata on-prem-vpc per rappresentare un ambiente on-premise. Per il tuo deployment, on-prem-vpc non esisterebbe, ma verrebbe utilizzata una rete ibrida con il tuo data center on-premise o il tuo cloud provider.

In base ai dettagli riportati di seguito, creerai un'architettura completa di Private Service Connect che illustra l'accesso pubblico alle previsioni online tramite Cloud NAT e in privato utilizzando PSC su VPN ad alta disponibilità.

b545c808b366341a.png

Una volta eseguito il deployment della previsione online nel progetto Google Cloud, verranno esplorati i seguenti casi d'uso:

L'accesso pubblico alla previsione online è costituito da:

  • Crea un'istanza GCE (nat-client) che utilizza NAT per l'accesso a internet in uscita
  • Utilizza CURL per l'inferenza rispetto al modello
  • Utilizzare TCPDUMP per confermare che la previsione online sia accessibile tramite un VIP pubblico

L'accesso privato alla previsione online è costituito da:

  • Esegui il deployment di un modello sull'endpoint di previsione online di Vertex AI nel progetto
  • Crea un endpoint Private Service Connect (Googleapis) nell'aiml-vpc
  • Esporta l'indirizzo IP PSC sul router Cloud come pubblicità personalizzata sul VPC on-prem
  • Crea un'istanza GCE (client privato) e aggiorna il file etc/hosts con l'IP dell'endpoint PSC
  • Utilizza CURL per l'inferenza rispetto al modello
  • utilizza TCPDUMP per convalidare l'accesso alla previsione online tramite l'indirizzo IP dell'endpoint PSC

Cosa imparerai a fare

  • Come stabilire un endpoint Private Service Connect
  • Come pubblicizzare l'IP dell'endpoint PSC sul router Cloud
  • Come utilizzare TCPDUMP per convalidare l'accesso alle previsioni online, sia pubblico che privato

Che cosa ti serve

  • Progetto Google Cloud

Autorizzazioni IAM

Amministratore rete Compute

Editor di Service Directory

Amministratore DNS

Amministratore rete

Amministratore quota

Amministratore Notebooks

Utente account di servizio

Amministratore archiviazione

Utente Vertex AI

Amministratore account di servizio

2. Prima di iniziare

Aggiornare il progetto per supportare il tutorial

Questo tutorial utilizza $variables per facilitare l'implementazione della configurazione di gcloud in Cloud Shell.

All'interno di Cloud Shell, esegui queste operazioni:

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

3. Attiva i servizi

All'interno di Cloud Shell, esegui queste operazioni:

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

4. configurazione aiml-vpc

Crea aiml-vpc

All'interno di Cloud Shell, esegui queste operazioni:

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

Crea la subnet del blocco note gestito dall'utente

All'interno di Cloud Shell, esegui queste operazioni:

gcloud compute networks subnets create workbench-subnet --project=$projectid --range=172.16.10.0/28 --network=aiml-vpc --region=us-central1 --enable-private-ip-google-access

Router Cloud e configurazione NAT

Nel tutorial viene utilizzato Cloud NAT per i download di pacchetti software per blocchi note perché l'istanza di blocco note gestita dall'utente non ha un indirizzo IP esterno. Cloud NAT offre inoltre funzionalità NAT in uscita, il che significa che agli host internet non è consentito avviare comunicazioni con un blocco note gestito dall'utente, rendendolo più sicuro.

All'interno di Cloud Shell, crea il router Cloud a livello di regione.

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

In Cloud Shell, crea il gateway Cloud Nat a livello di regione.

gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1-aiml-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

5. Configurazione on-prem-vpc

Crea la VM on-prem-vpc

All'interno di Cloud Shell, esegui queste operazioni:

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

Crea la subnet nat

All'interno di Cloud Shell, esegui queste operazioni:

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

Crea la subnet private-ip

All'interno di Cloud Shell, esegui queste operazioni:

gcloud compute networks subnets create private-ip-subnet --project=$projectid --range=192.168.20.0/28 --network=on-prem-vpc --region=us-central1

Router Cloud e configurazione NAT

Cloud NAT viene utilizzato nel tutorial per il download dei pacchetti software. Cloud NAT offre inoltre funzionalità NAT in uscita, il che significa che agli host internet non è consentito avviare comunicazioni con il computing, rendendolo più sicuro.

All'interno di Cloud Shell, crea il router Cloud a livello di regione.

gcloud compute routers create cloud-router-us-central1-on-prem-nat --network on-prem-vpc --region us-central1

In Cloud Shell, crea il gateway Cloud Nat a livello di regione.

gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1-on-prem-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

6. Crea l'endpoint Private Service Connect

Nella sezione seguente creerai un endpoint Private Service Connect (PSC) che verrà utilizzato per accedere all'API Vertex da on-prem-vpc. L'indirizzo IP PSC 100.100.10.10 verrà pubblicizzato da aiml-vpc-cloud-router-vpn come pubblicità di router personalizzata sulla rete on-premise in un passaggio successivo.

Da Cloud Shell

gcloud compute addresses create psc-ip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=100.100.10.10 \
    --network=aiml-vpc

Crea l'endpoint PSC

Da Cloud Shell

gcloud compute forwarding-rules create pscvertex \
    --global \
    --network=aiml-vpc \
    --address=psc-ip \
    --target-google-apis-bundle=all-apis

Elenca gli endpoint di Private Service Connect configurati

Da Cloud Shell

gcloud compute forwarding-rules list  \
--filter target="(all-apis OR vpc-sc)" --global

Descrivere gli endpoint di Private Service Connect configurati

Da Cloud Shell

gcloud compute forwarding-rules describe \
    pscvertex --global

7. Connettività ibrida

Nella sezione seguente creerai un router Cloud che ti consente di scambiare dinamicamente le route tra il tuo virtual private cloud (VPC) e la rete peer utilizzando il Border Gateway Protocol (BGP).

Il router Cloud può configurare una sessione BGP su un tunnel Cloud VPN per connettere le tue reti. Apprende automaticamente i nuovi intervalli di indirizzi IP della subnet e li annuncia alla rete peer.

Nel tutorial eseguirai il deployment della VPN ad alta disponibilità tra aiml-vpc e on-prem-vpc.

Crea il gateway VPN ad alta disponibilità per aiml-vpc

Quando viene creato ciascun gateway, vengono automaticamente allocati due indirizzi IPv4 esterni, uno per ogni interfaccia del gateway.

In Cloud Shell, crea il gateway VPN ad alta disponibilità

gcloud compute vpn-gateways create aiml-vpn-gw \
   --network=aiml-vpc\
   --region=us-central1

Crea il gateway VPN ad alta disponibilità per on-prem-vpc

Quando viene creato ciascun gateway, vengono automaticamente allocati due indirizzi IPv4 esterni, uno per ogni interfaccia del gateway. Prendi nota di questi indirizzi IP da utilizzare in seguito durante la procedura di configurazione.

In Cloud Shell, crea il gateway VPN ad alta disponibilità.

gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-vpc\
   --region=us-central1

Convalida la creazione di gateway VPN ad alta disponibilità

Utilizzando la console, vai a HYBRID CONNECTIVITY → VPN → GATEWAY CLOUD VPN e verifica che gli IP del gateway vengano generati.

66312b1b53c233d7.png

Crea il router Cloud per aiml-vpc

In Cloud Shell, crea il router Cloud che si trova in us-central1

gcloud compute routers create aiml-cr-us-central1 \
   --region=us-central1 \
   --network=aiml-vpc\
   --asn=65001

Crea il router Cloud per la VPN on-prem-vpc

In Cloud Shell, crea il router Cloud che si trova in us-central1

gcloud compute routers create on-prem-cr-us-central1 \
   --region=us-central1 \
   --network=on-prem-vpc \
   --asn=65002

Crea i tunnel VPN per aiml-vpc

Creerai due tunnel VPN su ciascun gateway VPN ad alta disponibilità.

Crea tunnel VPN0

In Cloud Shell, crea tunnel0:

gcloud compute vpn-tunnels create aiml-vpc-tunnel0 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router aiml-cr-us-central1 \
    --vpn-gateway aiml-vpn-gw \
    --interface 0

Crea tunnel VPN1

In Cloud Shell, crea tunnel1:

gcloud compute vpn-tunnels create aiml-vpc-tunnel1 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router aiml-cr-us-central1 \
    --vpn-gateway aiml-vpn-gw \
    --interface 1

Crea i tunnel VPN per on-prem-vpc

Creerai due tunnel VPN su ciascun gateway VPN ad alta disponibilità.

Crea tunnel VPN0

In Cloud Shell, crea tunnel0:

gcloud compute vpn-tunnels create on-prem-tunnel0 \
    --peer-gcp-gateway aiml-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router on-prem-cr-us-central1 \
    --vpn-gateway on-prem-vpn-gw \
    --interface 0

Crea tunnel VPN1

In Cloud Shell, crea tunnel1:

gcloud compute vpn-tunnels create on-prem-tunnel1 \
    --peer-gcp-gateway aiml-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router on-prem-cr-us-central1 \
    --vpn-gateway on-prem-vpn-gw \
    --interface 1

Convalida la creazione di tunnel VPN

Utilizzando la console, vai a IBRIDO CONNETTIVITÀ → VPN → TUNNEL CLOUD VPN.

e8e13ebaed09f1.png

8. Stabilisci vicini BGP

Crea sessioni BGP

In questa sezione configurerai le interfacce del router Cloud e i peer BGP.

Crea un'interfaccia BGP e il peering per aiml-vpc

In Cloud Shell, crea l'interfaccia BGP:

gcloud compute routers add-interface aiml-cr-us-central1 \
    --interface-name if-tunnel0-to-onprem \
    --ip-address 169.254.1.1 \
    --mask-length 30 \
    --vpn-tunnel aiml-vpc-tunnel0 \
    --region us-central1

In Cloud Shell, crea il peer BGP:

gcloud compute routers add-bgp-peer aiml-cr-us-central1 \
    --peer-name bgp-on-premises-tunnel0 \
    --interface if-tunnel1-to-onprem \
    --peer-ip-address 169.254.1.2 \
    --peer-asn 65002 \
    --region us-central1

In Cloud Shell, crea l'interfaccia BGP:

gcloud compute routers add-interface aiml-cr-us-central1 \
    --interface-name if-tunnel1-to-onprem \
    --ip-address 169.254.2.1 \
    --mask-length 30 \
    --vpn-tunnel aiml-vpc-tunnel1 \
    --region us-central1

In Cloud Shell, crea il peer BGP:

gcloud compute routers add-bgp-peer aiml-cr-us-central1 \
    --peer-name bgp-on-premises-tunnel1 \
    --interface if-tunnel2-to-onprem \
    --peer-ip-address 169.254.2.2 \
    --peer-asn 65002 \
    --region us-central1

Crea un'interfaccia BGP e il peering per on-prem-vpc

In Cloud Shell, crea l'interfaccia BGP:

gcloud compute routers add-interface on-prem-cr-us-central1 \
    --interface-name if-tunnel0-to-aiml-vpc\
    --ip-address 169.254.1.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel0 \
    --region us-central1

In Cloud Shell, crea il peer BGP:

gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
    --peer-name bgp-aiml-vpc-tunnel0 \
    --interface if-tunnel1-to-aiml-vpc\
    --peer-ip-address 169.254.1.1 \
    --peer-asn 65001 \
    --region us-central1

In Cloud Shell, crea l'interfaccia BGP:

gcloud compute routers add-interface on-prem-cr-us-central1 \
    --interface-name if-tunnel1-to-aiml-vpc\
    --ip-address 169.254.2.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel1 \
    --region us-central1

In Cloud Shell, crea il peer BGP:

gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
    --peer-name bgp-aiml-vpc-tunnel1\
    --interface if-tunnel2-to-aiml-vpc\
    --peer-ip-address 169.254.2.1 \
    --peer-asn 65001 \
    --region us-central1

Vai a CONNECTIVITY ibrida → VPN per visualizzare i dettagli del tunnel VPN.

cb91b4476a88acd3.png

Convalida le route apprese aiml-vpc su VPN ad alta disponibilità

Utilizzando la console, vai a Rete VPC → Reti VPC → aiml-vpc→ ROUTES → REGIONE → US-CENTRAL1 → VISUALIZZA

Osserva che aiml-vpc ha appreso le route dalle subnet nat-prem-vpc e private-ip-subnet

f407ed6e1a6233db.png

Verifica che il VPC on-prem abbia appreso la subnet workbench-subnet su HA-VPN

Utilizzando la console, vai a Rete VPC → Reti VPC → on-prem-vpc → ROUTES → REGIONE → US-CENTRAL1 → VISUALIZZA

7957e5d898a9e7e0.png

9. Crea annunci di route personalizzati aiml-vpc

L'IP dell'endpoint di Private Service Connect non è pubblicizzato automaticamente dal router Cloud aiml-cr-us-central1 perché la subnet non è configurata nel VPC.

Dovrai invece creare un annuncio di route personalizzato dal router cloud aiml-cr-us-central per l'indirizzo IP dell'endpoint 100.100.10.10 che verrà pubblicizzato nell'ambiente on-premise su BGP verso il VPC on-prem.

Dalla console, vai a CONNETTIVITÀ IBRIDA → ROUTER CLOUD → aiml-cr-us-central1, quindi seleziona MODIFICA.

c8fb02ed59a5b068.png

Nella sezione Route annunciate, seleziona l'opzione Crea route personalizzate, aggiorna i campi in base all'esempio riportato di seguito, seleziona FINE e poi fai clic su SALVA.

5996464e3aae0665.png

f799082ab2cd7e31.png

Convalida

Verifica che la VPN on-prem-vpc abbia appreso l'indirizzo IP dell'endpoint PSC su VPN ad alta disponibilità

Utilizzando la console, vai a Rete VPC → Reti VPC → on-prem-vpc → ROUTES → REGIONE → US-CENTRAL1 → VISUALIZZA

1b42673e6f940bf2.png

10. Crea annunci di route personalizzati on-prem-vpc

Il router Cloud on-prem-vpc pubblicizza tutte le subnet per impostazione predefinita, ma è necessaria solo la subnet private-ip-subnet.

Nella sezione seguente, aggiorna gli annunci di route dal router Cloud on-prem-cr-us-central1.

Dalla console, vai a IBRIDO CONNETTIVITÀ → ROUTER CLOUD → on-prem-cr-us-central1, quindi seleziona MODIFICA.

bd96bde9550d516a.png

Nella sezione Route annunciate, seleziona l'opzione Crea route personalizzate, aggiorna i campi in base all'esempio riportato di seguito, seleziona FINE e poi fai clic su SALVA.

f8b61f669a9cfeef.png

Convalida

Verifica che aiml-vpc abbia imparato la route private-ip-subnet da on-prem-vpc.

Utilizzando la console, vai a Rete VPC → Reti VPC → aiml-vpc → ROUTES → REGIONE → US-CENTRAL1 → VISUALIZZA

2b1a7a5f918e9f50.png

11. Creare un account di servizio gestito dall'utente (istanze GCE)

Per fornire un livello di controllo preciso all'API Vertex, è necessario un account di servizio gestito dall'utente che verrà applicato alle istanze client native e private. Una volta generate, le autorizzazioni dell'account di servizio possono essere modificate in base ai requisiti aziendali. Nel tutorial, all'account di servizio gestito dall'utente vertex-sa verranno applicati i seguenti ruoli:

Devi l'API Service Account prima di procedere.

In Cloud Shell, crea l'account di servizio.

gcloud iam service-accounts create gce-vertex-sa \
    --description="service account for vertex" \
    --display-name="gce-vertex-sa"

All'interno di Cloud Shell, aggiorna l'account di servizio con il ruolo Amministratore istanze Compute

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:gce-vertex-sa@$projectid.iam.gserviceaccount.com" --role="roles/compute.instanceAdmin.v1"

All'interno di Cloud Shell, aggiorna l'account di servizio con il ruolo Vertex AI User

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

12. Creare un account di servizio gestito dall'utente (Blocco note)

Nella sezione seguente creerai un account di servizio gestito dall'utente che verrà associato a Vertex Workbench (Notebook) utilizzato nel tutorial.

Nel tutorial, all'account di servizio verranno applicati i seguenti ruoli:

In Cloud Shell, crea l'account di servizio.

gcloud iam service-accounts create user-managed-notebook-sa \
    --display-name="user-managed-notebook-sa"

All'interno di Cloud Shell, aggiorna l'account di servizio con il ruolo Storage Admin.

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

All'interno di Cloud Shell, aggiorna l'account di servizio con il ruolo Vertex AI User.

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

All'interno di Cloud Shell, aggiorna l'account di servizio con il ruolo Artifact Registry Admin.

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

All'interno di Cloud Shell, elenca l'account di servizio e prendi nota dell'indirizzo email che verrà utilizzato durante la creazione del blocco note gestito dall'utente.

gcloud iam service-accounts list

13. Creazione delle istanze di test

Nella sezione seguente creerai istanze di test per convalidare diversi metodi per raggiungere le API Vertex, in particolare:

  • L'istanza nat-client, utilizzerà Cloud NAT per risolvere Vertex AI e accedere quindi all'endpoint di previsione online su internet
  • L'istanza private-client utilizzerà l'IP Private Service Connect 100.100.10.10 per accedere all'endpoint Online Prediction tramite HA-VPN.

All'interno di Cloud Shell, crea l'istanza nat-client.

gcloud compute instances create nat-client \
    --zone=us-central1-a \
    --image-family=debian-11 \
    --image-project=debian-cloud \
    --subnet=nat-subnet \
    --service-account=vertex-sa@$projectid.iam.gserviceaccount.com \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --no-address \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump dnsutils -y"

All'interno di Cloud Shell, crea l'istanza private-client.

gcloud compute instances create private-client \
    --zone=us-central1-a \
    --image-family=debian-11 \
    --image-project=debian-cloud \
    --subnet=private-ip-subnet \
    --service-account=vertex-sa@$projectid.iam.gserviceaccount.com \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --no-address \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump dnsutils -y"

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 a cui vuoi rendere accessibile tramite IAP.
  • Consente il traffico in entrata dall'intervallo IP 35.235.240.0/20. Questo intervallo contiene tutti gli indirizzi IP utilizzati da IAP per l'inoltro TCP.

In Cloud Shell, crea la regola firewall IAP.

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

14. Crea un blocco note gestito dall'utente

l'API Notebooks

Nella sezione seguente, crea un blocco note gestito dall'utente che incorpora l'account di servizio creato in precedenza, user-managed-notebook-sa.

All'interno di Cloud Shell, crea l'istanza client privato.

gcloud notebooks instances create workbench-tutorial \
      --vm-image-project=deeplearning-platform-release \
      --vm-image-family=common-cpu-notebooks \
      --machine-type=n1-standard-4 \
      --location=us-central1-a \
      --subnet-region=us-central1 \
      --subnet=workbench-subnet \
      --no-public-ip    --service-account=user-managed-notebook-sa@$projectid.iam.gserviceaccount.com

15. Esegui il deployment del modello e della previsione online

Nella sezione seguente, utilizza il codelabVertex AI:Usa le routine di previsione personalizzate con Sklearn per pre-elaborare e post-elaborare i dati per le previsioni iniziando dalla Sezione 7,poiché hai già creato un blocco note nel passaggio precedente. Una volta eseguito il deployment del modello, torna al tutorial per iniziare la sezione successiva.

ee68b7ba0cfd2746.png

16. Convalida l'accesso all'API Vertex su internet

Nella sezione seguente, accederai a instance, nat-client e convaliderai la connettività a Vertex AI tramite l'uso di dig e tcpdump sul dominio us-central1-aiplatform.googleapis.com utilizzato per risolvere le API Vertex.

Accedi a nat-client utilizzando IAP in Cloud Shell per convalidare la connettività all'API Vertex eseguendo una ricerca sul dominio Vertex us-central1-aiplatform.googleapis.com

gcloud compute ssh nat-client --project=$projectid --zone=us-central1-a --tunnel-through-iap

Esegui lo scavo.

dig us-central1-aiplatform.googleapis.com

Ad esempio, prendi nota degli IP pubblici nella risposta del DNS.

user@nat-client:~$ dig us-central1-aiplatform.googleapis.com

; <<>> DiG 9.16.42-Debian <<>> us-central1-aiplatform.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56761
;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;us-central1-aiplatform.googleapis.com. IN A

;; ANSWER SECTION:
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.111.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.250.1.95
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.121.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.250.103.95
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.120.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.171.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.250.159.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.120.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.161.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.172.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.126.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.70.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.132.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.201.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.202.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.69.95

;; Query time: 4 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Thu Jun 29 01:35:57 UTC 2023
;; MSG SIZE  rcvd: 322

Dal sistema operativo nat-client, esegui tcpdump per convalidare la risoluzione DNS quando esegui un curl rispetto alla previsione online.

 sudo tcpdump -i any port 53 -n

Esempio:

user@nat-client:~$ sudo tcpdump -i any port 53 -n 
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes

Apri un nuovo terminale Cloud Shell selezionando "+". Una volta aperta la nuova scheda, aggiorna la variabile del nome del progetto.

In Cloud Shell, aggiorna la variabile del nome del progetto.

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

Nella seconda parte di Cloud Shell, esegui un'istanza da ssh a nat-client.

gcloud compute ssh --zone "us-central1-a" "nat-client" --project "$projectid"

Nella sezione seguente creerai un file instances.json utilizzando l'editor sudo VI o nano e inserirai la stringa di dati utilizzata per ottenere una previsione dal modello di cui è stato eseguito il deployment.

Dal sistema operativo nat-client, crea un file instances.json con la stringa di dati riportata di seguito:

{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

Esempio:

user@nat-client:$ more instances.json 
{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

user@nat-client:$

Recupera dalla console Cloud l'ID endpoint di previsione online che verrà utilizzato nei passaggi successivi.

Vai a VERTEX AI → PREVISIONE ONLINE

237d413ccde1e95b.png

Nel sistema operativo nat-client, crea le seguenti variabili:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"

Esempio:

ENDPOINT_ID="3328226095324463104"

Dal sistema operativo nat-client, esegui un comando curl per ottenere una risposta dal modello.

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json

Esempio: puoi notare una previsione riuscita.

user@nat-client$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
{
  "predictions": [
    "$479.0",
    "$586.0"
  ],
  "deployedModelId": "1949163636186415104",
  "model": "projects/234086459238/locations/us-central1/models/947543727654567936",
  "modelDisplayName": "diamonds-cpr",
  "modelVersionId": "1"
}

17. Convalida - Accesso a internet all'API Vertex

Ora che hai eseguito la previsione, diamo un'occhiata ai risultati di TCPDUMP (terminale 1) che indicano l'istanza nat-client (192.168.10.2) che esegue una query DNS sul server DNS locale 169.254.169.254 per il dominio Vertex AI us-central1-aiplatform.googleapis.com. Il risultato della query DNS sono indirizzi IP virtuali (VIPS) pubblici per le API Vertex, come indicato di seguito:

user@nat-client:~$ sudo tcpdump -i any port 53 -n
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
20:05:09.260937 ens4  Out IP 192.168.10.2.40782 > 169.254.169.254.53: 47190+ A? oauth2.googleapis.com. (39)
20:05:09.260946 ens4  Out IP 192.168.10.2.40782 > 169.254.169.254.53: 28075+ AAAA? oauth2.googleapis.com. (39)
20:05:09.263556 ens4  In  IP 169.254.169.254.53 > 192.168.10.2.40782: 28075 4/0/0 AAAA 2607:f8b0:4001:c34::5f, AAAA 2607:f8b0:4001:c54::5f, AAAA 2607:f8b0:4001:c16::5f, AAAA 2607:f8b0:4001:c17::5f (151)
20:05:09.265018 ens4  In  IP 169.254.169.254.53 > 192.168.10.2.40782: 47190 16/0/0 A 74.125.201.95, A 74.125.202.95, A 74.125.69.95, A 64.233.183.95, A 173.194.193.95, A 173.194.194.95, A 173.194.195.95, A 173.194.196.95, A 173.194.197.95, A 64.233.191.95, A 173.194.74.95, A 173.194.192.95, A 209.85.145.95, A 209.85.146.95, A 209.85.147.95, A 142.250.125.95 (295)
20:05:09.474478 ens4  Out IP 192.168.10.2.57356 > 169.254.169.254.53: 36008+ A? us-central1-aiplatform.googleapis.com. (55)
20:05:09.474488 ens4  Out IP 192.168.10.2.57356 > 169.254.169.254.53: 47020+ AAAA? us-central1-aiplatform.googleapis.com. (55)
20:05:09.477190 ens4  In  IP 169.254.169.254.53 > 192.168.10.2.57356: 36008 16/0/0 A 173.194.194.95, A 173.194.195.95, A 173.194.196.95, A 173.194.197.95, A 173.194.74.95, A 173.194.192.95, A 209.85.145.95, A 209.85.146.95, A 209.85.147.95, A 142.250.125.95, A 142.250.136.95, A 142.250.148.95, A 209.85.200.95, A 209.85.234.95, A 142.250.152.95, A 142.250.128.95 (311)
20:05:09.478607 ens4  In  IP 169.254.169.254.53 > 192.168.10.2.57356: 47020 4/0/0 AAAA 2607:f8b0:4001:c1b::5f, AAAA 2607:f8b0:4001:c0c::5f, AAAA 2607:f8b0:4001:c0e::5f, AAAA 2607:f8b0:4001:c1e::5f (167)

18. Abilita l'accesso privato alle API Vertex

Nella sezione seguente accederai alle API Vertex utilizzando Private Service Connect su networking ibrido (VPN ad alta disponibilità) per raggiungere privatamente la previsione online. Nell'esempio utilizzato nel tutorial, aggiorni il file /etc/hosts nell'istanza private-client.

Nel tuo ambiente on-premise, è opportuno aggiornare uno o più file /etc/hosts per il test, ma per ambienti di produzione e su larga scala è più auspicabile creare una nuova zona di inoltro utilizzando il nome di dominio completo dell'endpoint PSC.

Ad esempio, l'endpoint psc creato nel tutorial è chiamato pscvertex e si traduce in pscvertex.p.googleapis.com quando si utilizza l'endpoint per vertex aggiungendo il nome di dominio completo con il servizio, ad esempio us-central1-aiplatform-pscvertex.p.googleapis.com.

L'aggiornamento del DNS on-premise con l'endpoint PSC richiede anche il refactoring delle applicazioni locali per chiamare il FDQN, ad esempio us-central1-aiplatform-pscvertex.p.googleapis.com anziché l'endpoint pubblico nativo us-central1-aiplatform.googleapis.com.

I client che possono essere configurati per utilizzare un endpoint personalizzato possono utilizzare i nomi DNS di p.googleapis.com per inviare richieste a un endpoint.

Consulta la documentazione della libreria client o client per informazioni su come configurarla per l'utilizzo di endpoint personalizzati. Ad esempio:

  • Python: puoi configurare api_endpoint in Client options class (Classe opzioni client) nel pacchetto google-api-core.
  • Go: puoi configurare WithEndpoint nel pacchetto opzioni client nel pacchetto API.
  • gcloud: puoi configurare api_endpoint_overrides

Apri un nuovo terminale Cloud Shell selezionando "+". Una volta aperta la nuova scheda, aggiorna la variabile del nome del progetto.

Da Cloud Shell.

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

Accedi al client privato utilizzando IAP in un nuovo Cloud Shell per convalidare la connettività all'API Vertex eseguendo una ricerca sul dominio Vertex us-central1-aiplatform.googleapis.com

Da Cloud Shell, accedi all'istanza del sistema operativo client privato.

gcloud compute ssh private-client --project=$projectid --zone=us-central1-a --tunnel-through-iap

Esegui lo scavo.

dig us-central1-aiplatform.googleapis.com

Ad esempio, prendi nota degli IP pubblici in base alla risposta del DNS.

user@private-client:~$ dig us-central1-aiplatform.googleapis.com

; <<>> DiG 9.16.42-Debian <<>> us-central1-aiplatform.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33311
;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;us-central1-aiplatform.googleapis.com. IN A

;; ANSWER SECTION:
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.132.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.201.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.202.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.69.95
us-central1-aiplatform.googleapis.com. 300 IN A 64.233.182.95
us-central1-aiplatform.googleapis.com. 300 IN A 64.233.183.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.193.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.194.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.195.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.196.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.197.95
us-central1-aiplatform.googleapis.com. 300 IN A 64.233.191.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.74.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.192.95
us-central1-aiplatform.googleapis.com. 300 IN A 209.85.145.95
us-central1-aiplatform.googleapis.com. 300 IN A 209.85.146.95

;; Query time: 4 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Sun Jul 02 20:5

Aggiorna l'istanza client privato /etc/hosts utilizzando sudo VI editor o nano per creare un record del nome di dominio completo di Vertex AI us-central1-aiplatform.googleapis.com che punti all'endpoint PSC 100.100.10.10, senza ulteriori modifiche.

Esempio:

user@private-client:~$ more /etc/hosts
127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

100.100.10.10 us-central1-aiplatform.googleapis.com
192.168.20.2 private-client.c.$projectid.internal private-client  # Added by Google
169.254.169.254 metadata.google.internal  # Added by Google

Dal sistema operativo client privato, esegui un PING nell'endpoint API Vertex.

ping us-central1-aiplatform.googleapis.com

Ad esempio, PING restituisce l'IP dell'endpoint PSC, ma non è prevista alcuna risposta.

user@private-client:~$ ping us-central1-aiplatform.googleapis.com
PING us-central1-aiplatform.googleapis.com (100.100.10.10) 56(84) bytes of data.

Dal sistema operativo client privato, esegui tcpdump per convalidare la risoluzione DNS e il percorso dati IP verso l'endpoint PSC quando esegui un comando curl sulla previsione online.

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

Apri un quarto terminale Cloud Shell selezionando "+". Una volta aperta la nuova scheda, aggiorna la variabile del nome del progetto.

In Cloud Shell, aggiorna la variabile del nome del progetto.

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

Nella quarta istanza di Cloud Shell, esegui un'istanza mediante SSH per connetterti al client privato.

gcloud compute ssh --zone "us-central1-a" "private-client" --project "$projectid"

Nella sezione seguente creerai un file instances.json utilizzando l'editor sudo VI o nano e inserirai la stringa di dati utilizzata per ottenere una previsione dal modello di cui è stato eseguito il deployment.

Dal sistema operativo client privato, crea un file instances.json con la stringa di dati riportata di seguito:

{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

Esempio:

user@private-client:$ more instances.json 
{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

user@private-client:$

Nel sistema operativo client privato, crea le seguenti variabili:

gcloud config list project
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"

Esempio:

ENDPOINT_ID="3328226095324463104"

Dal sistema operativo client privato in Cloud Shell quattro, esegui un comando curl per ottenere una risposta dal modello.

curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json

19. Convalida - Accesso privato all'API Vertex

Dal sistema operativo client privato in Cloud Shell quattro, nota che l'IP dell'endpoint PSC (100.100.10.10) è stato utilizzato per accedere all'API Vertex.

user@private-client$ curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
Note: Unnecessary use of -X or --request, POST is already inferred.
*   Trying 100.100.10.10:443...
* Connected to us-central1-aiplatform.googleapis.com (100.100.10.10) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=upload.video.google.com
*  start date: May 29 08:21:36 2023 GMT
*  expire date: Aug 21 08:21:35 2023 GMT
*  subjectAltName: host "us-central1-aiplatform.googleapis.com" matched cert's "*.googleapis.com"
*  issuer: C=US; O=Google Trust Services LLC; CN=GTS CA 1C3
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x55f2ab65c2c0)
> POST /v1/projects/$projectid/locations/us-central1/endpoints/3328226095324463104:predict HTTP/2
> Host: us-central1-aiplatform.googleapis.com
> user-agent: curl/7.74.0
> accept: */*
> authorization: Bearer ya29.a0AbVbY6NdCbIJYj0mQROeq-xYgQCw534TTtjRc1kBAEOimKCFxb3gqgD5AvhfefJatSNr33eW1YJirfQVMptFoqfjRoB-i8zEJJ_GGCVqhsVnpSOjK0hzJQSuo2YGjIiSe1o1zdo7lWmh1Px-vLe8FImieGkrQ1hqVaa6aCgYKAXgSARESFQFWKvPlUQ_FuKB2hrDJRyFDjupL1g0171
> content-type: application/json
> content-length: 154
> 
* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
* We are completely uploaded and fine
< HTTP/2 200 
< content-type: application/json; charset=UTF-8
< x-vertex-ai-internal-prediction-backend: harpoon
< date: Mon, 03 Jul 2023 22:13:35 GMT
< vary: X-Origin
< vary: Referer
< vary: Origin,Accept-Encoding
< server: scaffolding on HTTPServer2
< cache-control: private
< x-xss-protection: 0
< x-frame-options: SAMEORIGIN
< x-content-type-options: nosniff
< accept-ranges: none
< 
{
  "predictions": [
    "$479.0",
    "$586.0"
  ],
  "deployedModelId": "1949163636186415104",
  "model": "projects/234086459238/locations/us-central1/models/947543727654567936",
  "modelDisplayName": "diamonds-cpr",
  "modelVersionId": "1"
}
* Connection #0 to host us-central1-aiplatform.googleapis.com left intact

Dal terminale TCPDUMP in Cloud Shell tre, possiamo confermare che non è stata osservata una ricerca DNS per us-central1-aiplatform.googleapis.com poiché il file /etc/host ha ancora la precedenza sull'indirizzo IP PSC 100.100.10.10 nel percorso dei dati.

user@private-client:~$ sudo tcpdump -i any port 53 -n or host 100.100.10.10
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
22:13:35.507625 ens4  Out IP 192.168.20.2.37004 > 169.254.169.254.53: 58585+ A? oauth2.googleapis.com. (39)
22:13:35.507631 ens4  Out IP 192.168.20.2.37004 > 169.254.169.254.53: 15580+ AAAA? oauth2.googleapis.com. (39)
22:13:35.511796 ens4  In  IP 169.254.169.254.53 > 192.168.20.2.37004: 58585 16/0/0 A 142.251.6.95, A 108.177.112.95, A 74.125.124.95, A 172.217.212.95, A 172.217.214.95, A 172.253.114.95, A 172.253.119.95, A 108.177.111.95, A 142.250.1.95, A 108.177.121.95, A 142.250.103.95, A 108.177.120.95, A 142.251.171.95, A 142.250.159.95, A 142.251.120.95, A 142.251.161.95 (295)
22:13:35.512002 ens4  In  IP 169.254.169.254.53 > 192.168.20.2.37004: 15580 4/0/0 AAAA 2607:f8b0:4001:c2b::5f, AAAA 2607:f8b0:4001:c18::5f, AAAA 2607:f8b0:4001:c5f::5f, AAAA 2607:f8b0:4001:c58::5f (151)
22:13:35.722145 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [S], seq 1951267724, win 65320, options [mss 1420,sackOK,TS val 1371205990 ecr 0,nop,wscale 7], length 0
22:13:35.730727 ens4  In  IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [S.], seq 3198878726, ack 1951267725, win 65535, options [mss 1366,sackOK,TS val 67847676 ecr 1371205990,nop,wscale 8], length 0
22:13:35.730760 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [.], ack 1, win 511, options [nop,nop,TS val 1371205999 ecr 67847676], length 0
22:13:35.738339 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 1:518, ack 1, win 511, options [nop,nop,TS val 1371206006 ecr 67847676], length 517
22:13:35.739922 ens4  In  IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [.], ack 518, win 261, options [nop,nop,TS val 67847688 ecr 1371206006], length 0
22:13:35.740860 ens4  In  IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [.], seq 1:2709, ack 518, win 261, options [nop,nop,TS val 67847689 ecr 1371206006], length 2708
22:13:35.740863 ens4  In  IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [P.], seq 2709:4699, ack 518, win 261, options [nop,nop,TS val 67847689 ecr 1371206006], length 1990
22:13:35.740874 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [.], ack 2709, win 497, options [nop,nop,TS val 1371206009 ecr 67847689], length 0
22:13:35.740886 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [.], ack 4699, win 485, options [nop,nop,TS val 1371206009 ecr 67847689], length 0
22:13:35.742709 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 518:598, ack 4699, win 501, options [nop,nop,TS val 1371206011 ecr 67847689], length 80
22:13:35.743996 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 598:644, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 46
22:13:35.744011 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 644:693, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 49
22:13:35.744082 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 693:728, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 35
22:13:35.744165 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 728:1069, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 341

Hai convalidato la connessione alla previsione online tramite un endpoint pubblico via Internet e privatamente utilizzando la rete ibrida e Private Service Connect (googleapis). Esci dal sistema operativo che torna al prompt di Cloud Shell.

20. Esegui la pulizia

Da Cloud Shell, elimina i componenti del tutorial.

gcloud compute forwarding-rules delete pscvertex --global --quiet

gcloud compute instances delete workbench-tutorial --zone=us-central1-a --quiet 

gcloud compute addresses delete psc-ip --global --quiet

gcloud compute networks subnets delete workbench-subnet --region=us-central1 --quiet 

gcloud compute vpn-tunnels delete aiml-vpc-tunnel0 aiml-vpc-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=us-central1 --quiet

gcloud compute vpn-gateways delete aiml-vpn-gw on-prem-vpn-gw --region=us-central1 --quiet 

gcloud compute routers delete aiml-cr-us-central1 cloud-router-us-central1-aiml-nat --region=us-central1 --quiet 

gcloud compute routers delete cloud-router-us-central1-on-prem-nat on-prem-cr-us-central1 --region=us-central1 --quiet

gcloud compute instances delete nat-client private-client --zone=us-central1-a --quiet

gcloud compute firewall-rules delete ssh-iap-on-prem-vpc --quiet

gcloud compute networks subnets delete nat-subnet  private-ip-subnet --region=us-central1 --quiet

gcloud compute networks delete on-prem-vpc --quiet

gcloud compute networks delete aiml-vpc --quiet

Elimina i componenti Vertex

Per eliminare l'immagine container, vai ad Artifact Registry, seleziona il repository che hai creato e poi Elimina

616a3108bc2e48c8.png

Per eliminare il bucket di archiviazione, utilizzando il menu di navigazione nella console Cloud, vai a Storage, seleziona il bucket e fai clic su Elimina:

eddd1f9fdfaede8.png

Annulla il deployment del modello dall'endpoint. Vai a Vertex AI → Previsione online → Seleziona diamonds-cpr_endpoint → Annulla il deployment del modello nell'endpoint → Annulla il deployment

bc95f092d21d4698.png

Elimina il modello. Vai a Vertex AI → Model Registry → Elimina modello

ec4afff091e11606.png

Elimina l'endpoint di previsione online. Vai a Vertex AI → Previsione online → Seleziona diamonds-cpr_endpoint → Elimina endpoint

7453760299bdfb9a.png

21. Complimenti

Congratulazioni, hai configurato e convalidato la connessione a Previsione online in modo nativo tramite internet e privatamente con Private Service Connect e il networking ibrido.

Hai creato un client nat e un client privato e hai utilizzato TCPDUMP per convalidare gli indirizzi IP utilizzati per raggiungere le API Vertex. Inoltre, hai appreso cos'è Private Service Connect (googleapis) e come può essere utilizzato per isolare le applicazioni on-premise e multi-cloud sfruttando un endpoint PSC del cliente.

Cosmopup pensa che i tutorial siano straordinari.

e6d3675ca7c6911f.jpeg

Passaggi successivi

Guarda alcuni di questi tutorial...

Per approfondire Video

Documenti di riferimento