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 tramite internet pubblico (opzione 1) o utilizzando Cloud VPN o Cloud Interconnect con Private Service Connect (PSC) (opzione 2) dalla tua rete on-premise, entrambe offrono la crittografia SSL/TLS. La connettività ibrida alla previsione online tramite interconnessione è più performante di internet, pertanto è consigliata per le applicazioni critiche, come illustrato nella Figura 1.

In questo tutorial mostreremo come utilizzare la VPN ad alta affidabilità (HA VPN) per accedere privatamente alla 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, pertanto devi limitare l'accesso utilizzando i 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 tratta i Controlli di servizio VPC. Per maggiori dettagli, consulta 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 la rete ibrida per il tuo data center on-premise o provider cloud.

Creerai un'architettura Private Service Connect completa che illustra l'accesso alla previsione online pubblicamente tramite Cloud NAT e privatamente utilizzando PSC su VPN ad alta affidabilità in base ai dettagli riportati di seguito.

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 sfrutta NAT per l'accesso a internet in uscita
  • Utilizzare CURL per l'inferenza sul modello
  • Utilizza TCPDUMP per verificare che la previsione online venga eseguita tramite un VIP pubblico

L'accesso privato alla previsione online è costituito da quanto segue:

  • Esegui il deployment di un modello in un endpoint di previsione online Vertex nel progetto
  • Crea un endpoint Private Service Connect (Googleapis) in aiml-vpc
  • Esporta l'indirizzo IP PSC tramite il router cloud come annuncio personalizzato nel VPC on-premise
  • Crea un'istanza GCE (private-client) e aggiorna il file etc/hosts con l'IP dell'endpoint PSC
  • Utilizza CURL per l'inferenza sul modello
  • Utilizza TCPDUMP per verificare che l'accesso alla previsione online avvenga tramite l'indirizzo IP dell'endpoint PSC

Cosa imparerai a fare

  • Come stabilire un endpoint Private Service Connect
  • Come annunciare l'IP dell'endpoint PSC tramite Cloud Router
  • Come utilizzare TCPDUMP per convalidare l'accesso alla previsione online, sia pubblica che privata

Che cosa ti serve

  • Progetto Google Cloud

Autorizzazioni IAM

Compute Network Admin

Service Directory Editor

DNS Administrator

Network Admin

Amministratore quota

Amministratore Notebooks

Utente Service Account

Amministratore spazio di archiviazione

Vertex AI User

Amministratore account di servizio

2. Prima di iniziare

Aggiornare il progetto per supportare il tutorial

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

In Cloud Shell, esegui le seguenti operazioni:

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

3. Attiva i servizi

In Cloud Shell, esegui le seguenti 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. aiml-vpc setup

Crea aiml-vpc

In Cloud Shell, esegui le seguenti operazioni:

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

Crea la subnet del notebook gestito dall'utente

In Cloud Shell, esegui le seguenti 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

Configurazione di router Cloud e NAT

Cloud NAT viene utilizzato nel tutorial per i download dei pacchetti software del notebook perché l'istanza del notebook gestita dall'utente non ha un indirizzo IP esterno. Cloud NAT offre anche funzionalità NAT in uscita, il che significa che gli host internet non sono autorizzati a iniziare la comunicazione con un notebook gestito dall'utente, rendendolo più sicuro.

In Cloud Shell, crea il router cloud regionale.

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

In Cloud Shell, crea il gateway Cloud NAT regionale.

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. on-prem-vpc setup

Crea on-prem-vpc

In Cloud Shell, esegui le seguenti operazioni:

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

Crea la subnet nat-subnet

In Cloud Shell, esegui le seguenti 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-subnet

In Cloud Shell, esegui le seguenti operazioni:

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

Configurazione di router Cloud e NAT

Cloud NAT viene utilizzato nel tutorial per i download dei pacchetti software. Cloud NAT offre anche funzionalità NAT in uscita, il che significa che gli host internet non sono autorizzati ad avviare la comunicazione con Compute, rendendolo più sicuro.

In Cloud Shell, crea il router cloud regionale.

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 regionale.

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à annunciato da aiml-vpc-cloud-router-vpn come annuncio del router personalizzato alla 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 Private Service Connect configurati

