Les hôtes sur site peuvent accéder à l'IA générative sur Vertex AI via l'Internet public ou de manière privée via une architecture de mise en réseau hybride qui utilise Private Service Connect (PSC) via Cloud VPN ou Cloud Interconnect. Les deux options proposent le chiffrement SSL/TLS. Toutefois, l'option privée offre de bien meilleures performances et est donc recommandée pour les applications critiques.
Dans ce tutoriel, vous allez utiliser un VPN haute disponibilité pour accéder à l'IA générative sur Vertex AI, à la fois publiquement via Cloud NAT et de manière privée entre deux réseaux VPC (cloud privé virtuel), qui peuvent servir de base pour une connectivité privée multicloud et sur site.
Ce tutoriel est destiné aux administrateurs réseau d'entreprise, aux data scientists et aux chercheurs qui connaissent déjà Vertex AI, le VPC, la console Google Cloud et Cloud Shell. Une connaissance de l'IA générative sur Vertex AI est utile, mais pas obligatoire.
Objectifs
- Créez deux réseaux VPC, comme illustré dans le schéma précédent :
- L'un (
onprem-vpc
) représente un réseau sur site. - L'autre (
vertex-networking-vpc
) permet d'accéder à l'API REST pour l'IA générative sur Vertex AI.
- L'un (
- Déployer des passerelles VPN haute disponibilité, des tunnels Cloud VPN et des routeurs Cloud Router pour connecter
vertex-networking-vpc
etonprem-vpc
. - Créer un point de terminaison Private Service Connect (PSC) pour transférer les requêtes vers l'API REST GenAI.
- Configurer une route annoncée personnalisée Cloud Router dans
vertex-networking-vpc
pour annoncer les routes du point de terminaison Private Service Connect àonprem-vpc
. - Créer une instance de VM Compute Engine dans
onprem-vpc
pour représenter une application cliente qui envoie des requêtes à l'API REST GenAI via un VPN haute disponibilité
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
-
In the Google Cloud console, go to the project selector page.
-
Select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Si vous n'êtes pas le propriétaire du projet, le propriétaire doit vous accorder le rôle IAM
roles/resourcemanager.projectIamAdmin
. Vous devez disposer de ce rôle pour accorder des rôles et des autorisations IAM à vous-même ainsi qu'à des comptes de service. - Ouvrez Cloud Shell pour exécuter les commandes répertoriées dans ce tutoriel. Cloud Shell est un environnement shell interactif pour Google Cloud qui vous permet de gérer vos projets et vos ressources depuis un navigateur Web.
- Dans Cloud Shell, définissez le projet actuel sur votre ID de projet Google Cloud et stockez le même ID de projet dans la variable de shell
projectid
:projectid="PROJECT_ID" gcloud config set project ${projectid}
Remplacez PROJECT_ID par votre ID de projet. Si nécessaire, vous pouvez le trouver dans la console Google Cloud. Pour en savoir plus, consultez la section Trouver votre ID de projet. -
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/compute.instanceAdmin.v1, roles/compute.networkAdmin, roles/compute.securityAdmin, roles/dns.admin, roles/iap.tunnelResourceAccessor, roles/iam.serviceAccountCreator, roles/iam.serviceAccountUser, roles/iam.serviceAccountDeleter, roles/resourcemanager.projectIamAdmin, roles/servicedirectory.editor, roles/servicemanagement.quotaAdmin, roles/aiplatform.user
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
- Replace
-
Enable the DNS, IAM, Compute Engine, Service Usage, and Vertex AI APIs:
gcloud services enable dns.googleapis.com
iam.googleapis.com compute.googleapis.com serviceusage.googleapis.com aiplatform.googleapis.com
Créer deux réseaux VPC : vertex-networking-vpc
et onprem-vpc
Dans cette section, vous allez créer deux réseaux VPC : l'un pour accéder au réseau principal de Vertex AI (également appelé GenAI), et l'autre pour simuler le réseau sur site.
Créer les réseaux VPC
Créez le réseau VPC permettant d'accéder à l'API GenAI (
vertex-networking-vpc
) :gcloud compute networks create vertex-networking-vpc --subnet-mode custom
Créez le réseau VPC pour simuler le réseau sur site (
onprem-vpc
) :gcloud compute networks create onprem-vpc --subnet-mode custom
Dans le réseau
onprem-vpc
, créez un sous-réseau nomméonprem-vpc-subnet1
, avec172.16.10.0/24
comme plage d'adresses IPv4 principale :gcloud compute networks subnets create onprem-vpc-subnet1 \ --range 172.16.10.0/24 \ --network onprem-vpc \ --region us-central1
Dans la console Google Cloud, accédez à l'onglet Réseaux du projet en cours sur la page Réseau VPC.
Dans la liste des réseaux VPC, vérifiez que les deux réseaux ont été créés :
vertex-networking-vpc
etonprem-vpc
.Sur la page Réseau VPC, cliquez sur l'onglet Sous-réseaux dans le projet actuel.
Dans la liste des sous-réseaux VPC, vérifiez que le sous-réseau
onprem-vpc-subnet1
a été créé dans le réseauonprem-vpc
.
Configurer la connectivité hybride
Dans cette section, vous allez créer deux passerelles VPN haute disponibilité connectées l'une à l'autre. L'une réside dans le réseau VPC vertex-networking-vpc
. L'autre réside dans le réseau VPC onprem-vpc
.
Chaque passerelle contient un routeur Cloud Router et une paire de tunnels VPN.
Créer des passerelles VPN haute disponibilité
Dans Cloud Shell, créez la passerelle VPN haute disponibilité pour le réseau VPC
vertex-networking-vpc
:gcloud compute vpn-gateways create vertex-networking-vpn-gw1 \ --network vertex-networking-vpc \ --region us-central1
Créez la passerelle VPN haute disponibilité pour le réseau VPC
onprem-vpc
:gcloud compute vpn-gateways create onprem-vpn-gw1 \ --network onprem-vpc \ --region us-central1
Dans la console Google Cloud, accédez à l'onglet Passerelles Cloud VPN sur la page VPN.
Dans la liste des passerelles VPN, vérifiez que les deux passerelles (
vertex-networking-vpn-gw1
etonprem-vpn-gw1
) ont été créées et que chacune dispose de deux adresses IP.
Créer des routeurs cloud
Dans Cloud Shell, créez un routeur Cloud Router pour le réseau VPC
vertex-networking-vpc
:gcloud compute routers create vertex-networking-vpc-router1 \ --region us-central1\ --network vertex-networking-vpc \ --asn 65001
Créez un routeur Cloud Router pour le réseau VPC
onprem-vpc
:gcloud compute routers create onprem-vpc-router1 \ --region us-central1\ --network onprem-vpc\ --asn 65002
Ajouter une passerelle Cloud NAT au réseau VPC onprem-vpc
Au cours de cette étape, vous allez ajouter une passerelle Cloud NAT au routeur Cloud Router pour le réseau VPC onprem-vpc
.
Une passerelle Cloud NAT fournit une connectivité sortante pour les instances de machines virtuelles (VM) Compute Engine sans adresse IP externe.
Dans Cloud Shell, ajoutez une passerelle Cloud NAT au routeur Cloud Router
onprem-vpc-router1
:gcloud compute routers nats create us-central-cloudnat-onprem \ --router=onprem-vpc-router1 \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges \ --region us-central1
Dans Google Cloud Console, accédez à la page Routeurs cloud.
Dans la liste des routeurs Cloud Router, vérifiez que
vertex-networking-vpc-router1
etonprem-vpc-router1
ont été créés. Vous devrez peut-être actualiser l'onglet du navigateur de la console Google Cloud pour afficher les nouvelles valeurs.Dans la liste des routeurs Cloud Router, cliquez sur
onprem-vpc-router1
.Sur la page Détails du routeur, vérifiez que la passerelle Cloud NAT
us-central-cloudnat-onprem
a été créée.
Créer des tunnels VPN
Dans le réseau
vertex-networking-vpc
, créez un tunnel VPN appelévertex-networking-vpc-tunnel0
:gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel0 \ --peer-gcp-gateway onprem-vpn-gw1 \ --region us-central1 \ --ike-version 2 \ --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \ --router vertex-networking-vpc-router1 \ --vpn-gateway vertex-networking-vpn-gw1 \ --interface 0
Dans le réseau
vertex-networking-vpc
, créez un tunnel VPN appelévertex-networking-vpc-tunnel1
:gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel1 \ --peer-gcp-gateway onprem-vpn-gw1 \ --region us-central1 \ --ike-version 2 \ --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \ --router vertex-networking-vpc-router1 \ --vpn-gateway vertex-networking-vpn-gw1 \ --interface 1
Dans le réseau
onprem-vpc
, créez un tunnel VPN appeléonprem-vpc-tunnel0
:gcloud compute vpn-tunnels create onprem-vpc-tunnel0 \ --peer-gcp-gateway vertex-networking-vpn-gw1 \ --region us-central1\ --ike-version 2 \ --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \ --router onprem-vpc-router1 \ --vpn-gateway onprem-vpn-gw1 \ --interface 0
Dans le réseau
onprem-vpc
, créez un tunnel VPN appeléonprem-vpc-tunnel1
:gcloud compute vpn-tunnels create onprem-vpc-tunnel1 \ --peer-gcp-gateway vertex-networking-vpn-gw1 \ --region us-central1\ --ike-version 2 \ --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \ --router onprem-vpc-router1 \ --vpn-gateway onprem-vpn-gw1 \ --interface 1
Dans Google Cloud Console, accédez à la page VPN.
Dans la liste des tunnels VPN, vérifiez que les quatre tunnels VPN ont été créés.
Établir des sessions BGP
Cloud Router utilise le protocole BGP (Border Gateway Protocol) pour échanger des routes entre votre réseau VPC (dans ce cas, vertex-networking-vpc
) et votre réseau sur site (représenté par onprem-vpc
). Sur Cloud Router, vous configurez une interface et un pair BGP pour votre routeur sur site.
Ensemble, l'interface et la configuration du pair BGP forment une session BGP.
Dans cette section, vous allez créer deux sessions BGP pour vertex-networking-vpc
et deux pour onprem-vpc
.
Une fois que vous avez configuré les interfaces et les pairs BGP entre vos routeurs, ils commencent automatiquement à échanger des routes.
Établir des sessions BGP pour vertex-networking-vpc
Dans Cloud Shell, dans le réseau
vertex-networking-vpc
, créez une interface BGP pourvertex-networking-vpc-tunnel0
:gcloud compute routers add-interface vertex-networking-vpc-router1 \ --interface-name if-tunnel0-to-onprem \ --ip-address 169.254.0.1 \ --mask-length 30 \ --vpn-tunnel vertex-networking-vpc-tunnel0 \ --region us-central1
Dans le réseau
vertex-networking-vpc
, créez un pair BGP pourbgp-onprem-tunnel0
:gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \ --peer-name bgp-onprem-tunnel0 \ --interface if-tunnel0-to-onprem \ --peer-ip-address 169.254.0.2 \ --peer-asn 65002 \ --region us-central1
Dans le réseau
vertex-networking-vpc
, créez une interface BGP pourvertex-networking-vpc-tunnel1
:gcloud compute routers add-interface vertex-networking-vpc-router1 \ --interface-name if-tunnel1-to-onprem \ --ip-address 169.254.1.1 \ --mask-length 30 \ --vpn-tunnel vertex-networking-vpc-tunnel1 \ --region us-central1
Dans le réseau
vertex-networking-vpc
, créez un pair BGP pourbgp-onprem-tunnel1
:gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \ --peer-name bgp-onprem-tunnel1 \ --interface if-tunnel1-to-onprem \ --peer-ip-address 169.254.1.2 \ --peer-asn 65002 \ --region us-central1
Établir des sessions BGP pour onprem-vpc
Dans le réseau
onprem-vpc
, créez une interface BGP pouronprem-vpc-tunnel0
:gcloud compute routers add-interface onprem-vpc-router1 \ --interface-name if-tunnel0-to-vertex-networking-vpc \ --ip-address 169.254.0.2 \ --mask-length 30 \ --vpn-tunnel onprem-vpc-tunnel0 \ --region us-central1
Dans le réseau
onprem-vpc
, créez un pair BGP pourbgp-vertex-networking-vpc-tunnel0
:gcloud compute routers add-bgp-peer onprem-vpc-router1 \ --peer-name bgp-vertex-networking-vpc-tunnel0 \ --interface if-tunnel0-to-vertex-networking-vpc \ --peer-ip-address 169.254.0.1 \ --peer-asn 65001 \ --region us-central1
Dans le réseau
onprem-vpc
, créez une interface BGP pouronprem-vpc-tunnel1
:gcloud compute routers add-interface onprem-vpc-router1 \ --interface-name if-tunnel1-to-vertex-networking-vpc \ --ip-address 169.254.1.2 \ --mask-length 30 \ --vpn-tunnel onprem-vpc-tunnel1 \ --region us-central1
Dans le réseau
onprem-vpc
, créez un pair BGP pourbgp-vertex-networking-vpc-tunnel1
:gcloud compute routers add-bgp-peer onprem-vpc-router1 \ --peer-name bgp-vertex-networking-vpc-tunnel1 \ --interface if-tunnel1-to-vertex-networking-vpc \ --peer-ip-address 169.254.1.1 \ --peer-asn 65001 \ --region us-central1
Valider la création de la session BGP
Dans Google Cloud Console, accédez à la page VPN.
Dans la liste des tunnels VPN, vérifiez que la valeur du champ État de la session BGP pour chacun des tunnels est passée de Configurer la session BGP à BGP établi. Vous devrez peut-être actualiser l'onglet du navigateur de la console Google Cloud pour afficher les nouvelles valeurs.
Créer le point de terminaison Private Service Connect (PSC)
Dans cette section, vous allez créer un point de terminaison Private Service Connect (PSC) pour les API Google que les instances de VM du réseau onprem-vpc
utiliseront pour accéder à l'API GenAI à partir de votre réseau onprem-vpc
.
Le point de terminaison Private Service Connect (PSC) est une adresse IP interne du réseau onprem-vpc
qui est accessible directement aux clients de ce réseau. Ce point de terminaison est créé en déployant une règle de transfert qui dirige le trafic réseau correspondant à l'adresse IP du point de terminaison PSC vers un groupe d'API Google : plus particulièrement le bundle all-apis.
L'adresse IP du point de terminaison PSC (192.168.0.1
) sera annoncée ultérieurement à partir du routeur Cloud Router vertex-networking-vpc-router
, en tant que route annoncée personnalisée pointant vers le réseau onprem-vpc
.
Réservez une adresse IP interne globale à attribuer au point de terminaison :
gcloud compute addresses create psc-googleapi-ip \ --global \ --purpose=PRIVATE_SERVICE_CONNECT \ --addresses=192.168.0.1 \ --network=vertex-networking-vpc
Créez le point de terminaison, ainsi qu'une règle de transfert qui le connecte aux API et services Google :
gcloud compute forwarding-rules create pscvertex \ --global \ --network=vertex-networking-vpc\ --address=psc-googleapi-ip \ --target-google-apis-bundle=all-apis
Référencez les points de terminaison configurés PSC et vérifiez que le point de terminaison
pscvertex
a été créé :gcloud compute forwarding-rules list \ --filter target="(all-apis OR vpc-sc)" --global
Obtenez les détails du point de terminaison PSC configuré et vérifiez que l'adresse IP est
192.168.0.1
:gcloud compute forwarding-rules describe \ pscvertex --global
Créer des annonces de routage personnalisées pour vertex-networking-vpc
Dans cette section, vous allez créer une route annoncée personnalisée pour vertex-networking-vpc-router1
(le routeur Cloud Router pour vertex-networking-vpc
) afin d'annoncer l'adresse IP du point de terminaison PSC au réseau onprem-vpc
.
Dans Google Cloud Console, accédez à la page Routeurs cloud.
Dans la liste des routeurs Cloud Router, cliquez sur
vertex-networking-vpc-router1
.Sur la page Détails du routeur, cliquez sur
Modifier.Dans la section Routes annoncées, sélectionnez Créer des routes personnalisées pour le paramètre Routes.
Sélectionnez Diffuser tous les sous-réseaux visibles par Cloud Router pour continuer à annoncer les sous-réseaux disponibles pour le routeur cloud. Cette option imite le comportement de Cloud Router en mode d'annonce par défaut.
Cliquez sur Ajouter une route personnalisée.
Dans Source, sélectionnez Plage d'adresses IP personnalisée.
Dans le champ Plage d'adresses IP, saisissez l'adresse IP suivante :
192.168.0.1
Dans le champ Description, saisissez le texte suivant :
Custom route to advertise Private Service Connect endpoint IP address
Cliquez sur OK, puis sur Enregistrer.
Vérifier que onprem-vpc
a appris les routes annoncées
Dans la console Google Cloud, accédez à la page Routes.
Dans l'onglet Routes effectives, procédez comme suit :
- Pour Réseau, choisissez
onprem-vpc
. - Dans le champ Région, choisissez
us-central1 (Iowa)
. - Cliquez sur Afficher.
Dans la liste des routes, vérifiez qu'il existe des entrées dont le nom commence par
onprem-vpc-router1-bgp-vertex-networking-vpc-tunnel0
etonprem-vpc-router1-bgp-vfertex-networking-vpc-tunnel1
, et qu'elles utilisent toutes deux192.168.0.1/32
comme Plage d'adresses IP de destination. (192.168.0.1
est l'adresse IP du point de terminaison PSC).Si ces entrées n'apparaissent pas immédiatement, attendez quelques minutes, puis actualisez l'onglet de navigateur de la console Google Cloud.
- Pour Réseau, choisissez
Configurer une instance de VM dans le réseau sur site
Dans cette section, vous créez une instance de VM Compute Engine dans le réseau VPC onprem-vpc
. Cette instance de VM simule un client sur site qui se connecte au point de terminaison PSC et accède à l'API GenAI.
Créer un compte de service géré par l'utilisateur
Dans ce tutoriel, vous allez créer un compte de service géré par l'utilisateur en suivant les bonnes pratiques Compute Engine et IAM.
Dans Cloud Shell, exécutez les commandes suivantes, en remplaçant PROJECT_ID par votre ID de projet :
projectid=PROJECT_ID gcloud config set project ${projectid}
Créez le compte de service :
gcloud iam service-accounts create user-managed-sa
Attribuez le rôle IAM Utilisateur Vertex AI (
roles/aiplatform.user
) au compte de service :gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:user-managed-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/aiplatform.user"
Créer l'instance de VM on-prem-client
Au cours de cette étape, vous allez créer l'instance de VM qui utilise l'adresse IP Private Service Connect (192.168.0.1
) pour accéder aux API Google via un VPN haute disponibilité.
Pour autoriser Identity-Aware Proxy (IAP) à se connecter à vos instances de VM, vous devez créer une règle de pare-feu qui :
- S'applique à toutes les instances de VM que vous souhaitez rendre accessibles via IAP. (Dans le cas présent, il n'y a que
on-prem-client
.) - Autorise le trafic TCP via le port 22 à partir de la plage d'adresses IP
35.235.240.0/20
. Contient toutes les adresses IP qu'IAP utilise pour le transfert TCP.
Créer l'instance de VM
on-prem-client
La commande suivante installe également les packagestcpdump
etdnsutils
, qui contiennent les utilitairestcpdump
etdig
que vous utiliserez plus tard pour valider vos requêtes API :gcloud compute instances create on-prem-client \ --zone=us-central1-a \ --image-family=debian-11 \ --image-project=debian-cloud \ --subnet=onprem-vpc-subnet1 \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --no-address \ --shielded-secure-boot \ --service-account=user-managed-sa@$projectid.iam.gserviceaccount.com \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install tcpdump dnsutils -y"
Créez une règle de pare-feu IAP nommée
ssh-iap-on-prem-vpc
:gcloud compute firewall-rules create ssh-iap-on-prem-vpc \ --network onprem-vpc \ --allow tcp:22 \ --source-ranges=35.235.240.0/20
Valider l'accès à l'Internet public pour l'IA générative sur Vertex AI
Dans cette section, vous vous connectez à l'instance de VM on-prem-client
à l'aide d'Identity-Aware Proxy, puis vous validez la connectivité publique aux API Vertex AI (y compris GenAI) en exécutant la commande dig
sur le domaine public Vertex AI (us-central1-aiplatform.googleapis.com
).
Dans Cloud Shell (onglet 1), exécutez les commandes suivantes, en remplaçant PROJECT_ID par votre ID de projet :
projectid=PROJECT_ID gcloud config set project ${projectid}
Connectez-vous à l'instance de VM
on-prem-client
à l'aide d'IAP :gcloud compute ssh on-prem-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
Exécutez la commande
dig
:dig us-central1-aiplatform.googleapis.com
Un résultat
dig
semblable à ce qui suit doit s'afficher, où les adresses IP de la section de réponse sont des adresses IP publiques :; <<>> DiG 9.16.44-Debian <<>> us-central1.aiplatfom.googleapis.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42506 ;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;us-central1.aiplatfom.googleapis.com. IN A ;; ANSWER SECTION: us-central1.aiplatfom.googleapis.com. 300 IN A 173.194.192.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.250.152.95 us-central1.aiplatfom.googleapis.com. 300 IN A 172.217.219.95 us-central1.aiplatfom.googleapis.com. 300 IN A 209.85.146.95 us-central1.aiplatfom.googleapis.com. 300 IN A 209.85.147.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.250.125.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.250.136.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.250.148.95 us-central1.aiplatfom.googleapis.com. 300 IN A 209.85.200.95 us-central1.aiplatfom.googleapis.com. 300 IN A 209.85.234.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.251.171.95 us-central1.aiplatfom.googleapis.com. 300 IN A 108.177.112.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.250.128.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.251.6.95 us-central1.aiplatfom.googleapis.com. 300 IN A 172.217.212.95 us-central1.aiplatfom.googleapis.com. 300 IN A 74.125.124.95 ;; Query time: 8 msec ;; SERVER: 169.254.169.254#53(169.254.169.254) ;; WHEN: Wed Sep 27 04:10:16 UTC 2023 ;; MSG SIZE rcvd: 321
Configurer et valider un accès privé à l'IA générative sur Vertex AI
Dans cette section, vous configurez l'accès privé à l'IA générative sur Vertex AI de sorte que, lorsque vous envoyez des requêtes au point de terminaison de service public (us-central1-aiplatform.googleapis.com
), elles sont redirigées vers votre point de terminaison PSC. Le point de terminaison PSC transfère à son tour la requête
Mettre à jour le fichier /etc/hosts
pour qu'il pointe vers le point de terminaison PSC
Au cours de cette étape, vous allez ajouter une ligne au fichier /etc/hosts
qui entraîne la redirection des requêtes envoyées au point de terminaison du service public (us-central1-aiplatform.googleapis.com
) vers le point de terminaison PSC (192.168.0.1
).
Dans l'instance de VM
on-prem-client
(onglet 1), utilisez un éditeur de texte tel quevim
ounano
pour ouvrir le fichier/etc/hosts
:sudo vim /etc/hosts
Ajoutez la ligne suivante au fichier :
192.168.0.1 us-central1-aiplatform.googleapis.com
Cette ligne attribue l'adresse IP du point de terminaison PSC (
192.168.0.1
) au nom de domaine complet de l'API Google Vertex AI (us-central1-aiplatform.googleapis.com
).Le fichier modifié doit se présenter comme suit :
127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 192.168.0.1 us-central1-aiplatform.googleapis.com # Added by you 172.16.10.6 on-prem-client.us-central1-a.c.vertex-genai-400103.internal on-prem-client # Added by Google 169.254.169.254 metadata.google.internal # Added by Google
Enregistrez le fichier comme suit :
- Si vous utilisez
vim
, appuyez sur la toucheEsc
, puis saisissez:wq
pour enregistrer le fichier et quitter. - Si vous utilisez
nano
, saisissezControl+O
et appuyez surEnter
pour enregistrer le fichier, puis saisissezControl+X
pour quitter.
- Si vous utilisez
Pinguez le point de terminaison Vertex AI comme suit :
ping us-central1-aiplatform.googleapis.com
La commande
ping
doit renvoyer le résultat suivant.192.168.0.1
correspond à l'adresse IP du point de terminaison PSC :PING us-central1-aiplatform.googleapis.com (192.168.0.1) 56(84) bytes of data.
Saisissez
Control+C
pour quitterping
.Exécutez la commande
tcpdump
suivante pour valider la résolution DNS et le chemin d'accès aux données IP lorsque vous envoyez une requête de prédiction en ligne au point de terminaison :sudo tcpdump -i any port 53 -n or host 192.168.0.1
Créer la requête privée
Au cours de cette étape, vous allez créer un fichier texte nommé request.json
contenant la charge utile d'un exemple de requête curl
que vous envoyez à l'API REST GenAI.
Pour en savoir plus sur les exemples de requêtes, consultez la page Exemple de requête.
Si vous exécutez la commande
tcpdump
dans l'onglet 1, ouvrez une nouvelle session Cloud Shell (onglet 2) en cliquant sur Ouvrir un nouvel onglet dans Cloud Shell.Dans la nouvelle session Cloud Shell (onglet 2), exécutez les commandes suivantes, en remplaçant PROJECT_ID par votre ID de projet :
projectid=PROJECT_ID gcloud config set project ${projectid}
Connectez-vous à l'instance de VM
on-prem-client
à l'aide d'IAP :gcloud compute ssh on-prem-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
Exécutez les commandes suivantes en remplaçant PROJECT_ID par l'ID de votre projet :
projectid=PROJECT_ID gcloud config set project ${projectid}
Utilisez un éditeur de texte tel que
vim
ounano
pour créer un fichier nommérequest.json
et contenant le texte suivant :{ "instances": [ { "prompt": "Give me ten interview questions for the role of program manager."} ], "parameters": { "temperature": 0.2, "maxOutputTokens": 256, "topK": 40, "topP": 0.95 } }
Exécutez la commande suivante pour envoyer une requête au point de terminaison PSC, qui transfère la requête à l'API GenAI. Lorsque le point de terminaison reçoit la réponse, il la transmet à la VM
on-prem-client
:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://us-central1-aiplatform.googleapis.com/v1/projects/$projectid/locations/us-central1/publishers/google/models/text-bison:predict"
Un résultat semblable à l'exemple suivant doit s'afficher :
{ "predictions": [ { "content": " 1. **What is your experience in managing programs?**\n2. **What are your strengths and weaknesses as a program manager?**\n3. **What is your approach to managing a program?**\n4. **How do you handle risks and challenges in a program?**\n5. **How do you communicate with stakeholders in a program?**\n6. **How do you measure the success of a program?**\n7. **What is your experience in working with cross-functional teams?**\n8. **What is your experience in managing budgets and resources?**\n9. **What is your experience in managing change in a program?**\n10. **What are your career goals as a program manager?**", "citationMetadata": { "citations": [] }, "safetyAttributes": { "categories": [ "Finance", "Health" ], "blocked": false, "scores": [ 0.6, 0.1 ] } } ], "metadata": { "tokenMetadata": { "outputTokenCount": { "totalBillableCharacters": 505, "totalTokens": 153 }, "inputTokenCount": { "totalBillableCharacters": 54, "totalTokens": 12 } } } }
Dans l'onglet 1, vérifiez que l'adresse IP du point de terminaison PSC (
192.168.0.1
) a été utilisée pour accéder aux API Vertex AI à partir de l'instance de VMon-prem-client
(sous-réseau172.16.10.0/28
).Depuis le terminal
tcpdump
dans Cloud Shell (onglet 1), vous constatez qu'une résolution DNS versus-central1-aiplatform.googleapis.com
n'est pas nécessaire, car la ligne que vous avez ajoutée à/etc/hosts
est prioritaire, et l'adresse IP du point de terminaison PSC (192.168.0.1
) est utilisée dans le chemin d'accès aux données.Vous devriez voir une sortie
tcpdump
similaire à ce qui suit :23:48:49.938797 ens4 Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [P.], seq 2054:2093, ack 6264, win 501, options [nop,nop,TS val 2943864305 ecr 2340789954], length 39 23:48:49.938947 ens4 Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [P.], seq 2093:2117, ack 6264, win 501, options [nop,nop,TS val 2943864305 ecr 2340789954], length 24 23:48:49.939839 ens4 Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [F.], seq 2117, ack 6264, win 501, options [nop,nop,TS val 2943864306 ecr 2340789954], length 0 23:48:49.940292 ens4 In IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [.], ack 2117, win 272, options [nop,nop,TS val 2340789958 ecr 2943864305], length 0 23:48:49.940437 ens4 In IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [F.], seq 6264, ack 2117, win 272, options [nop,nop,TS val 2340789958 ecr 2943864305], length 0 23:48:49.940442 ens4 Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [.], ack 6265, win 501, options [nop,nop,TS val 2943864307 ecr 2340789958], length 0 23:48:49.941193 ens4 In IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [.], ack 2118, win 272, options [nop,nop,TS val 2340789959 ecr 2943864306], length 0
Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez chaque ressource individuellement.
Vous pouvez supprimer les ressources individuelles du projet en exécutant les commandes suivantes dans Cloud Shell :
projectid=PROJECT_ID
gcloud config set project ${projectid}
gcloud compute firewall-rules delete ssh-iap-on-prem-vpc --quiet
gcloud compute instances delete on-prem-client --zone=us-central1-a --quiet
gcloud iam service-accounts delete user-managed-sa@$projectid.iam.gserviceaccount.com --quiet
gcloud compute forwarding-rules delete pscvertex --global --quiet
gcloud compute addresses delete psc-googleapi-ip --global --quiet
gcloud compute vpn-tunnels delete vertex-networking-vpc-tunnel0 vertex-networking-vpc-tunnel1 onprem-vpc-tunnel0 onprem-vpc-tunnel1 --region=us-central1 --quiet
gcloud compute routers nats delete us-central-cloudnat-onprem --router=onprem-vpc-router1 --region=us-central1 --quiet
gcloud compute routers delete vertex-networking-vpc-router1 onprem-vpc-router1 --region=us-central1 --quiet
gcloud compute vpn-gateways delete vertex-networking-vpn-gw1 onprem-vpn-gw1 --region=us-central1 --quiet
gcloud compute networks subnets delete onprem-vpc-subnet1 --region=us-central1 --quiet
gcloud compute networks delete onprem-vpc --quiet
gcloud compute networks delete vertex-networking-vpc --quiet
Étapes suivantes
- Découvrez les options de mise en réseau d'entreprise pour accéder aux points de terminaison et aux services Vertex AI.
- Découvrez comment accéder aux services publiés via des points de terminaison.
- Découvrez comment fonctionne Private Service Connect et ses avantages significatifs en termes de performances.
- Découvrez comment accéder aux API Google via des points de terminaison.
- Découvrez comment et pourquoi utiliser une zone de transfert DNS plutôt que de modifier le fichier
/etc/hosts
dans des environnements de production à grande échelle. - En savoir plus sur les routes annoncées personnalisées.