Private Service Connect für den Zugriff auf einen Vektorsuchindex von lokalen Umgebungen verwenden


Lokale Hosts können einen Vektorsuchindex entweder über das öffentliche Internet oder privat über eine hybride Netzwerkarchitektur erreichen, die Private Service Connect (PSC) über Cloud VPN oder Cloud Interconnect verwendet. Beide Optionen bieten eine SSL/TLS-Verschlüsselung. Die private Option bietet jedoch eine viel bessere Leistung und wird daher für kritische Anwendungen empfohlen.

In dieser Anleitung verwenden Sie ein Hochverfügbarkeits-VPN (HA VPN), um privat auf einen Vektorsuchindex-Endpunkt zwischen zwei Virtual Private Cloud-Netzwerken (VPC) zuzugreifen, die als Grundlage für private Konnektivität in Multi-Cloud- und lokalen Umgebungen dienen können.

Diese Anleitung richtet sich an Unternehmensnetzwerkadministratoren, Data Scientists und Forscher, die mit Vertex AI, Virtual Private Cloud, der Google Cloud Console und Cloud Shell vertraut sind. Vertrautheit mit der Vektorsuche ist hilfreich, aber nicht erforderlich.

Architekturdiagramm zur Verwendung von Private Service Connect für den Zugriff auf einen Vektorsuchindex von lokalen Umgebungen aus.

Lernziele

  • Erstellen Sie zwei VPC-Netzwerke, wie im vorherigen Diagramm dargestellt:
    • Das eine (onprem-vpc) steht für ein lokales Netzwerk.
    • Das andere (vertex-networking-vpc) ist für den Vektorsuchindex-Endpunkt.
  • Stellen Sie HA VPN-Gateways, Cloud VPN-Tunnel und Cloud Router bereit, um vertex-networking-vpc und onprem-vpc zu verbinden.
  • Erstellen Sie einen Vektorsuchindex und stellen Sie ihn bereit.
  • Erstellen Sie einen PSC-Endpunkt (Private Service Connect), um Abfragen an den Vektorsuchindex-Endpunkt weiterzuleiten.
  • Konfigurieren Sie ein benutzerdefiniertes Cloud Router Route Advertisement in vertex-networking-vpc, um Routen für den Private Service Connect-Endpunkt gegenüber onprem-vpc anzukündigen.
  • Erstellen Sie eine Compute Engine-VM-Instanz in onprem-vpc, um eine Clientanwendung darzustellen, die Anfragen über HA VPN an den Vektorsuchindex-Endpunkt sendet.

Kosten

In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.

Hinweise

  1. Rufen Sie in der Google Cloud Console die Seite für die Projektauswahl auf.

    Zur Projektauswahl

  2. Wählen Sie ein Google Cloud-Projekt aus oder erstellen Sie eines.

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. Öffnen Sie Cloud Shell, um die in dieser Anleitung aufgeführten Befehle auszuführen. Cloud Shell ist eine interaktive Shell-Umgebung für Google Cloud, mit der Sie Projekte und Ressourcen über Ihren Webbrowser verwalten können.
  5. Legen Sie in Cloud Shell das aktuelle Projekt auf Ihre Google Cloud-Projekt-ID fest und speichern Sie dann dieselbe Projekt-ID in der Shell-Variablen projectid:
      projectid="PROJECT_ID"
      gcloud config set project ${projectid}
    Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID. Sie finden Ihre Projekt-ID gegebenenfalls in der Google Cloud Console. Weitere Informationen finden Sie unter Projekt-ID ermitteln.
  6. Wenn Sie nicht der Projektinhaber sind, bitten Sie den Projektinhaber, Ihnen die Rolle Projekt-IAM-Administrator (roles/resourcemanager.projectIamAdmin) zuzuweisen. Sie benötigen diese Rolle, um im nächsten Schritt IAM-Rollen zuzuweisen.
  7. Gewähren Sie Ihrem Google-Konto Rollen. Führen Sie den folgenden Befehl für jede der folgenden IAM-Rollen einmal aus: roles/aiplatform.user, roles/compute.instanceAdmin.v1, roles/compute.networkAdmin, roles/compute.securityAdmin, roles/dns.admin, roles/iam.serviceAccountAdmin, roles/iam.serviceAccountUser, roles/iap.admin, roles/iap.tunnelResourceAccessor, roles/notebooks.admin, roles/servicemanagement.quotaAdmin, roles/servicedirectory.editor, roles/storage.admin, roles/aiplatform.admin, roles/aiplatform.user, roles/resourcemanager.projectIamAdmin

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
    • Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.
    • Ersetzen Sie EMAIL_ADDRESS durch Ihre E-Mail-Adresse.
    • Ersetzen Sie ROLE durch jede einzelne Rolle.
  8. Aktivieren Sie die DNS, IAM, Compute Engine, Notebooks, und Vertex AI APIs:

    gcloud services enable dns.googleapis.com iam.googleapis.com compute.googleapis.com notebooks.googleapis.com aiplatform.googleapis.com

VPC-Netzwerke erstellen

In diesem Abschnitt erstellen Sie zwei VPC-Netzwerke: eines zum Erstellen eines Vektorsuchindex und für die Bereitstellung auf einem Endpunkt, das andere für den privaten Zugriff auf diesen Endpunkt.