Da Cloud Shell

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

Descrivi gli endpoint 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 la tua rete Virtual Private Cloud (VPC) e la rete peer utilizzando il Border Gateway Protocol (BGP).

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

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

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

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

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

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

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

Quando viene creato ogni gateway, vengono allocati automaticamente due indirizzi IPv4 esterni, uno per ogni interfaccia del gateway. Annota questi indirizzi IP per utilizzarli in un secondo momento nei passaggi di configurazione.

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

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

Convalida la creazione del gateway VPN ad alta affidabilità

Utilizzando la console, vai a CONNETTIVITÀ IBRIDA → VPN → GATEWAY VPN CLOUD e verifica che gli IP del gateway siano 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 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 ogni gateway VPN ad alta affidabilità.

Crea tunnel VPN

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 ogni gateway VPN ad alta affidabilità.

Crea tunnel VPN

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 del tunnel VPN

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

e8e13ebaed09f1.png

8. Definisci i 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 un 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 CONNETTIVITÀ IBRIDA → VPN per visualizzare i dettagli del tunnel VPN.

cb91b4476a88acd3.png

Convalida le route apprese aiml-vpc tramite la VPN ad alta affidabilità

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

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

f407ed6e1a6233db.png

Verifica che on-prem-vpc abbia appreso workbench-subnet tramite la VPN ad alta disponibilità

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

7957e5d898a9e7e0.png

9. Crea annunci di route personalizzati aiml-vpc

L'IP dell'endpoint Private Service Connect non viene pubblicizzato automaticamente dal cloud router 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 endpoint 100.100.10.10 che verrà annunciato all'ambiente on-premise tramite BGP al VPC on-premise.

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

c8fb02ed59a5b068.png

Nella sezione Itinerari pubblicizzati, seleziona l'opzione Crea itinerari personalizzati, 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 on-prem-vpc abbia appreso l'indirizzo IP dell'endpoint PSC tramite la VPN ad alta disponibilità

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

1b42673e6f940bf2.png

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

Il router cloud on-prem-vpc annuncia 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.

Nella console, vai a CONNETTIVITÀ IBRIDA → ROUTER CLOUD → on-prem-cr-us-central1, poi seleziona MODIFICA.

bd96bde9550d516a.png

Nella sezione Itinerari pubblicizzati, seleziona l'opzione Crea itinerari personalizzati, 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 appreso la route private-ip-subnet da on-prem-vpc.

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

2b1a7a5f918e9f50.png

11. Crea un service account gestito dall'utente (istanze GCE)

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

Prima di procedere, devi l'API Service Account.

In Cloud Shell, crea il service account.

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

In Cloud Shell, aggiorna il service account con il ruolo compute instance admin

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

In Cloud Shell, aggiorna il service account con il ruolo Utente Vertex AI

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

12. Crea un service account gestito dall'utente (Notebooks)

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

Nel tutorial, al service account verranno applicati i seguenti ruoli:

In Cloud Shell, crea il service account.

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

In Cloud Shell, aggiorna il service account 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"

In Cloud Shell, aggiorna il service account con il ruolo Utente Vertex AI.

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

In Cloud Shell, aggiorna il service account con il ruolo Amministratore di Artifact Registry.

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

In Cloud Shell, elenca il service account e annota l'indirizzo email che verrà utilizzato durante la creazione del notebook gestito dall'utente.

gcloud iam service-accounts list

13. Sono state create le 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 quindi accedere 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 di previsione online tramite la VPN ad alta disponibilità.

In 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"

In 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 applichi a tutte le istanze VM a cui vuoi accedere tramite IAP.
  • Consente il traffico in entrata dall'intervallo IP 35.235.240.0/20. Questo intervallo contiene tutti gli indirizzi IP che 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 notebook gestito dall'utente

l'API Notebooks

Nella sezione seguente, crea un notebook gestito dall'utente che incorpora il service account creato in precedenza, user-managed-notebook-sa.

In Cloud Shell, crea l'istanza private-client.

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 la previsione online

