Vertex AI accède aux points de terminaison de prédiction en ligne de manière privée à l'aide de PSC

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.

24a07ba49a7bcb16.png

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.

b545c808b366341a.png

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

Administrateur DNS

Administrateur réseau

Administrateur de quotas

Administrateur Notebooks

Utilisateur du compte de service

Administrateur de l'espace de stockage

Utilisateur Vertex AI

Administrateur de 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.

66312b1b53c233d7.png

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.

e8e13ebaed09f1.png

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.

cb91b4476a88acd3.png

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

f407ed6e1a6233db.png

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.

7957e5d898a9e7e0.png

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.

c8fb02ed59a5b068.png

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.

5996464e3aae0665.png

f799082ab2cd7e31.png

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.

1b42673e6f940bf2.png

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.

bd96bde9550d516a.png

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.

f8b61f669a9cfeef.png

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.

2b1a7a5f918e9f50.png

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-client utilisera 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

l'API Notebooks

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.

ee68b7ba0cfd2746.png

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.

237d413ccde1e95b.png

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

616a3108bc2e48c8.png

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 :

eddd1f9fdfaede8.png

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.

bc95f092d21d4698.png

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

ec4afff091e11606.png

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.

7453760299bdfb9a.png

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 !

e6d3675ca7c6911f.jpeg

Et ensuite ?

Découvrez quelques-uns de ces tutoriels :

Lectures et vidéos complémentaires

Documents de référence