1. Introduction
Les hôtes sur site peuvent accéder à la prédiction en ligne de manière native via l'Internet public (option 1) ou en utilisant Cloud VPN ou Cloud Interconnect avec Private Service Connect (PSC) (option 2) depuis votre réseau sur site. Les deux options offrent un chiffrement SSL/TLS. La connectivité hybride à la prédiction en ligne via l'interconnexion est plus performante que l'Internet. Elle est donc recommandée pour les applications critiques, comme illustré sur la figure 1.
Dans ce tutoriel, nous allons vous montrer comment utiliser un VPN haute disponibilité pour accéder à la prédiction en ligne de manière privée entre deux réseaux VPC pouvant servir de base pour la connectivité multicloud et privée sur site.
Notez que Vertex Online Prediction est un point de terminaison public. Vous devez donc restreindre l'accès à l'aide de VPC Service Controls (VPC-SC) pour créer des périmètres sécurisés afin d'autoriser ou de refuser l'accès à Vertex et à d'autres Googleapis. Ce tutoriel ne couvre pas VPC-SC. Pour en savoir plus, consultez VPC Service Controls avec Vertex AI.

Ce que vous allez faire
Vous allez configurer un réseau VPC appelé on-prem-vpc pour représenter un environnement sur site. Pour votre déploiement, on-prem-vpc n'existerait pas. À la place, une mise en réseau hybride vers votre centre de données sur site ou votre fournisseur de services cloud serait utilisée.
Vous allez créer une architecture Private Service Connect complète qui illustre l'accès aux prédictions en ligne en mode public via Cloud NAT et en mode privé à l'aide de PSC sur un VPN haute disponibilité, comme indiqué ci-dessous.

