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 à une 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) à partir de votre réseau sur site. Tous deux proposent un chiffrement SSL/TLS. La connectivité hybride pour la prédiction en ligne via l'interconnexion est plus performante qu'Internet. Par conséquent, elle est recommandée pour les applications critiques, comme illustré dans 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, qui peuvent servir de base pour une connectivité privée multicloud et sur site.

Notez que Vertex Online Prediction est un point de terminaison public. Par conséquent, vous devez 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 API Google. Ce tutoriel ne couvre pas VPC-SC. Pour en savoir plus, consultez la page 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, le 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 à la prédiction en ligne publiquement via Cloud NAT et en privé à l'aide d'un VPN PSC via un VPN haute disponibilité, comme expliqué ci-dessous.

b545c808b366341a.png

Une fois la prédiction en ligne déployée dans le projet Google Cloud, nous explorerons les cas d'utilisation suivants:

L'accès public aux prédictions en ligne comprend les éléments suivants:

  • Créer une instance GCE (nat-client) qui exploite la NAT pour l'accès Internet de sortie
  • Utiliser CURL pour effectuer des inférences sur le modèle
  • Utiliser TCPDUMP pour vérifier que la prédiction en ligne est accessible via une adresse IP virtuelle publique

L'accès privé aux prédictions en ligne comprend les éléments suivants:

  • Déployer un modèle sur un point de terminaison de prédiction en ligne Vertex dans le projet
  • Créer un point de terminaison Private Service Connect (Googleapis) dans aiml-vpc
  • Exporter l'adresse IP PSC sur le routeur cloud en tant qu'annonce personnalisée vers le VPC sur site
  • Créer une instance GCE (client privé) et mettre à jour le fichier etc/hosts avec l'adresse IP du point de terminaison PSC
  • Utiliser CURL pour effectuer des inférences sur le modèle
  • Utiliser TCPDUMP pour vérifier 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
  • Comment annoncer l'adresse IP du point de terminaison PSC via le routeur Cloud Router
  • Comment utiliser TCPDUMP pour valider l'accès aux prédictions en ligne, à la fois public et privé

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 $variables pour faciliter l'implémentation de la configuration gcloud dans Cloud Shell.

Dans Cloud Shell, effectuez les opérations suivantes:

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

3. Activer les services

Dans Cloud Shell, effectuez les opérations suivantes:

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 de aiml-vpc

Créer le VPC aiml-vpc

Dans Cloud Shell, effectuez les opérations suivantes:

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

Créer le sous-réseau du notebook géré par l'utilisateur

Dans Cloud Shell, effectuez les opérations suivantes:

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 Cloud Router et NAT

Cloud NAT est utilisé dans le tutoriel sur le téléchargement de packages logiciels de notebook, car l'instance de notebook gérée 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 à communiquer avec un notebook géré par l'utilisateur, ce qui le rend plus sûr.

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, effectuez les opérations suivantes:

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

Créer le sous-réseau nat-subnet

Dans Cloud Shell, effectuez les opérations suivantes:

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

Créer le sous-réseau "private-ip-subnet"

Dans Cloud Shell, effectuez les opérations suivantes:

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

Configuration Cloud Router et NAT

Ce tutoriel utilise Cloud NAT pour le téléchargement de 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 à communiquer avec le service de calcul, ce qui renforce la sécurité.

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 on-prem-vpc. L'adresse IP PSC 100.100.10.10 sera annoncée depuis 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 dynamiquement des routes entre votre cloud privé virtuel (VPC) et votre réseau appairé à 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 le VPC 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éer 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 le VPC 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, car vous en aurez besoin plus tard 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é

À l'aide de la console, accédez à CONNECTIVITÉ HYBRIDE → VPN → Passerelles CLOUD VPN, puis vérifiez que les adresses IP de la passerelle sont bien générées.

66312b1b53c233d7.png

Créer le routeur cloud pour le VPC aiml-vpc

Dans Cloud Shell, créez le routeur Cloud 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 le VPC on-prem-vpc

Dans Cloud Shell, créez le routeur Cloud 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 VPN 0

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 VPN 1