Erstellen Sie das VPC-Netzwerk für den Vektorsuchindex-Endpunkt (vertex-networking-vpc).

  1. Erstellen Sie das VPC-Netzwerk für den Indexendpunkt:

    gcloud compute networks create vertex-networking-vpc --project=$projectid --subnet-mode custom
    
  2. Erstellen Sie ein Subnetz mit dem Namen workbench-subnet und den primären IPv4-Bereich 172.16.20.0/28:

    gcloud compute networks subnets create workbench-subnet \
      --project=$projectid --range=172.16.20.0/28 \
      --network=vertex-networking-vpc \
      --region=us-central1 \
      --enable-private-ip-google-access
    
  3. Erstellen Sie ein Subnetz mit dem Namen consumer-endpoint-subnet mit einem primären IPv4-Bereich von 172.16.30.0/28:

    gcloud compute networks subnets create consumer-endpoint-subnet \
      --project=$projectid \
      --range=172.16.30.0/28 \
      --network=vertex-networking-vpc \
      --region=us-central1 \
      --enable-private-ip-google-access
    

VPC-Netzwerk für den privaten Zugriff auf den Endpunkt (onprem-vpc) erstellen

  1. Erstellen Sie das VPC-Netzwerk, um das lokale Netzwerk (onprem-vpc) zu simulieren:

    gcloud compute networks create onprem-vpc \
      --subnet-mode custom
    
  2. Erstellen Sie im Netzwerk onprem-vpc ein Subnetz mit dem Namen onprem-vpc-subnet1 und dem primären IPv4-Bereich von 172.16.10.0/29:

    gcloud compute networks subnets create onprem-vpc-subnet1 \
      --network onprem-vpc \
      --range 172.16.10.0/29 \
      --region us-central1
    

Prüfen, ob die VPC-Netzwerke richtig konfiguriert sind

  1. Rufen Sie in der Google Cloud Console auf der Seite VPC-Netzwerke den Tab Netzwerke im aktuellen Projekt auf.

    Zur Seite VPC-Netzwerke

  2. Prüfen Sie in der Liste der VPC-Netzwerke, ob die beiden Netzwerke erstellt wurden: vertex-networking-vpc und onprem-vpc.

  3. Klicken Sie auf den Tab Subnetze im aktuellen Projekt.

  4. Prüfen Sie in der Liste der VPC-Subnetze, ob die Subnetze workbench-subnet, consumer-endpoint-subnet und onprem-vpc-subnet1 erstellt wurden.

on-prem-client VM-Instanz erstellen

In diesem Abschnitt erstellen Sie eine VM-Instanz, die eine Clientanwendung darstellt, die Anfragen über HA VPN an den Vektorsuchindex-Endpunkt sendet.

  1. Erstellen Sie in Cloud Shell die VM-Instanz on-prem-client:

    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 \
      --metadata startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install tcpdump dnsutils -y"
    
    

Hybridkonnektivität konfigurieren

In diesem Abschnitt erstellen Sie zwei HA VPN-Gateways, die miteinander verbunden sind. Eines befindet sich im VPC-Netzwerk vertex-networking-vpc. Das andere befindet sich im VPC-Netzwerk onprem-vpc. Jedes Gateway enthält einen Cloud Router und ein VPN-Tunnelpaar.

HA VPN-Gateways erstellen

  1. Erstellen Sie in der Cloud Shell das HA VPN-Gateway für das VPC-Netzwerk vertex-networking-vpc:

    gcloud compute vpn-gateways create vertex-networking-vpn-gw1 \
       --network vertex-networking-vpc \
       --region us-central1
    
  2. Erstellen Sie das HA VPN-Gateway für das VPC-Netzwerk onprem-vpc:

    gcloud compute vpn-gateways create onprem-vpn-gw1 \
       --network onprem-vpc \
       --region us-central1
    
  3. Wechseln Sie in der Google Cloud Console auf der Seite VPN zum Tab Cloud VPN-Gateways.

    Zu VPN

  4. Prüfen Sie, ob die beiden Gateways (vertex-networking-vpn-gw1 und onprem-vpn-gw1) erstellt wurden und jeweils zwei Schnittstellen-IP-Adressen haben.

Cloud Router und Cloud NAT-Gateways erstellen