Une fois la prédiction en ligne déployée dans le projet Google Cloud, les cas d'utilisation suivants seront explorés :
L'accès public à la prédiction en ligne comprend les éléments suivants :
- Créez une instance GCE (nat-client) qui utilise NAT pour l'accès Internet sortant.
- Utiliser CURL pour l'inférence par rapport au modèle
- Utiliser TCPDUMP pour valider que la prédiction en ligne est accessible via une adresse IP virtuelle publique
L'accès privé à la prédiction en ligne comprend les éléments suivants :
- Déployer un modèle sur un point de terminaison Vertex de prédiction en ligne dans le projet
- Créer un point de terminaison Private Service Connect (googleapis) dans aiml-vpc
- Exporter l'adresse IP PSC via le routeur Cloud Router en tant qu'annonce personnalisée vers le VPC sur site
- Créez une instance GCE (private-client) et mettez à jour le fichier etc/hosts avec l'adresse IP du point de terminaison PSC.
- Utiliser CURL pour l'inférence par rapport au modèle
- Utiliser TCPDUMP pour valider que la prédiction en ligne est accessible via l'adresse IP du point de terminaison PSC
Points abordés
- Établir un point de terminaison Private Service Connect
- Annoncer l'adresse IP du point de terminaison PSC via le routeur Cloud
- Utiliser TCPDUMP pour valider l'accès à la prédiction en ligne, à la fois publique et privée
Prérequis
- Projet Google Cloud
Autorisations IAM
Administrateur de réseaux Compute
Éditeur de l'annuaire des services
Utilisateur du compte de service
2. Avant de commencer
Mettre à jour le projet pour qu'il soit compatible avec le tutoriel
Ce tutoriel utilise des $variables pour faciliter l'implémentation de la configuration gcloud dans Cloud Shell.
Dans Cloud Shell, procédez comme suit :
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
3. Activer les services
Dans Cloud Shell, procédez comme suit :
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. Configuration d'aiml-vpc
Créer le VPC aiml-vpc
Dans Cloud Shell, procédez comme suit :
gcloud compute networks create aiml-vpc --project=$projectid --subnet-mode=custom
Créer le sous-réseau de notebooks gérés par l'utilisateur
Dans Cloud Shell, procédez comme suit :
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
Configuration de Cloud Router et de NAT
Cloud NAT est utilisé dans le tutoriel pour le téléchargement de packages logiciels de notebooks, car l'instance de notebooks gérés par l'utilisateur ne possède pas d'adresse IP externe. Cloud NAT offre également des fonctionnalités NAT de sortie, ce qui signifie que les hôtes Internet ne sont pas autorisés à initier une communication avec un notebook géré par l'utilisateur, ce qui le rend plus sécurisé.
Dans Cloud Shell, créez le routeur cloud régional.
gcloud compute routers create cloud-router-us-central1-aiml-nat --network aiml-vpc --region us-central1
Dans Cloud Shell, créez la passerelle Cloud NAT régionale.
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. Configuration de on-prem-vpc
Créer le VPC on-prem-vpc
Dans Cloud Shell, procédez comme suit :
gcloud compute networks create on-prem-vpc --project=$projectid --subnet-mode=custom
Créer le sous-réseau nat-subnet
Dans Cloud Shell, procédez comme suit :
gcloud compute networks subnets create nat-subnet --project=$projectid --range=192.168.10.0/28 --network=on-prem-vpc --region=us-central1
Créez le sous-réseau private-ip-subnet.
Dans Cloud Shell, procédez comme suit :
gcloud compute networks subnets create private-ip-subnet --project=$projectid --range=192.168.20.0/28 --network=on-prem-vpc --region=us-central1
Configuration de Cloud Router et de NAT
Cloud NAT est utilisé dans le tutoriel pour télécharger des packages logiciels. Cloud NAT offre également des fonctionnalités NAT de sortie, ce qui signifie que les hôtes Internet ne sont pas autorisés à initier la communication avec le calcul, ce qui le rend plus sécurisé.
Dans Cloud Shell, créez le routeur cloud régional.
gcloud compute routers create cloud-router-us-central1-on-prem-nat --network on-prem-vpc --region us-central1
Dans Cloud Shell, créez la passerelle Cloud NAT régionale.
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. Créer le point de terminaison Private Service Connect
Dans la section suivante, vous allez créer un point de terminaison Private Service Connect (PSC) qui sera utilisé pour accéder à l'API Vertex à partir du VPC sur site. L'adresse IP PSC 100.100.10.10 sera annoncée à partir de aiml-vpc-cloud-router-vpn en tant qu'annonce de routeur personnalisée sur le réseau sur site lors d'une prochaine étape.
Depuis Cloud Shell
gcloud compute addresses create psc-ip \
--global \
--purpose=PRIVATE_SERVICE_CONNECT \
--addresses=100.100.10.10 \
--network=aiml-vpc
Créer le point de terminaison PSC
Depuis Cloud Shell
gcloud compute forwarding-rules create pscvertex \
--global \
--network=aiml-vpc \
--address=psc-ip \
--target-google-apis-bundle=all-apis
Lister les points de terminaison Private Service Connect configurés
Depuis Cloud Shell
gcloud compute forwarding-rules list \
--filter target="(all-apis OR vpc-sc)" --global
Décrire les points de terminaison Private Service Connect configurés
Depuis Cloud Shell
gcloud compute forwarding-rules describe \
pscvertex --global
7. Connectivité hybride
Dans la section suivante, vous allez créer un routeur Cloud Router qui vous permettra d'échanger de manière dynamique des routes entre votre cloud privé virtuel (VPC) et votre réseau de pairs à l'aide du protocole BGP (Border Gateway Protocol).
Cloud Router peut configurer une session BGP sur un tunnel Cloud VPN pour connecter vos réseaux. Il apprend automatiquement les nouvelles plages d'adresses IP de sous-réseau et les annonce à votre réseau de pairs.
Dans ce tutoriel, vous allez déployer un VPN haute disponibilité entre aiml-vpc et on-prem-vpc.
Créez la passerelle VPN haute disponibilité pour aiml-vpc.
Lorsque les passerelles sont créées, deux adresses IPv4 externes sont automatiquement attribuées, une pour chaque interface de passerelle.
Dans Cloud Shell, créez la passerelle VPN haute disponibilité.
gcloud compute vpn-gateways create aiml-vpn-gw \
--network=aiml-vpc\
--region=us-central1
Créez la passerelle VPN haute disponibilité pour on-prem-vpc.
Lorsque les passerelles sont créées, deux adresses IPv4 externes sont automatiquement attribuées, une pour chaque interface de passerelle. Notez ces adresses IP que vous utiliserez ultérieurement dans les étapes de configuration.
Dans Cloud Shell, créez la passerelle VPN haute disponibilité.
gcloud compute vpn-gateways create on-prem-vpn-gw \
--network=on-prem-vpc\
--region=us-central1
Valider la création de la passerelle VPN haute disponibilité
Dans la console, accédez à CONNECTIVITÉ HYBRIDE → VPN → PASSERELLES CLOUD VPN et vérifiez que les adresses IP de la passerelle sont générées.

