Utiliser Private Service Connect pour accéder à l'IA générative sur Vertex AI depuis une infrastructure sur site


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.

Diagramme d'architecture de Private Service Connect pour accéder à l'IA générative sur Vertex AI.

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.
  • Déployer des passerelles VPN haute disponibilité, des tunnels Cloud VPN et des routeurs Cloud Router pour connecter vertex-networking-vpc et onprem-vpc.
  • Créer un point de terminaison Private Service Connect (PSC) pour transférer les requêtes vers l'API REST GenAI.
  • Configurer une annonce de routage 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. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

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

  1. Dans Google Cloud Console, accédez à la page de sélection du projet.

    Accéder au sélecteur de projet

  2. Sélectionnez ou créez un projet Google Cloud.

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  4. 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.
  5. 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.
  6. Dans Cloud Shell, définissez le projet actuel sur votre ID de projet Google Cloud, puis 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 l'ID du 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.
  7. Attribuez des rôles à votre compte Google. Exécutez la commande suivante une fois pour chacun des rôles IAM suivants : 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:EMAIL_ADDRESS" --role=ROLE
    • en remplaçant PROJECT_ID par l'ID de votre projet :
    • Remplacez EMAIL_ADDRESS par votre adresse e-mail.
    • Remplacez ROLE par chaque rôle individuel.
  8. Activer les API DNS, IAM, Compute Engine, Service Usage, et Vertex AI :

    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

  1. 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
    
  2. Créez le réseau VPC pour simuler le réseau sur site (onprem-vpc) :

    gcloud compute networks create onprem-vpc --subnet-mode custom
    
  3. Dans le réseau onprem-vpc, créez un sous-réseau nommé onprem-vpc-subnet1, avec 172.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
    
  4. Dans la console Google Cloud, accédez à l'onglet Réseaux du projet en cours sur la page Réseau VPC.

    Accéder au réseau VPC

  5. Dans la liste des réseaux VPC, vérifiez que les deux réseaux ont été créés : vertex-networking-vpc et onprem-vpc.

  6. Sur la page Réseau VPC, cliquez sur l'onglet Sous-réseaux dans le projet actuel.

  7. Dans la liste des sous-réseaux VPC, vérifiez que le sous-réseau onprem-vpc-subnet1 a été créé dans le réseau onprem-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é

  1. 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
    
  2. 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
    
  3. Dans la console Google Cloud, accédez à l'onglet Passerelles Cloud VPN sur la page VPN.

    Accéder au VPN

  4. Dans la liste des passerelles VPN, vérifiez que les deux passerelles (vertex-networking-vpn-gw1 et onprem-vpn-gw1) ont été créées et que chacune dispose de deux adresses IP.

Créer des routeurs cloud

  1. 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
    
  2. 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.

  1. 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
    
  2. Dans Google Cloud Console, accédez à la page Routeurs cloud.

    Accéder aux routeurs cloud

  3. Dans la liste des routeurs Cloud Router, vérifiez que vertex-networking-vpc-router1 et onprem-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.

  4. Dans la liste des routeurs Cloud Router, cliquez sur onprem-vpc-router1.

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

  1. 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
    
  2. 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
    
  3. 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
    
  4. 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
    
  5. Dans Google Cloud Console, accédez à la page VPN.

    Accéder au VPN

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

  1. Dans Cloud Shell, dans le réseau vertex-networking-vpc, créez une interface BGP pour vertex-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
    
  2. Dans le réseau vertex-networking-vpc, créez un pair BGP pour bgp-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
    
  3. Dans le réseau vertex-networking-vpc, créez une interface BGP pour vertex-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
    
  4. Dans le réseau vertex-networking-vpc, créez un pair BGP pour bgp-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

  1. Dans le réseau onprem-vpc, créez une interface BGP pour onprem-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
    
  2. Dans le réseau onprem-vpc, créez un pair BGP pour bgp-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
    
  3. Dans le réseau onprem-vpc, créez une interface BGP pour onprem-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
    
  4. Dans le réseau onprem-vpc, créez un pair BGP pour bgp-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

  1. Dans Google Cloud Console, accédez à la page VPN.

    Accéder au VPN

  2. 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 qu'annonce de routage personnalisée pointantvers le réseau onprem-vpc.

  1. 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
    
  2. 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
    
  3. 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
    
  4. 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 annonce de routage 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.

  1. Dans Google Cloud Console, accédez à la page Routeurs cloud.

    Accéder aux routeurs cloud

  2. Dans la liste des routeurs Cloud Router, cliquez sur vertex-networking-vpc-router1.

  3. Sur la page Détails du routeur, cliquez sur  Modifier.

  4. Dans la section Routes annoncées, sélectionnez Créer des routes personnalisées pour le paramètre Routes.

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

  6. Cliquez sur Ajouter une route personnalisée.

  7. Dans Source, sélectionnez Plage d'adresses IP personnalisée.

  8. Dans le champ Plage d'adresses IP, saisissez l'adresse IP suivante :

    192.168.0.1
    
  9. Dans le champ Description, saisissez le texte suivant :

    Custom route to advertise Private Service Connect endpoint IP address
    
  10. Cliquez sur OK, puis sur Enregistrer.

Vérifier que onprem-vpc a appris les routes annoncées

  1. Dans la console Google Cloud, accédez à la page Routes.

    Accéder à la page Routes

  2. Dans l'onglet Routes effectives, procédez comme suit :

    1. Pour Réseau, choisissez onprem-vpc.
    2. Dans le champ Région, choisissez us-central1 (Iowa).
    3. Cliquez sur Afficher.
    4. 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 et onprem-vpc-router1-bgp-vfertex-networking-vpc-tunnel1, et qu'elles utilisent toutes deux 192.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.

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.

  1. 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}
    
  2. Créez le compte de service :

    gcloud iam service-accounts create user-managed-sa
    
  3. 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.
  1. Créer l'instance de VM on-prem-client La commande suivante installe également les packages tcpdump et dnsutils, qui contiennent les utilitaires tcpdump et dig 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=http://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"
    
  2. 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).

  1. 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}
    
  2. 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
    
  3. 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).

  1. Dans l'instance de VM on-prem-client (onglet 1), utilisez un éditeur de texte tel que vim ou nano pour ouvrir le fichier /etc/hosts :

    sudo vim /etc/hosts
    
  2. 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
    
  3. Enregistrez le fichier comme suit :

    • Si vous utilisez vim, appuyez sur la touche Esc, puis saisissez :wq pour enregistrer le fichier et quitter.
    • Si vous utilisez nano, saisissez Control+O et appuyez sur Enter pour enregistrer le fichier, puis saisissez Control+X pour quitter.
  4. 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.
    
  5. Saisissez Control+C pour quitter ping.

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

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

  2. 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}
    
  3. 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
    
  4. Exécutez les commandes suivantes en remplaçant PROJECT_ID par l'ID de votre projet :

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  5. Utilisez un éditeur de texte tel que vim ou nano 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
       }
    }
    
  6. 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 \
       "http://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
             }
          }
       }
    }
    
  7. 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 VM on-prem-client (sous-réseau 172.16.10.0/28).

    Depuis le terminal tcpdump dans Cloud Shell (onglet 1), vous constatez qu'une résolution DNS vers us-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