In jedem der beiden VPC-Netzwerke erstellen Sie zwei Cloud Router: einen allgemeinen und einen regionalen. In jedem der regionalen Cloud Router erstellen Sie ein Cloud NAT-Gateway. Cloud NAT-Gateways bieten ausgehende Verbindungen für Compute Engine-VM-Instanzen ohne externe IP-Adressen.

  1. Erstellen Sie in der Cloud Shell einen Cloud Router für das VPC-Netzwerk vertex-networking-vpc:

    gcloud compute routers create vertex-networking-vpc-router1 \
       --region us-central1\
       --network vertex-networking-vpc \
       --asn 65001
    
  2. Erstellen Sie einen Cloud Router für das VPC-Netzwerk onprem-vpc:

    gcloud compute routers create onprem-vpc-router1 \
       --region us-central1\
       --network onprem-vpc\
       --asn 65002
    
  3. Erstellen Sie einen regionalen Cloud Router für das VPC-Netzwerk vertex-networking-vpc:

    gcloud compute routers create cloud-router-us-central1-vertex-nat \
      --network vertex-networking-vpc \
      --region us-central1
    
  4. Konfigurieren Sie ein Cloud NAT-Gateway auf dem regionalen Cloud Router:

    gcloud compute routers nats create cloud-nat-us-central1 \
      --router=cloud-router-us-central1-vertex-nat \
      --auto-allocate-nat-external-ips \
      --nat-all-subnet-ip-ranges \
      --region us-central1
    
  5. Erstellen Sie einen regionalen Cloud Router für das VPC-Netzwerk onprem-vpc:

    gcloud compute routers create cloud-router-us-central1-onprem-nat \
      --network onprem-vpc \
      --region us-central1
    
  6. Konfigurieren Sie ein Cloud NAT-Gateway auf dem regionalen Cloud Router:

    gcloud compute routers nats create cloud-nat-us-central1-on-prem \
      --router=cloud-router-us-central1-onprem-nat \
      --auto-allocate-nat-external-ips \
      --nat-all-subnet-ip-ranges \
      --region us-central1
    
  7. Wechseln Sie in der Google Cloud Console zur Seite Cloud Routers.

    Zu "Cloud Router"

  8. Prüfen Sie in der Liste Cloud Router, ob die folgenden Router erstellt wurden:

    • cloud-router-us-central1-onprem-nat
    • cloud-router-us-central1-vertex-nat
    • onprem-vpc-router1
    • vertex-networking-vpc-router1

    Möglicherweise müssen Sie den Browsertab der Google Cloud Console aktualisieren, um die neuen Werte zu sehen.

  9. Klicken Sie in der Liste der Cloud Router auf cloud-router-us-central1-vertex-nat.

  10. Prüfen Sie auf der Seite Routerdetails, ob das Cloud NAT-Gateway cloud-nat-us-central1 erstellt wurde.

  11. Klicken Sie auf den Zurückpfeil, um zur Seite Cloud Router zurückzukehren.

  12. Klicken Sie in der Liste der Router auf cloud-router-us-central1-onprem-nat.

  13. Prüfen Sie auf der Seite Routerdetails, ob das Cloud NAT-Gateway cloud-nat-us-central1-on-prem erstellt wurde.

VPN-Tunnel erstellen

  1. Erstellen Sie in der Cloud Shell im Netzwerk vertex-networking-vpc einen VPN-Tunnel mit dem Namen 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. Erstellen Sie im Netzwerk vertex-networking-vpc einen VPN-Tunnel mit dem Namen 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. Erstellen Sie im Netzwerk onprem-vpc einen VPN-Tunnel mit dem Namen 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. Erstellen Sie im Netzwerk onprem-vpc einen VPN-Tunnel mit dem Namen 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. Rufen Sie in der Google Cloud Console die Seite VPN auf.

    Zu VPN

  6. Prüfen Sie in der Liste der VPN-Tunnel, ob die vier VPN-Tunnel erstellt wurden.

BGP-Sitzungen erstellen

Cloud Router verwendet das Border Gateway Protocol (BGP), um Routen zwischen Ihrem VPC-Netzwerk (in diesem Fall vertex-networking-vpc) und Ihrem lokalen Netzwerk (dargestellt durch onprem-vpc) auszutauschen. Auf dem Cloud Router konfigurieren Sie eine Schnittstelle und einen BGP-Peer für Ihren lokalen Router. Die Konfigurationen für Schnittstelle und BGP-Peer bilden zusammen eine BGP-Sitzung. In diesem Abschnitt erstellen Sie zwei BGP-Sitzungen für vertex-networking-vpc und zwei für onprem-vpc.

Nachdem Sie die Schnittstellen und BGP-Peers zwischen Ihren Routern konfiguriert haben, beginnen sie automatisch mit dem Austausch von Routen.

BGP-Sitzungen für vertex-networking-vpc erstellen

  1. Erstellen Sie in der Cloud Shell im Netzwerk vertex-networking-vpc eine BGP-Schnittstelle für 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. Erstellen Sie im Netzwerk vertex-networking-vpc einen BGP-Peer für 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. Erstellen Sie im Netzwerk vertex-networking-vpc eine BGP-Schnittstelle für 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. Erstellen Sie im Netzwerk vertex-networking-vpc einen BGP-Peer für 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
    

BGP-Sitzungen für onprem-vpc erstellen

  1. Erstellen Sie im Netzwerk onprem-vpc eine BGP-Schnittstelle für 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. Erstellen Sie im Netzwerk onprem-vpc einen BGP-Peer für 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. Erstellen Sie im Netzwerk onprem-vpc eine BGP-Schnittstelle für 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. Erstellen Sie im Netzwerk onprem-vpc einen BGP-Peer für 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
    

BGP-Sitzungserstellung prüfen

  1. Rufen Sie in der Google Cloud Console die Seite VPN auf.

    Zu VPN

  2. Prüfen Sie in der Liste der VPN-Tunnel, ob sich der Wert in der Spalte BGP-Sitzungsstatus für jeden Tunnel von BGP-Sitzung konfigurieren in BGP eingerichtet gändert. Möglicherweise müssen Sie den Browsertab der Google Cloud Console aktualisieren, um die neuen Werte zu sehen.