Créer le routeur Cloud pour aiml-vpc
Dans Cloud Shell, créez le routeur Cloud Router situé dans us-central1.
gcloud compute routers create aiml-cr-us-central1 \
--region=us-central1 \
--network=aiml-vpc\
--asn=65001
Créer le routeur Cloud pour on-prem-vpc
Dans Cloud Shell, créez le routeur Cloud Router situé dans us-central1.
gcloud compute routers create on-prem-cr-us-central1 \
--region=us-central1 \
--network=on-prem-vpc \
--asn=65002
Créer les tunnels VPN pour aiml-vpc
Vous allez créer deux tunnels VPN sur chaque passerelle VPN haute disponibilité.
Créer un tunnel VPN0
Dans Cloud Shell, créez 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
Créer un tunnel VPN1
Dans Cloud Shell, créez 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
Créer les tunnels VPN pour on-prem-vpc
Vous allez créer deux tunnels VPN sur chaque passerelle VPN haute disponibilité.
Créer un tunnel VPN0
Dans Cloud Shell, créez 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
Créer un tunnel VPN1
Dans Cloud Shell, créez 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
Valider la création du tunnel VPN
Dans la console, accédez à CONNECTIVITÉ HYBRIDE → VPN → TUNNELS CLOUD VPN.

8. Établir des voisins BGP
Créer des sessions BGP
Dans cette section, vous allez configurer les interfaces Cloud Router et les pairs BGP.
Créer une interface et un appairage BGP pour aiml-vpc
Dans Cloud Shell, créez l'interface 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
Dans Cloud Shell, créez le pair 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
Dans Cloud Shell, créez l'interface 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
Dans Cloud Shell, créez le pair 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
Créer une interface et un appairage BGP pour on-prem-vpc
Dans Cloud Shell, créez l'interface 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
Dans Cloud Shell, créez le pair 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
Dans Cloud Shell, créez l'interface 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
Dans Cloud Shell, créez le pair 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
Accédez à CONNECTIVITÉ HYBRIDE → VPN pour afficher les détails du tunnel VPN.

Valider les routes apprises aiml-vpc via un VPN haute disponibilité
Dans la console, accédez à Réseau VPC → Réseaux VPC → aiml-vpc → ITINÉRAIRES → RÉGION → US-CENTRAL1 → AFFICHER.
Observer que aiml-vpc a appris les routes à partir de on-prem-vpc nat-subnet et private-ip-subnet

Vérifier que on-prem-vpc a appris le sous-réseau Workbench via un VPN haute disponibilité
Dans la console, accédez à Réseau VPC → Réseaux VPC → on-prem-vpc → ROUTES → REGION → US-CENTRAL1 → VIEW.