Dans Cloud Shell, créez le tunnel 1 (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 VPN 0

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 VPN 1

Dans Cloud Shell, créez le tunnel 1 (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

À l'aide de 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 BGP et un appairage 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 BGP et un appairage 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é

À l'aide de la console, accédez à Réseau VPC → Réseaux VPC → aiml-vpc → ROUTES → RÉGION → US-CENTRAL1 → VUE

Notez que aiml-vpc a appris les routes des on-prem-vpc nat-subnet et private-ip-subnet

f407ed6e1a6233db.png

Vérifier que on-prem-vpc a appris le sous-réseau workbench sur HA-VPN

Depuis la console, accédez à Réseau VPC → Réseaux VPC → on-prem-vpc → ROUTES → RÉGION → US-CENTRAL1 → VUE

7957e5d898a9e7e0.png

9. Créer des annonces de routage personnalisées 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.

À la place, vous devez 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 le VPC on-prem-vpc.

Dans la console, accédez à CONNECTIVITÉ HYBRIDE → CLOUD ROUTERS → 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érifiez que on-prem-vpc a appris l'adresse IP du point de terminaison PSC via le VPN haute disponibilité

Depuis la console, accédez à Réseau VPC → Réseaux VPC → on-prem-vpc → ROUTES → RÉGION → US-CENTRAL1 → VUE

1b42673e6f940bf2.png

10. Créer des annonces de routage personnalisées on-prem-vpc

Par défaut, le routeur cloud on-prem-vpc annonce tous les sous-réseaux, mais seul le sous-réseau private-ip-subnet est nécessaire.

Dans la section suivante, mettez à jour les annonces de routage du routeur cloud on-prem-cr-us-central1.

Dans la console, accédez à CONNECTIVITÉ HYBRIDE → CLOUD ROUTERS → 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 du sous-réseau private-ip-subnet à partir du on-prem-vpc.

À l'aide de la console, accédez à Réseau VPC → Réseaux VPC → aiml-vpc → ROUTES → RÉGION → US-CENTRAL1 → VUE

2b1a7a5f918e9f50.png

11. Créer un compte de service géré par l'utilisateur (instances GCE)

Afin de fournir un niveau de contrôle précis à l'API Vertex, un compte de service géré par l'utilisateur est requis. Il sera appliqué aux instances client NAT et privées. Une fois générés, les autorisations du compte de service peuvent être modifiées en fonction des exigences métier. Dans ce 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'instances 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é au 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, attribuez le rôle "Administrateur Artifact Registry" au compte de service.

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 pour créer le notebook géré par l'utilisateur.

gcloud iam service-accounts list

13. créé les 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 Vertex AI et accédera donc 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 rendre accessibles à l'aide d'IAP.
  • Autorise le trafic entrant provenant de la plage d'adresses IP 35.235.240.0/20. Cette plage contient toutes les adresses IP utilisées par IAP 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, vous allez créer un notebook géré par l'utilisateur qui intègre le compte de service créé précédemment, user-managed-notebook-sa.

Dans Cloud Shell, créez l'instance du 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 programmation Vertex AI:Utiliser des routines de prédiction personnalisées avec Sklearn pour prétraiter et post-traiter les données de prédiction, commencez par la section 7, puisque 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 via Internet

Dans la section suivante, vous allez vous connecter à l'instance nat-client et valider la connectivité à Vertex AI à l'aide de dig et tcpdump sur le domaine us-central1-aiplatform.googleapis.com utilisé pour résoudre les API Vertex.

Dans Cloud Shell, connectez-vous à nat-client à l'aide d'IAP pour valider la connectivité à l'API Vertex en effectuant une analyse du domaine de sommet us-central1-aiplatform.googleapis.com.

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

Exécutez la fouille.

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

À partir du système d'exploitation nat-client, exécutez tcpdump pour valider la résolution DNS lors de l'exécution d'une commande curl par rapport à 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 nouveau 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, exécutez une connexion 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 de nano, puis insérer la chaîne de données utilisée pour obtenir une prédiction à partir du modèle déployé.

À partir du système d'exploitation nat-client, créez un fichier instances.json à l'aide de 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 votre ID de point de terminaison de prédiction en ligne dans la console Cloud. Vous en aurez besoin lors des étapes suivantes.

Accédez à VERTEX AI → PRÉDICTION EN LIGNE.

237d413ccde1e95b.png

À partir du système d'exploitation 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 commande 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

Par exemple, notez la prédiction réussie.

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) envoie une requête DNS au 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 est des adresses IP virtuelles (VIPS) publiques 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 via une mise en réseau hybride (VPN haute disponibilité) afin d'obtenir la prédiction en ligne de manière privée. 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, la mise à jour d'un ou de plusieurs fichiers de machines /etc/hosts à des fins de test est appropriée. Toutefois, pour les environnements de production et de grande envergure, il est plus souhaitable de créer une nouvelle zone de transfert à l'aide du nom de domaine complet du point de terminaison PSC.

Par exemple, le point de terminaison psc créé dans ce tutoriel s'appelle "pscvertex" et se traduit par pscvertex.p.googleapis.com.Lorsque vous utilisez le point de terminaison pour Vertex, ajoutez le nom de domaine complet au 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 une refactorisation des applications locales pour appeler le FDQN, 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 pour 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 bibliothèque cliente ou de votre bibliothèque cliente pour savoir comment la configurer 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: vous pouvez configurer api_endpoint_overrides

Ouvrez un nouveau 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 à un client privé à l'aide d'IAP dans une nouvelle session Cloud Shell pour valider la connectivité à l'API Vertex en effectuant une analyse du domaine de sommets us-central1-aiplatform.googleapis.com.

Depuis Cloud Shell, connectez-vous à l'instance de l'OS du client privé.

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

Exécutez la fouille.

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 de client privé /etc/hosts à l'aide de l'éditeur sudo VI ou de nano pour créer un enregistrement du nom de domaine complet Vertext 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 du système d'exploitation du client privé, effectuez un PING au point de terminaison de l'API Vertex.

ping us-central1-aiplatform.googleapis.com

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.

À partir du système d'exploitation du client privé, exécutez tcpdump pour valider la résolution DNS et le chemin de données IP vers le point de terminaison PSC lors de l'exécution d'une commande curl sur 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 "+". 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, exécutez une commande SSH vers une instance de client privé.

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 de nano, puis insérer la chaîne de données utilisée pour obtenir une prédiction à partir du modèle déployé.

À partir du système d'exploitation 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 du système d'exploitation 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"

Depuis l'OS du client privé dans Cloud Shell, exécutez une commande 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 du client privé dans Cloud Shell quatre, 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

À partir du terminal TCPDUMP de Cloud Shell 3, nous pouvons vérifier qu'aucune recherche DNS vers us-central1-aiplatform.googleapis.com n'a été observée puisque le fichier /etc/host était prioritaire, mais que l'adresse IP PSC 100.100.10.10 a été utilisée dans le chemin de 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 validé la connexion à la prédiction en ligne via un point de terminaison public via Internet et de manière privée, à l'aide d'une mise en réseau hybride et de Private Service Connect (googleapis). Quittez l'OS et revenez à 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 les 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, accédez à Stockage, sélectionnez votre bucket, puis cliquez sur Supprimer :

eddd1f9fdfaede8.png

Annuler le déploiement du modèle sur le 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

Supprimer le modèle Accédez à Vertex AI → Registre de modèles → Supprimer le modèle

ec4afff091e11606.png

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

7453760299bdfb9a.png

21. Félicitations

Félicitations ! Vous avez correctement configuré et validé la connexion à la prédiction en ligne de manière native à l'aide d'Internet et de manière privée, grâce à Private Service Connect et à la mise en réseau hybride.

Vous avez créé un client nat-client et un client private, et vous avez utilisé TCPDUMP pour valider les adresses IP utilisées pour accéder aux API Vertex. Par ailleurs, vous avez découvert Private Service Connect (googleapis) et comment l'utiliser pour isoler des applications sur site et multicloud en exploitant un point de terminaison PSC client.

Cosmopup trouve les tutoriels géniaux !

e6d3675ca7c6911f.jpeg

Et ensuite ?

Découvrez quelques-uns de ces tutoriels...

Complément d'informations et Vidéos

Documents de référence