Erkannte Routen vertex-networking-vpc validieren

  1. Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.

    Zur Seite VPC-Netzwerke

  2. Klicken Sie in der Liste der VPC-Netzwerke auf vertex-networking-vpc.

  3. Klicken Sie auf den Tab Routen.

  4. Wählen Sie in der Liste Region die Option us-central1 (Iowa) aus und klicken Sie auf Ansehen.

  5. Prüfen Sie in der Spalte Ziel-IP-Adressbereich, ob der IP-Bereich des Subnetzes onprem-vpc-subnet1 (172.16.10.0/29) zweimal angezeigt wird.

Erkannte Routen on-prem-vpc validieren

  1. Klicken Sie auf den Zurückpfeil, um zur Seite VPC-Netzwerke zurückzukehren.

  2. Klicken Sie in der Liste der VPC-Netzwerke auf on-prem-vpc.

  3. Klicken Sie auf den Tab Routen.

  4. Wählen Sie in der Liste Region die Option us-central1 (Iowa) aus und klicken Sie auf Ansehen.

  5. Prüfen Sie in der Spalte Ziel-IP-Adressbereich, ob der IP-Bereich des Subnetzes workbench-subnet (172.16.20.0/28) und der IP-Bereich des Subnetzes consumer-endpoint-subnet (172.16.30.0/28) jeweils zweimal angezeigt wird.

Vertex AI Workbench-Instanz erstellen

In diesem Abschnitt erstellen Sie ein nutzerverwaltetes Dienstkonto und dann eine Vertex AI Workbench-Instanz, die Ihr Dienstkonto für den Zugriff auf Google Cloud-Dienste und APIs verwendet.

Dienstkonto erstellen

In dieser Anleitung erstellen Sie ein nutzerverwaltetes Dienstkonto gemäß den Best Practices für Compute Engine und IAM.

  1. Erstellen Sie in der Cloud Shell ein Dienstkonto mit dem Namen workbench-sa:

    gcloud iam service-accounts create workbench-sa \
       --display-name="workbench-sa"
    
  2. Weisen Sie dem Dienstkonto die IAM-Rolle Vertex AI User (roles/aiplatform.user) zu:

    gcloud projects add-iam-policy-binding $projectid \
      --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \
      --role="roles/aiplatform.user"
    
  3. Weisen Sie dem Dienstkonto die IAM-Rolle Storage Admin (roles/storage.admin) zu:

    gcloud projects add-iam-policy-binding $projectid \
      --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \
      --role="roles/storage.admin"
    
  4. Weisen Sie dem Dienstkonto die IAM-Rolle Service Usage-Administrator (roles/serviceusage.serviceUsageAdmin) zu:

    gcloud projects add-iam-policy-binding $projectid \
      --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \
      --role="roles/serviceusage.serviceUsageAdmin"
    

Vertex AI Workbench-Instanz erstellen

Erstellen Sie eine Vertex AI Workbench-Instanz und geben Sie das Dienstkonto workbench-sa an:

gcloud workbench 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 \
  --shielded-secure-boot=SHIELDED_SECURE_BOOT \
  --subnet=workbench-subnet \
  --disable-public-ip \
  --service-account-email=workbench-sa@$projectid.iam.gserviceaccount.com

Vektorsuchindex erstellen und bereitstellen

Umgebung vorbereiten

  1. Rufen Sie in der Google Cloud Console auf der Seite Vertex AI Workbench den Tab Instanzen auf.

    Zu Vertex AI Workbench

  2. Klicken Sie neben dem Namen der Vertex AI Workbench-Instanz (workbench-tutorial) auf JupyterLab öffnen.

    Ihre Vertex AI Workbench-Instanz öffnet JupyterLab.

  3. Wählen Sie File > New > Notebook aus.

  4. Wählen Sie im Menü Kernel auswählen die Option Python 3 (lokal) aus und klicken Sie auf Auswählen.

  5. Wenn Ihr neues Notebook geöffnet wird, wird eine Standard-Codezelle angezeigt, in die Sie Code eingeben können. Sie sieht so aus: [ ]:, gefolgt von einem Textfeld. In das Textfeld fügen Sie den Code ein.

    Fügen Sie den folgenden Code in die Zelle ein und klicken Sie auf  Ausgewählte Zellen ausführen und fortfahren, um das Vertex AI SDK für Python zu installieren:

    !pip install --upgrade --user google-cloud-aiplatform google-cloud-storage
    
  6. Fügen Sie in diesem und jedem der folgenden Schritte eine neue Codezelle (wenn nötig) hinzu, indem Sie auf  Zelle unten einfügen klicken, den Code in die Zelle einfügen und dann auf  Ausgewählte Zellen ausführen und fortfahren klicken.

    Um die neu installierten Pakete in dieser Jupyter-Laufzeit zu verwenden, müssen Sie die Laufzeit neu starten:

    # Restart kernel after installs so that your environment can access the new packages
    import IPython
    
    app = IPython.Application.instance()
    app.kernel.do_shutdown(True)
    
  7. Legen Sie die folgenden Umgebungsvariablen fest und ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

    # set project ID and location
    PROJECT_ID = "PROJECT_ID"
    LOCATION = "us-central1"
    
    # generate a unique id for this session
    from datetime import datetime
    UID = datetime.now().strftime("%m%d%H%M")
    