9. Créer des annonces de routage personnalisées pour aiml-vpc
L'adresse IP du point de terminaison Private Service Connect n'est pas automatiquement annoncée par le routeur cloud aiml-cr-us-central1, car le sous-réseau n'est pas configuré dans le VPC.
Au lieu de cela, vous devrez créer une annonce de routage personnalisée à partir du routeur cloud aiml-cr-us-central pour l'adresse IP du point de terminaison 100.100.10.10 qui sera annoncée dans l'environnement sur site via BGP vers on-prem-vpc.
Dans la console, accédez à CONNECTIVITÉ HYBRIDE → ROUTEURS CLOUD → aiml-cr-us-central1, puis sélectionnez MODIFIER.

Dans la section "Routes annoncées", sélectionnez l'option Créer des routes personnalisées, mettez à jour les champs en fonction de l'exemple ci-dessous, sélectionnez OK,puis cliquez sur ENREGISTRER.

Validation
Vérifier que on-prem-vpc a appris l'adresse IP du point de terminaison PSC via le VPN haute disponibilité
Dans la console, accédez à Réseau VPC → Réseaux VPC → on-prem-vpc → ROUTES → REGION → US-CENTRAL1 → VIEW.

10. Créer des annonces de routage personnalisées pour on-prem-vpc
Le routeur cloud on-prem-vpc annonce tous les sous-réseaux par défaut, mais seul le sous-réseau private-ip-subnet est nécessaire.
Dans la section suivante, mettez à jour les annonces de routage à partir du routeur Cloud Router on-prem-cr-us-central1.
Dans la console, accédez à CONNECTIVITÉ HYBRIDE → ROUTEURS CLOUD → on-prem-cr-us-central1, puis sélectionnez MODIFIER.

Dans la section "Routes annoncées", sélectionnez l'option Créer des routes personnalisées, mettez à jour les champs en fonction de l'exemple ci-dessous, sélectionnez OK,puis cliquez sur ENREGISTRER.

Validation
Vérifiez que aiml-vpc a appris la route private-ip-subnet à partir de l'instance on-prem-vpc.
Dans la console, accédez à Réseau VPC → Réseaux VPC → aiml-vpc → ROUTES → REGION → US-CENTRAL1 → VIEW.

11. Créer un compte de service géré par l'utilisateur (instances GCE)
Pour fournir un contrôle précis à l'API Vertex, un compte de service géré par l'utilisateur est requis. Il sera appliqué aux instances NAT et de client privé. Une fois générées, les autorisations du compte de service peuvent être modifiées en fonction des besoins de l'entreprise. Dans le tutoriel, les rôles suivants seront appliqués au compte de service géré par l'utilisateur, vertex-sa :
Vous devez l'API Service Account avant de continuer.
Dans Cloud Shell, créez le compte de service.
gcloud iam service-accounts create gce-vertex-sa \
--description="service account for vertex" \
--display-name="gce-vertex-sa"
Dans Cloud Shell, mettez à jour le compte de service avec le rôle "Administrateur d'instance Compute".
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:gce-vertex-sa@$projectid.iam.gserviceaccount.com" --role="roles/compute.instanceAdmin.v1"
Dans Cloud Shell, mettez à jour le compte de service avec le rôle Utilisateur Vertex AI.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:gce-vertex-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"
12. Créer un compte de service géré par l'utilisateur (notebook)
Dans la section suivante, vous allez créer un compte de service géré par l'utilisateur qui sera associé à Vertex Workbench (Notebook) utilisé dans le tutoriel.
Dans le tutoriel, les rôles suivants seront appliqués au compte de service :
Dans Cloud Shell, créez le compte de service.
gcloud iam service-accounts create user-managed-notebook-sa \
--display-name="user-managed-notebook-sa"
Dans Cloud Shell, mettez à jour le compte de service avec le rôle "Administrateur Storage".
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.admin"
Dans Cloud Shell, mettez à jour le compte de service avec le rôle Utilisateur Vertex AI.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"
Dans Cloud Shell, mettez à jour le compte de service avec le rôle Administrateur Artifact Registry.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"
Dans Cloud Shell, listez le compte de service et notez l'adresse e-mail qui sera utilisée lors de la création du notebook géré par l'utilisateur.
gcloud iam service-accounts list
13. Création des instances de test
Dans la section suivante, vous allez créer des instances de test pour valider différentes méthodes permettant d'accéder aux API Vertex, en particulier :
- L'instance
nat-client,utilisera Cloud NAT pour résoudre les problèmes d'accès de Vertex AI au point de terminaison de prédiction en ligne via Internet. - L'instance
private-clientutilisera l'adresse IP Private Service Connect 100.100.10.10 pour accéder au point de terminaison de prédiction en ligne via un VPN haute disponibilité.
Dans Cloud Shell, créez l'instance 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"
Dans Cloud Shell, créez l'instance 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"
Pour autoriser Identity-Aware Proxy (IAP) à se connecter à vos instances de VM, créez une règle de pare-feu qui :
- S'applique à toutes les instances de VM auxquelles vous souhaitez être accessible à l'aide d'IAP.
- Autorise le trafic entrant à partir de la plage d'adresses IP 35.235.240.0/20. Cette plage contient toutes les adresses IP qu'IAP utilise pour le transfert TCP.
Dans Cloud Shell, créez la règle de pare-feu 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. Créer un notebook géré par l'utilisateur
Dans la section suivante, créez un notebook géré par l'utilisateur qui intègre le compte de service user-managed-notebook-sa créé précédemment.
Dans Cloud Shell, créez l'instance de client privé.
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. Déployer le modèle et la prédiction en ligne
Dans la section suivante, utilisez l'atelier de programmationVertex AI : utiliser des routines de prédiction personnalisées avec Sklearn pour prétraiter et post-traiter les données pour les prédictions. Commencez par la section 7,car vous avez déjà créé un notebook à l'étape précédente. Une fois le modèle déployé, revenez au tutoriel pour commencer la section suivante.