Nella sezione seguente, utilizza il codelab fornito,Vertex AI:utilizza routine di previsione personalizzate con Sklearn per pre-elaborare e post-elaborare i dati per le previsioni, a partire dalla sezione 7, poiché hai già creato un notebook 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 all'istanza nat-client e convaliderai la connettività a Vertex AI utilizzando dig e tcpdump rispetto al 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 un dig sul dominio Vertex us-central1-aiplatform.googleapis.com

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

Esegui il dig.

dig us-central1-aiplatform.googleapis.com

Ad esempio, prendi nota degli IP pubblici nella risposta 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 comando curl su Online Prediction.

 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

In Cloud Shell 2, esegui un comando SSH all'istanza 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:$

Ottieni l'ID endpoint di previsione online da Cloud Console, che verrà utilizzato nei passaggi successivi.

Vai a VERTEX AI → PREVISIONE ONLINE

237d413ccde1e95b.png

Dal 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: nota la 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, esaminiamo i 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 (VIP) 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 tramite il networking ibrido (VPN ad alta affidabilità) per raggiungere privatamente la previsione online. Nell'esempio utilizzato nel tutorial, aggiornerai il file /etc/hosts nell'istanza private-client.

Nel tuo ambiente on-premise, l'aggiornamento di un singolo file /etc/hosts o di pochi file per il test è appropriato, ma per ambienti di produzione e su larga scala è più opportuno creare una nuova zona di inoltro utilizzando l'FQDN dell'endpoint PSC.

Ad esempio, l'endpoint PSC creato nel tutorial si chiama pscvertex, che si traduce in pscvertex.p.googleapis.com.Quando utilizzi l'endpoint per Vertex, aggiungi l'FQDN 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 l'FQDN, 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 p.googleapis.com per inviare richieste a un endpoint.

Consulta la documentazione del client o della libreria client per informazioni sulla configurazione per l'utilizzo di endpoint personalizzati. Ad esempio:

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 a private-client utilizzando IAP in una nuova Cloud Shell per convalidare la connettività all'API Vertex eseguendo un dig sul dominio Vertex us-central1-aiplatform.googleapis.com

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

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

Esegui il comando dig.

dig us-central1-aiplatform.googleapis.com

Ad esempio, prendi nota degli IP pubblici in base alla risposta 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 private-client /etc/hosts utilizzando l'editor sudo VI o nano per creare un record del nome di dominio completo (FQDN) di Vertex AI us-central1-aiplatform.googleapis.com che punta all'endpoint PSC 100.100.10.10, senza ulteriori modifiche richieste.

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 del client privato, esegui un PING all'endpoint dell'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 del client privato, esegui tcpdump per convalidare la risoluzione DNS e il percorso dei dati IP all'endpoint PSC quando esegui un comando curl su Online Prediction.

 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

In Cloud Shell 4, esegui un comando SSH all'istanza private-client.

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 del 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:$

Dal sistema operativo del 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 private-client in Cloud Shell 4, 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 del client privato in Cloud Shell 4, tieni presente 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 3, possiamo verificare che una ricerca DNS su us-central1-aiplatform.googleapis.com non è stata osservata poiché il file /etc/host ha avuto la precedenza, ma l'indirizzo IP PSC 100.100.10.10 è stato utilizzato 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 correttamente la connessione alla previsione online tramite un endpoint pubblico via internet e in privato con l'utilizzo del networking ibrido e di Private Service Connect (googleapis). Esci dal sistema operativo e 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 componenti Vertex

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

616a3108bc2e48c8.png

Per eliminare il bucket di archiviazione, utilizza il menu di navigazione nella console Cloud, vai ad Archiviazione, 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 VertexAI → Previsione online → Seleziona diamonds-cpr_endpoint → Elimina endpoint

7453760299bdfb9a.png

21. Complimenti

Congratulazioni, hai configurato e convalidato correttamente la connessione a Online Prediction in modo nativo utilizzando internet e in modo privato con Private Service Connect e il networking ibrido.

Hai creato un nat-client e un private-client e hai utilizzato TCPDUMP per convalidare gli indirizzi IP utilizzati per raggiungere le API Vertex. Inoltre, hai scoperto 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 fantastici.

e6d3675ca7c6911f.jpeg

Passaggi successivi

Dai un'occhiata ad alcuni di questi tutorial…

Ulteriori letture e video

Documentazione di riferimento