APIs aktivieren

Führen Sie in Ihrem Jupyterlab-Notebook den folgenden Befehl aus, um APIs für Compute Engine, Vertex AI und Cloud Storage im Notebook zu aktivieren:

! gcloud services enable compute.googleapis.com aiplatform.googleapis.com storage.googleapis.com \
  --project {PROJECT_ID}

Beispieldaten in einem Cloud Storage-Bucket vorbereiten

In dieser Anleitung verwenden wir dasselbe TheLook-Dataset, das in der Kurzanleitung zur Vektorsuche verwendet wird. Weitere Informationen zu diesem Dataset finden Sie auf der Seite der Kurzanleitungsdokumentation.

In diesem Abschnitt erstellen Sie einen Cloud Storage-Bucket und platzieren die Einbettungsdatei des Datasets darin. In einem späteren Schritt verwenden Sie diese Datei, um einen Index zu erstellen.

  1. Erstellen Sie in Ihrem Jupyterlab-Notebook einen Cloud Storage-Bucket:

    BUCKET_URI = f"gs://{PROJECT_ID}-vs-quickstart-{UID}"
    ! gsutil mb -l $LOCATION -p $PROJECT_ID $BUCKET_URI
    
  2. Kopieren Sie die Beispieldatei in Ihren Cloud Storage-Bucket.

    ! gsutil cp "gs://github-repo/data/vs-quickstart/product-embs.json" $BUCKET_URI
    
  3. Wenn Sie die Vektorsuche zum Ausführen von Abfragen verwenden möchten, müssen Sie auch die Einbettungsdatei in ein lokales Verzeichnis kopieren:

    ! gsutil cp "gs://github-repo/data/vs-quickstart/product-embs.json" . # for query tests
    

Vektorsuchindex erstellen

  1. Laden Sie in Ihrem Jupyterlab-Notebook die Einbettungen in die Vektorsuche:

    # init the aiplatform package
    from google.cloud import aiplatform
    aiplatform.init(project=PROJECT_ID, location=LOCATION)
    
  2. Erstellen Sie einen MatchingEngineIndex mit seiner Funktion create_tree_ah_index (Matching Engine ist der frühere Name der Vektorsuche):

    # create Index
    my_index = aiplatform.MatchingEngineIndex.create_tree_ah_index(
      display_name = f"vs-quickstart-index-{UID}",
      contents_delta_uri = BUCKET_URI,
      dimensions = 768,
      approximate_neighbors_count = 10,
    )
    

    Die Methode MatchingEngineIndex.create_tree_ah_index() erstellt einen Index. In dieser Anleitung dauert diese Aufgabe etwa 5 bis 10 Minuten.

  3. Rufen Sie in der Google Cloud Console den Tab Indexe auf der Seite Vektorsuche auf.

    Zu den Indexen

  4. Prüfen Sie, ob ein Index vorhanden ist, dessen Name mit "vs-quickstart-index-" beginnt und den richtigen Zeitstempel enthält.

  5. Notieren Sie sich die Index-ID. Sie benötigen diese ID, wenn Sie den Index in einem späteren Schritt bereitstellen.