16. Valider l'accès à l'API Vertex sur Internet
Dans la section suivante, vous vous connecterez à l'instance nat-client et validerez la connectivité à Vertex AI en utilisant dig et tcpdump sur le domaine us-central1-aiplatform.googleapis.com utilisé pour résoudre les API Vertex.
Connectez-vous à nat-client à l'aide d'IAP dans Cloud Shell pour valider la connectivité à l'API Vertex en effectuant une recherche DNS sur le domaine Vertex us-central1-aiplatform.googleapis.com.
gcloud compute ssh nat-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
Exécutez la commande dig.
dig us-central1-aiplatform.googleapis.com
Par exemple, notez les adresses IP publiques dans la réponse 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
Depuis l'OS nat-client, exécutez tcpdump pour valider la résolution DNS lorsque vous effectuez un curl sur la prédiction en ligne.
sudo tcpdump -i any port 53 -n
Exemple :
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
Ouvrez un terminal Cloud Shell en sélectionnant "+". Une fois le nouvel onglet ouvert, mettez à jour la variable du nom du projet.
Dans Cloud Shell, mettez à jour la variable du nom du projet.
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
Dans Cloud Shell 2, effectuez un SSH vers l'instance nat-client.
gcloud compute ssh --zone "us-central1-a" "nat-client" --project "$projectid"
Dans la section suivante, vous allez créer un fichier instances.json à l'aide de l'éditeur sudo VI ou nano, puis insérer la chaîne de données utilisée pour obtenir une prédiction à partir du modèle déployé.
À partir de l'OS nat-client, créez un fichier instances.json avec la chaîne de données ci-dessous :
{"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]]}
Exemple :
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:$
Obtenez l'ID de votre point de terminaison de prédiction en ligne depuis la console Cloud. Vous l'utiliserez lors des étapes suivantes.
Accédez à VERTEX AI → PRÉDICTION EN LIGNE.

À partir de l'OS nat-client, créez les variables suivantes :
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"
Exemple :
ENDPOINT_ID="3328226095324463104"
À partir de l'OS nat-client, exécutez une requête curl pour obtenir une réponse du modèle.
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
Exemple : notez que la prédiction a réussi.
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. Validation : accès Internet à l'API Vertex
Maintenant que vous avez exécuté la prédiction, examinons les résultats TCPDUMP (terminal 1) qui indiquent que l'instance nat-client (192.168.10.2) exécute une requête DNS sur le serveur DNS local 169.254.169.254 pour le domaine Vertex AI us-central1-aiplatform.googleapis.com. Le résultat de la requête DNS correspond aux adresses IP virtuelles publiques (VIP) pour les API Vertex, comme indiqué ci-dessous :
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. Activer l'accès privé aux API Vertex
Dans la section suivante, vous allez accéder aux API Vertex à l'aide de Private Service Connect sur un réseau hybride (VPN haute disponibilité) pour accéder de manière privée à la prédiction en ligne. Dans l'exemple utilisé dans le tutoriel, vous allez mettre à jour le fichier /etc/hosts dans l'instance private-client.
Dans votre environnement sur site, il est approprié de mettre à jour le fichier /etc/hosts d'une ou de plusieurs machines pour les tests. Toutefois, pour les environnements de production à grande échelle, il est préférable de créer une zone de transfert à l'aide du nom de domaine complet du point de terminaison PSC.
Par exemple, le point de terminaison PSC créé dans le tutoriel est appelé "pscvertex", ce qui se traduit par pscvertex.p.googleapis.com.Lorsque vous utilisez le point de terminaison pour Vertex, ajoutez le nom de domaine complet avec le service, par exemple us-central1-aiplatform-pscvertex.p.googleapis.com.
La mise à jour du DNS sur site avec le point de terminaison PSC nécessite également de refactoriser les applications locales pour appeler le nom de domaine complet (FQDN), par exemple us-central1-aiplatform-pscvertex.p.googleapis.com au lieu du point de terminaison public natif us-central1-aiplatform.googleapis.com.
Les clients pouvant être configurés de manière à utiliser un point de terminaison personnalisé peuvent utiliser les noms DNS p.googleapis.com pour envoyer des requêtes à un point de terminaison.
Consultez la documentation de votre client ou de votre bibliothèque cliente pour en savoir plus sur sa configuration afin d'utiliser des points de terminaison personnalisés. Exemple :
- Python : vous pouvez configurer api_endpoint dans la classe d'options client du package google-api-core.
- Go : vous pouvez configurer WithEndpoint dans le package d'options client du package d'API.
- gcloud: You can configure api_endpoint_overrides
Ouvrez un terminal Cloud Shell en sélectionnant "+". Une fois le nouvel onglet ouvert, mettez à jour la variable du nom du projet.
Depuis Cloud Shell.
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
Connectez-vous à private-client à l'aide d'IAP dans une nouvelle session Cloud Shell pour valider la connectivité à l'API Vertex en effectuant une recherche dig sur le domaine Vertex : us-central1-aiplatform.googleapis.com.
Dans Cloud Shell, connectez-vous à l'instance d'OS du client privé.
gcloud compute ssh private-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
Exécutez la commande dig.
dig us-central1-aiplatform.googleapis.com
Par exemple, notez les adresses IP publiques en fonction de la réponse 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
Mettez à jour l'instance client privée /etc/hosts à l'aide de l'éditeur sudo VI ou nano pour créer un enregistrement du nom de domaine complet Vertex AI us-central1-aiplatform.googleapis.com pointant vers le point de terminaison PSC 100.100.10.10. Aucune autre modification n'est requise.
Exemple :
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
À partir de l'OS client privé, effectuez un PING vers le point de terminaison de l'API Vertex.
ping us-central1-aiplatform.googleapis.com
Par exemple, PING renvoie l'adresse IP du point de terminaison PSC, mais aucune réponse n'est attendue.
user@private-client:~$ ping us-central1-aiplatform.googleapis.com
PING us-central1-aiplatform.googleapis.com (100.100.10.10) 56(84) bytes of data.
Depuis l'OS du client privé, exécutez tcpdump pour valider la résolution DNS et le chemin d'accès aux données IP vers le point de terminaison PSC lorsque vous effectuez une requête curl par rapport à la prédiction en ligne.
sudo tcpdump -i any port 53 -n or host 100.100.10.10
Ouvrez un quatrième terminal Cloud Shell en sélectionnant le bouton "+". Une fois le nouvel onglet ouvert, mettez à jour la variable du nom du projet.
Dans Cloud Shell, mettez à jour la variable du nom du projet.
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
Dans Cloud Shell 4, effectuez un SSH vers l'instance private-client.
gcloud compute ssh --zone "us-central1-a" "private-client" --project "$projectid"
Dans la section suivante, vous allez créer un fichier instances.json à l'aide de l'éditeur sudo VI ou nano, puis insérer la chaîne de données utilisée pour obtenir une prédiction à partir du modèle déployé.
À partir de l'OS du client privé, créez un fichier instances.json avec la chaîne de données ci-dessous :
{"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]]}
Exemple :
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:$
À partir de l'OS du client privé, créez les variables suivantes :
gcloud config list project
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"
Exemple :
ENDPOINT_ID="3328226095324463104"
À partir de l'OS client privé dans Cloud Shell 4, exécutez une requête curl pour obtenir une réponse du modèle.
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. Validation : accès privé à l'API Vertex
Depuis l'OS client privé dans Cloud Shell 4, notez que l'adresse IP du point de terminaison PSC (100.100.10.10) a été utilisée pour accéder à l'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
Depuis le terminal TCPDUMP dans Cloud Shell 3, nous pouvons vérifier qu'aucune résolution DNS vers us-central1-aiplatform.googleapis.com n'a été observée, car le fichier /etc/host était prioritaire et l'adresse IP PSC 100.100.10.10 a été utilisée dans le chemin d'accès aux données.
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
Vous avez réussi à valider la connexion à la prédiction en ligne via un point de terminaison public sur Internet et de manière privée à l'aide de la mise en réseau hybride et de Private Service Connect (googleapis). Quittez l'OS pour revenir à l'invite Cloud Shell.
20. Effectuer un nettoyage
Dans Cloud Shell, supprimez les composants du tutoriel.
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
Supprimer des composants Vertex
Pour supprimer l'image de conteneur, accédez à Artifact Registry, sélectionnez le dépôt que vous avez créé, puis cliquez sur Supprimer.

Pour supprimer le bucket de stockage, utilisez le menu de navigation de la console Cloud pour accéder à Stockage, sélectionnez votre bucket, puis cliquez sur Supprimer :

Annulez le déploiement du modèle à partir du point de terminaison. Accédez à Vertex AI → Prédiction en ligne → Sélectionnez diamonds-cpr_endpoint → Annuler le déploiement du modèle sur le point de terminaison → Annuler le déploiement.

Supprimez le modèle. Accédez à Vertex AI > Model Registry > Delete Model (Supprimer le modèle).

Supprimez le point de terminaison de prédiction en ligne. Accédez à VertexAI → Prédiction en ligne → Sélectionnez diamonds-cpr_endpoint → Supprimer le point de terminaison.

21. Félicitations
Félicitations ! Vous avez configuré et validé la connexion à la prédiction en ligne de manière native à l'aide d'Internet, et de manière privée avec Private Service Connect et la mise en réseau hybride.
Vous avez créé un nat-client et un private-client, et vous avez utilisé TCPDUMP pour valider les adresses IP utilisées pour accéder aux API Vertex. Vous avez également découvert Private Service Connect (googleapis) et comment l'utiliser pour isoler les applications sur site et multicloud en tirant parti d'un point de terminaison PSC client.
Cosmopup pense que les tutoriels sont géniaux !

Et ensuite ?
Découvrez quelques-uns de ces tutoriels :
- Private Service Connect pour les API Google
- Vertex AI : créer un notebook sécurisé géré par l'utilisateur
Lectures et vidéos complémentaires
- Présentation de Private Service Connect
- Qu'est-ce que Private Service Connect ?
- Obtenir des prédictions à partir d'un modèle de ML
- Qu'est-ce que Vertex AI ?
