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.
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.
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
Utilisateur du 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.
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.
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.
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
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
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.
Dans la section "Routes annoncées", sélectionnez l'option Créer des routes personnalisées, mettez à jour les champs en fonction de l'exemple ci-dessous, sélectionnez OK,puis cliquez sur ENREGISTRER.
Validation
Vérifiez que 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
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.
Dans la section "Routes annoncées", sélectionnez l'option Créer des routes personnalisées, mettez à jour les champs en fonction de l'exemple ci-dessous, sélectionnez OK,puis cliquez sur ENREGISTRER.
Validation
Vérifiez que aiml-vpc a appris la route 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
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
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.
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.
À 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.
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 :
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
Supprimer le modèle Accédez à Vertex AI → Registre de modèles → Supprimer le modèle
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
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 !
Et ensuite ?
Découvrez quelques-uns de ces tutoriels...
- Private Service Connect pour les API Google
- Vertex AI crée un notebook sécurisé géré par l'utilisateur
Complément d'informations et Vidéos
- Présentation de Private Service Connect
- Qu'est-ce que Private Service Connect ?
- Obtenir des prédictions à partir d'un modèle de ML
- Qu'est-ce que Vertex AI ?