Indexendpunkt erstellen

  1. Führen Sie in Cloud Shell die folgenden Befehle aus und ersetzen Sie dabei PROJECT_ID durch Ihre Projekt-ID:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    SERVICE_PROJECT=${projectid}
    REGION=us-central1
    VERTEX_ENDPOINT=$REGION-aiplatform.googleapis.com
    DISPLAY_NAME=vector-search
    
  2. Erstellen Sie den Indexendpunkt:

    curl -H "Content-Type: application/json" \
      -H "Authorization: Bearer `gcloud auth print-access-token`" \
      http://$VERTEX_ENDPOINT/v1/projects/$SERVICE_PROJECT/locations/$REGION/indexEndpoints \
      -d '{displayName: "'$DISPLAY_NAME'", privateServiceConnectConfig: { enablePrivateServiceConnect: true, projectAllowlist: ["'$SERVICE_PROJECT'"] }}'
    
  3. Prüfen Sie, ob der Indexendpunkt erstellt wurde:

    gcloud ai index-endpoints list --region=us-central1
    

    Die Ausgabe sollte in etwa wie im folgenden Beispiel aussehen. Die Indexendpunkt-ID lautet 8151506529447575552:

    Using endpoint [http://us-central1-aiplatform.googleapis.com/]
    ---
    createTime: '2023-10-10T23:55:20.526145Z'
    displayName: vector-search
    encryptionSpec: {}
    etag: AMEw9yN2qytNiwT73uwYpz_7N_b2-O8D1AuNoDb5QjFmkU4ye5Gzk2oQlMZBR1XeoQ11
    name: projects/725264228516/locations/us-central1/indexEndpoints/8151506529447575552
    privateServiceConnectConfig:
      enablePrivateServiceConnect: true
      projectAllowlist:
      - vertex-genai-400103
      - vertex-genai-400103
    updateTime: '2023-10-10T23:55:21.951394Z'
    
  4. Notieren Sie sich die Indexendpunkt-ID. Sie benötigen diese ID, wenn Sie Ihren Index in einem späteren Schritt bereitstellen.

Index auf dem Endpunkt bereitstellen

Führen Sie in der Cloud Shell den folgenden Befehl aus, um den Index auf dem Endpunkt bereitzustellen:

gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID \
  --deployed-index-id=vector_one \
  --display-name=vector-search \
  --index=INDEX \
  --project=$projectid \
  --region=us-central1

Ersetzen Sie die folgenden Werte:

  • INDEX_ENDPOINT_ID: die Indexendpunkt-ID für den Private Service Connect-Indexendpunkt, den Sie erstellt haben
  • INDEX: die ID des Index, den Sie bereitstellen

Die Ausgabe sollte in etwa wie im folgenden Beispiel aussehen. Die Indexendpunkt-ID lautet 8151506529447575552:

Using endpoint [http://us-central1-aiplatform.googleapis.com/]
The deploy index operation [projects/725264228516/locations/us-central1/indexEndpoints/8151506529447575552/operations/6271807495283408896] was submitted successfully.

Wenn Sie den Index bereitstellen, wird ein Private Service Connect-Endpunkt generiert. Der Bereitstellungsvorgang dauert etwa 10 bis 15 Minuten.

Prüfen, ob der Index auf dem Indexendpunkt bereitgestellt wurde

  1. Rufen Sie in der Google Cloud Console den Tab Indexendpunkte auf der Seite Vektorsuche auf.

    Zu Indexendpunkte

  2. Prüfen Sie, ob der Indexendpunkt vector-search einen bereitgestellten Index mit dem Namen vector-search hat.

    Wenn neben dem Namen des Indexendpunkts ein sich drehender blauer Kreis angezeigt wird, wird der Index noch bereitgestellt.

URI des Dienstanhangs für den Indexendpunkt abrufen

Nachdem der Index vollständig bereitgestellt wurde, können Sie den URI des Dienstanhangs abrufen.

Führen Sie in der Cloud Shell den folgenden Befehl aus, um den URI des Dienstanhangs für den Private Service Connect-Endpunkt abzurufen:

gcloud ai index-endpoints list --region=us-central1 | grep -i  serviceAttachment:

In der folgenden Beispielausgabe lautet der URI des Dienstanhangs projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798.

Using endpoint [http://us-central1-aiplatform.googleapis.com/]
 serviceAttachment: projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798

Notieren Sie sich den serviceAttachment-URI, der mit projects beginnt, z. B. projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798. Sie benötigen ihn im nächsten Schritt, wenn Sie einen Nutzerendpunkt erstellen.

Private Service Connect-Nutzerendpunkt erstellen

  1. Reservieren Sie in der Cloud Shell eine Nutzerendpunkt-IP-Adresse, die zum Abfragen des Vektorsuchindex verwendet wird:

    gcloud compute addresses create vector-search-endpoint1 \
      --region=us-central1 \
      --subnet=consumer-endpoint-subnet
    
  2. Suchen Sie die reservierte IP-Adresse:

    gcloud compute addresses list --filter="name=vector-search-endpoint1"
    
  3. Erstellen Sie eine Weiterleitungsregel, um den Endpunkt mit dem Dienstanhang zu verbinden. Ersetzen Sie dabei SERVICE_ATTACHMENT_URI durch den URI serviceAttachment.

    gcloud compute forwarding-rules create vector-search-endpoint1 \
      --region=us-central1 \
      --network=vertex-networking-vpc \
      --address=vector-search-endpoint1 \
      --target-service-attachment=SERVICE_ATTACHMENT_URI
    

    Im Folgenden finden Sie ein Verwendungsbeispiel für diesen Befehl:

    gcloud compute forwarding-rules create vector-search-endpoint1 \
      --region=us-central1 \
      --network=vertex-networking-vpc \
      --address=vector-search-endpoint1 \
      --target-service-attachment=projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798
    
  4. Wechseln Sie in der Google Cloud Console auf der Seite Private Service Connect zum Tab Verbundene Endpunkte.

    Zu „Verbundene Endpunkte“

  5. Prüfen Sie, ob der Nutzerendpunktstatus Accepted lautet.

  6. Notieren Sie sich die IP-Adresse des Private Service Connect-Nutzerendpunkts. In einem späteren Schritt verwenden Sie diesen Endpunkt, um die Kommunikation mit dem bereitgestellten Vektorsuchindex herzustellen.

Bereitgestellten Index abfragen

Nachdem Sie nun einen Private Service Connect-Nutzerendpunkt eingerichtet haben, der mit Ihrem Vektorsuchindex-Endpunkt verbunden ist, können Sie den bereitgestellten Index abfragen, indem Sie die Abfragen von der on-prem-client-VM-Instanz an den Nutzerendpunkt senden.

Damit Identity-Aware Proxy (IAP) eine Verbindung zu Ihren VM-Instanzen herstellen kann, erstellen Sie eine Firewallregel, die:

  • für alle VM-Instanzen gilt, die über IAP zugänglich sein sollen.
  • TCP-Traffic über Port 22 aus dem IP-Bereich 35.235.240.0/20 zulässt. Dieser Bereich enthält alle IP-Adressen, die IAP für die TCP-Weiterleitung verwendet.

Nachdem Sie die Firewall erstellt haben, installieren Sie den gRPC-Client. In einem späteren Schritt verwenden Sie den gRPC-Client, um Abfragen von der VM-Instanz on-prem-client zu senden.

Firewallregel erstellen und gRPC installieren

  1. Führen Sie in der Cloud Shell die folgenden Befehle aus und ersetzen Sie dabei PROJECT_ID durch Ihre Projekt-ID:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  2. Erstellen Sie eine IAP-Firewallregel mit dem Namen ssh-iap-vpc:

    gcloud compute firewall-rules create ssh-iap-vpc \
      --network onprem-vpc \
      --allow tcp:22 \
      --source-ranges=35.235.240.0/20
    
  3. Melden Sie sich bei der VM-Instanz on-prem-client an:

    gcloud compute ssh on-prem-client \
      --project=$projectid \
      --zone=us-central1-a \
      --tunnel-through-iap
    
  4. Installieren Sie auf der VM-Instanz on-prem-client den gRPC-Client:

    sudo apt-get install git -y
    git clone http://github.com/grpc/grpc.git
    sudo apt-get install build-essential autoconf libtool pkg-config -y
    sudo apt-get install cmake -y
    cd grpc/
    git submodule update --init
    mkdir -p cmake/build
    cd cmake/build
    cmake -DgRPC_BUILD_TESTS=ON ../..
    make grpc_cli
    

    Die Installation dauert etwa 30 Minuten.

ID für ein vorhandenes Indexelement abrufen

  1. Rufen Sie in der Google Cloud Console auf der Seite Vertex AI Workbench den Tab Instanzen auf.

    Zu Vertex AI Workbench

  2. Klicken Sie neben dem Namen der Vertex AI Workbench-Instanz auf JupyterLab öffnen.

    Ihre Vertex AI Workbench-Instanz öffnet JupyterLab.

  3. Wählen Sie Datei > Neu > Terminal aus.

  4. Rufen Sie im JupyterLab-Terminal (nicht in der Cloud Shell) den letzten Eintrag im Index auf:

    tail -1 product-embs.json
    
  5. Suchen Sie im Element nach dem ersten Schlüssel/Wert-Paar, das die ID-Nummer des Elements enthält, wie im folgenden Beispiel:

    "id":"27452"
    

    Notieren Sie sich die ID-Nummer. Sie benötigen sie im nächsten Abschnitt.

Vektorsuchabfrage ausführen

Fragen Sie auf der VM-Instanz on-prem-client den bereitgestellten Index ab:

./grpc_cli call  CONSUMER_ENDPOINT_IP:10000  google.cloud.aiplatform.container.v1.MatchService.Match "deployed_index_id:'"vector_one"',embedding_id: '"ITEM_ID"'"

Ersetzen Sie die folgenden Werte:

  • CONSUMER_ENDPOINT_IP: IP-Adresse des Private Service Connect-Nutzerendpunkts, den Sie im vorherigen Abschnitt erstellt haben
  • ITEM_ID: die ID-Nummer des Elements, die Sie im vorherigen Abschnitt gespeichert haben

Die Ausgabe sollte wie unten gezeigt aussehen:

   user@on-prem-client:~/grpc/cmake/build$ ./grpc_cli call  172.16.30.2:10000  google.cloud.aiplatform.container.v1.MatchService.Match "deployed_index_id:'"vector_one"',embedding_id: '"20020916"'"
   connecting to 172.16.30.2:10000
   neighbor {
     id: "16136217"
     distance: 0.99999558925628662
   }
   neighbor {
     id: "2196405"
     distance: 0.82817935943603516
   }
   neighbor {
     id: "3796353"
     distance: 0.82687419652938843
   }
   neighbor {
     id: "815154"
     distance: 0.8179466724395752
   }
   neighbor {
     id: "16262338"
     distance: 0.816785454750061
   }
   neighbor {
     id: "31290454"
     distance: 0.81560027599334717
   }
   neighbor {
     id: "4012943"
     distance: 0.80958610773086548
   }
   neighbor {
     id: "39738359"
     distance: 0.8020891547203064
   }
   neighbor {
     id: "7691697"
     distance: 0.80035769939422607
   }
   neighbor {
     id: "6398888"
     distance: 0.79880392551422119
   }
   Rpc succeeded with OK status

Bereinigen

Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.

Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder behalten Sie das Projekt und löschen Sie die einzelnen Ressourcen.

Sie können die einzelnen Ressourcen in der Google Cloud Console so löschen:

  1. So heben Sie die Bereitstellung des Vektorsuchindex auf und löschen ihn:

    1. Rufen Sie in der Google Cloud Console den Tab Indexe auf der Seite Vektorsuche auf.

      Zu den Indexen

    2. Suchen Sie den Index, dessen Name mit "vs-quickstart-index-" beginnt und den richtigen Zeitstempel enthält.

    3. Klicken Sie auf den Indexnamen.

    4. Klicken Sie auf der Seite Indexinformationen neben dem Indexnamen in der Liste Bereitgestellte Indexe auf Aktionen und klicken Sie dann auf Bereitstellung aufheben.

      Das Aufheben der Bereitstellung des Index dauert einige Minuten. Wenn neben dem Indexnamen ein sich drehender blauer Kreis angezeigt wird oder der Indexstatus als Undeploying aufgeführt ist, wird die Bereitstellung des Index noch aufgehoben. Möglicherweise müssen Sie den Browsertab der Google Cloud Console aktualisieren, um zu sehen, dass der Index nicht mehr bereitgestellt ist.

    5. Klicken Sie auf den Zurückpfeil, um zum Tab Indexe zurückzukehren.

    6. Klicken Sie neben dem Namen des Index in der Indexliste auf Aktionen und dann auf Löschen, um den Index zu löschen.

  2. Löschen Sie den Indexendpunkt so:

    1. Rufen Sie in der Google Cloud Console auf der Seite Vektorsuche den Tab Indexendpunkte auf.

      Zu Indexendpunkten

    2. Klicken Sie neben dem Namen Ihres Endpunkts in der Liste der Indexendpunkte auf Aktionen und dann auf Löschen, um den Indexendpunkt zu löschen.

  3. Löschen Sie die Vertex AI Workbench-Instanz so:

    1. Rufen Sie in der Google Cloud Console im Abschnitt Vertex AI auf der Seite Workbench den Tab Instanzen auf.

      Zu Vertex AI Workbench

    2. Wählen Sie die Vertex AI Workbench-Instanz workbench-tutorial aus und klicken Sie auf Löschen.

  4. Löschen Sie die Compute Engine-VM-Instanz so:

    1. Rufen Sie in der Google Cloud Console die Seite Compute Engine auf.

      Zu Compute Engine

    2. Wählen Sie die VM-Instanz on-prem-client aus und klicken Sie auf Löschen.

  5. Löschen Sie die VPN-Tunnel so:

    1. Rufen Sie in der Google Cloud Console die Seite VPN auf.

      Zu VPN

    2. Klicken Sie auf der Seite VPN auf den Tab Cloud VPN-Tunnel.

    3. Wählen Sie in der Liste der VPN-Tunnel die vier VPN-Tunnel aus, die Sie in dieser Anleitung erstellt haben, und klicken Sie auf Löschen.

  6. Löschen Sie die HA VPN-Gateways so:

    1. Klicken Sie auf der Seite VPN auf den Tab Cloud VPN-Gateways.

      Zu Cloud VPN-Gateways

    2. Klicken Sie in der Liste der VPN-Gateways auf onprem-vpn-gw1.

    3. Klicken Sie auf der Seite Details zum Cloud VPN-Gateway auf VPN-Gateway löschen.

    4. Klicken Sie bei Bedarf auf den Zurückpfeil, um zur Liste der VPN-Gateways zurückzukehren, und klicken Sie dann auf vertex-networking-vpn-gw1.

    5. Klicken Sie auf der Seite Details zum Cloud VPN-Gateway auf VPN-Gateway löschen.

  7. Löschen Sie die Cloud Router so:

    1. Wechseln Sie zur Seite Cloud Router.

      Zu "Cloud Router"

    2. Wählen Sie in der Liste der Cloud Router die vier Router aus, die Sie in dieser Anleitung erstellt haben.

    3. Klicken Sie zum Löschen der Router auf Löschen.

      Dadurch werden auch die beiden Cloud NAT-Gateways gelöscht, die mit den Cloud Routern verbunden sind.

  8. Löschen Sie so die Weiterleitungsregel vector-search-endpoint1 für das VPC-Netzwerk vertex-networking-vpc:

    1. Wechseln Sie auf der Seite Load Balancing zum Tab Front-Ends.

      Zu Front-Ends

    2. Klicken Sie in der Liste der Weiterleitungsregeln auf vector-search-endpoint1.

    3. Klicken Sie auf der Seite Details zur Weiterleitungsregel auf Löschen.

  9. Löschen Sie die VPC-Netzwerke so:

    1. Rufen Sie die Seite VPC-Netzwerke auf.

      Zur Seite VPC-Netzwerke

    2. Klicken Sie in der Liste der VPC-Netzwerke auf onprem-vpc.

    3. Klicken Sie auf der Seite VPC-Netzwerkdetails auf VPC-Netzwerk löschen.

      Durch das Löschen des jeweiligen Netzwerks werden auch die zugehörigen Subnetzwerke, Routen und Firewallregeln gelöscht.

    4. Kehren Sie zur Liste der VPC-Netzwerke zurück und klicken Sie auf vertex-networking-vpc.

    5. Klicken Sie auf der Seite VPC-Netzwerkdetails auf VPC-Netzwerk löschen.

  10. Löschen Sie den Storage-Bucket so:

    1. Wechseln Sie in der Google Cloud Console zum Cloud Storage-Browser.

      Cloud Storage aufrufen

    2. Wählen Sie Ihren Storage-Bucket aus und klicken Sie auf Löschen.

  11. Löschen Sie das Dienstkonto workbench-sa so:

    1. Rufen Sie die Seite Dienstkonten auf.

      Zur Seite „Dienstkonten“

    2. Wählen Sie das Dienstkonto workbench-sa aus und klicken Sie auf Löschen.

Nächste Schritte