Los hosts locales pueden acceder a un extremo del índice de Vector Search, ya sea a través de la Internet pública o de forma privada a través de una arquitectura de red híbrida que usa Private Service Connect a través de Cloud VPN o Cloud Interconnect. Ambas opciones ofrecen encriptación SSL/TLS. Sin embargo, la opción privada ofrece un rendimiento mucho mejor y, por lo tanto, se recomienda para aplicaciones esenciales.
En este instructivo, usarás una VPN de alta disponibilidad (VPN con alta disponibilidad) para acceder a un extremo del índice de Vector Search de forma privada, entre dos redes de nube privada virtual (VPC) que pueden funcionar como base para conectividad privada local y en la nube.
Este instructivo está dirigido a administradores de redes empresariales, investigadores y científicos de datos que estén familiarizados con Vertex AI, la nube privada virtual, la consola de Google Cloud y Cloud Shell. Contar con conocimientos de Vector Search es útil, pero no obligatorio.
Objetivos
- Crear dos redes de VPC, como se muestra en el diagrama
anterior:
- Una (
onprem-vpc
) representa una red local. - El otro (
vertex-networking-vpc
) es para el extremo del índice de Vector Search.
- Una (
- Implementa puertas de enlace de VPN con alta disponibilidad, túneles de Cloud VPN y Cloud Routers para conectar
vertex-networking-vpc
yonprem-vpc
. - Compilar e implementar un índice de Vector Search.
- Crear una regla de reenvío de Private Service Connect para reenviar consultas al extremo del índice de Vector Search.
- Configura un anuncio de ruta personalizado de Cloud Router
vertex-networking-vpc
para anunciar rutas para el extremo de índice aonprem-vpc
. - Crear una instancia de VM de Compute Engine en
onprem-vpc
para representar una aplicación cliente que envíe solicitudes al extremo del índice de Vector Search a través de una VPN con alta disponibilidad.
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Cuando finalices las tareas que se describen en este documento, puedes borrar los recursos que creaste para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.
Antes de comenzar
-
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.
- Abre Cloud Shell para ejecutar los comandos detallados en este instructivo. Cloud Shell es un entorno de shell interactivo para Google Cloud que te permite administrar proyectos y recursos desde el navegador web.
- En Cloud Shell, configura el proyecto actual como
el ID del proyecto de Google Cloud y almacénalo
en la variable de shell
projectid
:projectid="PROJECT_ID" gcloud config set project ${projectid}
Reemplaza PROJECT_ID por el ID del proyecto. Si es necesario, puedes ubicar el ID del proyecto en la consola de Google Cloud. Para obtener más información, consulta Encuentra el ID del proyecto. - Si no eres el propietario del proyecto, pídele al propietario que te otorgue el rol de administrador de IAM del proyecto (roles/resourcemanager.projectIamAdmin). Debes tener este rol para otorgar roles de IAM en el siguiente paso.
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
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_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, Notebooks, and Vertex AI APIs:
gcloud services enable dns.googleapis.com
iam.googleapis.com compute.googleapis.com notebooks.googleapis.com aiplatform.googleapis.com
Crea las redes de VPC
En esta sección, crearás dos redes de VPC: una para crear un índice de Vector Search y, luego, implementarlo en un extremo, la otra para el acceso privado a ese extremo.
Crea la red de VPC para el extremo del índice de Vector Search (vertex-networking-vpc
)
Crea la red de VPC para el extremo de índice:
gcloud compute networks create vertex-networking-vpc --project=$projectid --subnet-mode custom
Crea una subred llamada
workbench-subnet
, con un rango IPv4 principal de172.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
Crea una subred llamada
psc-forwarding-rule-subnet
, con un rango IPv4 principal de172.16.30.0/28
:gcloud compute networks subnets create psc-forwarding-rule-subnet \ --project=$projectid \ --range=172.16.30.0/28 \ --network=vertex-networking-vpc \ --region=us-central1 \ --enable-private-ip-google-access
Crea la red de VPC para el acceso privado al extremo (onprem-vpc
)
Crea la red de VPC para simular la red local (
onprem-vpc
):gcloud compute networks create onprem-vpc \ --subnet-mode custom
En la red
onprem-vpc
, crea una subred llamadaonprem-vpc-subnet1
, con un rango IPv4 principal de172.16.10.0/29
:gcloud compute networks subnets create onprem-vpc-subnet1 \ --network onprem-vpc \ --range 172.16.10.0/29 \ --region us-central1
Verifica que las redes de VPC estén configuradas de forma correcta
En la consola de Google Cloud, ve a la pestaña Redes en el proyecto actual en la página Redes de VPC.
En la lista de redes de VPC, verifica que se hayan creado las dos redes:
vertex-networking-vpc
yonprem-vpc
.Haz clic en la pestaña Subredes del proyecto actual.
En la lista de subredes de VPC, verifica que se crearon las subredes
workbench-subnet
,psc-forwarding-rule-subnet
yonprem-vpc-subnet1
.
Crea la instancia de VM on-prem-client
En esta sección, crearás una instancia de VM para representar una aplicación cliente que envía solicitudes al extremo del índice de Vector Search a través de una VPN con alta disponibilidad.
En Cloud Shell, crea la instancia de VM
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=https://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"
Configura la conectividad híbrida
En esta sección, crearás dos puertas de enlace de VPN
con alta disponibilidad que están conectadas entre sí. Una reside en la
red de VPC vertex-networking-vpc
. La otra se encuentra en la
red de VPC onprem-vpc
.
Cada puerta de enlace contiene un Cloud Router y un par de túneles VPN.
Crea las puertas de enlace de VPN con alta disponibilidad
En Cloud Shell, crea la puerta de enlace de VPN con alta disponibilidad para la red de VPC
vertex-networking-vpc
:gcloud compute vpn-gateways create vertex-networking-vpn-gw1 \ --network vertex-networking-vpc \ --region us-central1
Crea la puerta de enlace de VPN con alta disponibilidad para la red de VPC
onprem-vpc
:gcloud compute vpn-gateways create onprem-vpn-gw1 \ --network onprem-vpc \ --region us-central1
En la consola de Google Cloud, ve a la pestaña Puertas de enlace de CloudVPN en la página VPN.
Verifica que ambas puertas de enlace (
vertex-networking-vpn-gw1
yonprem-vpn-gw1
) se hayan creado y que cada puerta de enlace tenga dos direcciones IP de interfaz.
Crea Cloud Routers y puertas de enlace Cloud NAT
En cada una de las dos redes de VPC, debes crear dos Cloud Routers: uno general y otro regional. En cada uno de los Cloud Routers regionales, debes crear una puerta de enlace de Cloud NAT. Las puertas de enlace de Cloud NAT proporcionan conectividad saliente para las instancias de máquina virtual (VM) de Compute Engine que no tienen direcciones IP externas.
En Cloud Shell, crea un Cloud Router para la red de VPC
vertex-networking-vpc
:gcloud compute routers create vertex-networking-vpc-router1 \ --region us-central1\ --network vertex-networking-vpc \ --asn 65001
Crea un Cloud Router para la red de VPC
onprem-vpc
:gcloud compute routers create onprem-vpc-router1 \ --region us-central1\ --network onprem-vpc\ --asn 65002
Crea un Cloud Router regional para la red de VPC
vertex-networking-vpc
:gcloud compute routers create cloud-router-us-central1-vertex-nat \ --network vertex-networking-vpc \ --region us-central1
Configura una puerta de enlace de Cloud NAT en el Cloud Router regional:
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
Crea un Cloud Router regional para la red de VPC
onprem-vpc
:gcloud compute routers create cloud-router-us-central1-onprem-nat \ --network onprem-vpc \ --region us-central1
Configura una puerta de enlace de Cloud NAT en el Cloud Router regional:
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
En la consola de Google Cloud, ve a la página Cloud Routers.
En la lista de Cloud Routers, verifica que se hayan creado los siguientes routers:
cloud-router-us-central1-onprem-nat
cloud-router-us-central1-vertex-nat
onprem-vpc-router1
vertex-networking-vpc-router1
Es posible que debas actualizar la pestaña del navegador de la consola de Google Cloud para ver los valores nuevos.
En la lista de Cloud Routers, haz clic en
cloud-router-us-central1-vertex-nat
.En la página Detalles del router, verifica que se haya creado la puerta de enlace de Cloud NAT
cloud-nat-us-central1
.Haz clic en la flecha hacia atrás
para volver a la página Cloud Routers.En la lista de routers, haz clic en
cloud-router-us-central1-onprem-nat
.En la página Detalles del router, verifica que se haya creado la puerta de enlace de Cloud NAT
cloud-nat-us-central1-on-prem
.
Crea túneles VPN
En Cloud Shell, en la red
vertex-networking-vpc
, crea un túnel VPN llamadovertex-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
En la red
vertex-networking-vpc
, crea un túnel VPN llamadovertex-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
En la red
onprem-vpc
, crea un túnel VPN llamadoonprem-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
En la red
onprem-vpc
, crea un túnel VPN llamadoonprem-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
En la consola de Google Cloud, ve a la página VPN.
En la lista de túneles VPN, verifica que se hayan creado los cuatro túneles VPN.
Establece sesiones de BGP
Cloud Router usa el protocolo de puerta de enlace fronteriza (BGP) para intercambiar rutas entre
tu red de VPC (en este caso, vertex-networking-vpc
)
y tu red local (representada por onprem-vpc
). En Cloud Router,
configura una interfaz y un par de BGP para tu router local.
La interfaz y la configuración de par de BGP juntas forman una sesión de BGP.
En esta sección, crearás dos sesiones de BGP para vertex-networking-vpc
y
dos para onprem-vpc
.
Una vez que hayas configurado las interfaces y los pares BGP entre tus routers, comenzarán automáticamente a intercambiar rutas.
Establece sesiones de BGP para vertex-networking-vpc
En Cloud Shell, en la red
vertex-networking-vpc
, crea una interfaz de BGP paravertex-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
En la red
vertex-networking-vpc
, crea un par de BGP parabgp-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
En la red
vertex-networking-vpc
, crea una interfaz de BGP paravertex-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
En la red
vertex-networking-vpc
, crea un par de BGP parabgp-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
Establece sesiones de BGP para onprem-vpc
En la red
onprem-vpc
, crea una interfaz de BGP paraonprem-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
En la red
onprem-vpc
, crea un par de BGP parabgp-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
En la red
onprem-vpc
, crea una interfaz de BGP paraonprem-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
En la red
onprem-vpc
, crea un par de BGP parabgp-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
Valida la creación de sesiones de BGP
En la consola de Google Cloud, ve a la página VPN.
En la lista de túneles VPN, verifica que el valor en la columna Estado de la sesión de BGP para cada uno de los túneles haya cambiado de Configura la sesión de BGP a BGP establecida. Es posible que debas actualizar la pestaña del navegador de la consola de Google Cloud para ver los valores nuevos.
Valida las rutas aprendidas de vertex-networking-vpc
En la consola de Google Cloud, ve a la página Redes de VPC.
En la lista de redes de VPC, haz clic en
vertex-networking-vpc
.Haz clic en la pestaña Rutas.
Selecciona us-central1 (Iowa) en la lista Región y haz clic en Ver.
En la columna Rango de IP de destino, verifica que el rango de IP (
172.16.10.0/29
) de la subredonprem-vpc-subnet1
aparezca dos veces.
Valida las rutas aprendidas de on-prem-vpc
Haz clic en la
flecha hacia atrás para regresar a la página Redes de VPC.En la lista de redes de VPC, haz clic en
on-prem-vpc
.Haz clic en la pestaña Rutas.
Selecciona us-central1 (Iowa) en la lista Región y haz clic en Ver.
En la columna Rango de IP de destino, verifica que el rango de IP de la subred
workbench-subnet
(172.16.20.0/28
) y el rango de IP de la subredpsc-forwarding-rule-subnet
(172.16.30.0/28
) aparecen dos veces.
Crea una instancia de Vertex AI Workbench
En esta sección, crearás una cuenta de servicio administrada por el usuario y, luego, una instancia de Vertex AI Workbench que use tu cuenta de servicio para acceder los servicios y las APIs de Google Cloud.
Crea una cuenta de servicio
En este instructivo, crearás una cuenta de servicio administrada por el usuario según las prácticas recomendadas de IAM y Compute Engine.
En Cloud Shell, crea una cuenta de servicio llamada
workbench-sa
:gcloud iam service-accounts create workbench-sa \ --display-name="workbench-sa"
Asigna el rol de IAM de usuario de Vertex AI (
roles/aiplatform.user
) a la cuenta de servicio:gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/aiplatform.user"
Asigna el rol de IAM de administrador de almacenamiento (
roles/storage.admin
) a la cuenta de servicio:gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/storage.admin"
Asigna el rol de IAM de administrador de Service Usage (
roles/serviceusage.serviceUsageAdmin
) a la cuenta de servicio:gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/serviceusage.serviceUsageAdmin"
Crea la instancia de Vertex AI Workbench
Crea una instancia de Vertex AI Workbench
y especifica la cuenta de servicio workbench-sa
:
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
Compila e implementa un índice de Vector Search
Prepare el entorno
En la consola de Google Cloud, ve a la pestaña Instancias de la página Vertex AI Workbench.
Junto al nombre de la instancia de Vertex AI Workbench (
workbench-tutorial
), haz clic en Abrir JupyterLab.Tu instancia de Vertex AI Workbench abre JupyterLab.
Select Archivo > Nuevo > Notebook.
En el menú Seleccionar kernel, selecciona Python 3 (local) y haz clic en Seleccionar.
Cuando se abre tu notebook nuevo, hay una celda de código predeterminada en la que puedes ingresar código. Parece
[ ]:
seguido de un campo de texto. El campo de texto es donde pegas tu código.Si deseas instalar el SDK de Vertex AI para Python, pega el siguiente código en la celda y haz clic en
Ejecutar las celdas seleccionadas y avanzar:!pip install --upgrade --user google-cloud-aiplatform google-cloud-storage
En este paso y cada uno de los siguientes, agrega una nueva celda de código (si fuera necesario) haciendo clic en
Insertar una celda a continuación, pega el código en la celda y haz clic en Ejecutar las celdas seleccionadas y avanzar.Para usar los paquetes recién instalados en este entorno de ejecución de Jupyter, debes reiniciar el entorno de ejecución:
# Restart kernel after installs so that your environment can access the new packages import IPython app = IPython.Application.instance() app.kernel.do_shutdown(True)
Configura las siguientes variables de entorno y reemplaza PROJECT_ID por el ID del proyecto.
# 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")
Habilita las APIs
En tu notebook de Jupyterlab, ejecuta el siguiente comando para habilitar las APIs para Compute Engine, Vertex AI y Cloud Storage en el notebook:
! gcloud services enable compute.googleapis.com aiplatform.googleapis.com storage.googleapis.com \
--project {PROJECT_ID}
Prepara la muestra de datos en un bucket de Cloud Storage
En este instructivo, usamos el mismo conjunto de datos de TheLook que se usa en la guía de inicio rápido de Vector Search. Consulta la página de documentación de la guía de inicio rápido para obtener más información sobre este conjunto de datos.
En esta sección, crearás un bucket de Cloud Storage y colocarás el archivo de incorporación del conjunto de datos en él. En un paso posterior, usarás este archivo para compilar un índice.
En tu notebook de Jupyterlab, crea un bucket de Cloud Storage:
BUCKET_URI = f"gs://{PROJECT_ID}-vs-quickstart-{UID}" ! gsutil mb -l $LOCATION -p $PROJECT_ID $BUCKET_URI
Copia el archivo de ejemplo en tu bucket de Cloud Storage.
! gsutil cp "gs://github-repo/data/vs-quickstart/product-embs.json" $BUCKET_URI
Si quieres usar Vector Search para ejecutar consultas, también debes copiar el archivo de incorporación en un directorio local:
! gsutil cp "gs://github-repo/data/vs-quickstart/product-embs.json" . # for query tests
Crea el índice de Vector Search
En tu notebook de Jupyterlab, carga las incorporaciones en Vector Search:
# init the aiplatform package from google.cloud import aiplatform aiplatform.init(project=PROJECT_ID, location=LOCATION)
Crea un índice de Matching Engine con su función
create_tree_ah_index
(Matching Engine es el nombre anterior de Vector Search).# 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, )
El método
MatchingEngineIndex.create_tree_ah_index()
compila un índice. En este instructivo, esta tarea tarda entre 5 y 10 minutos.En la consola de Google Cloud, ve a la pestaña Índices en la página Vector Search.
Verifica que haya un índice cuyo nombre comience con
"vs-quickstart-index-"
y contenga la marca de tiempo correcta.Toma nota del ID del índice. Necesitarás este ID cuando implementes el índice en un paso posterior.
Crea el extremo del índice
En Cloud Shell, ejecuta los siguientes comandos y reemplaza PROJECT_ID por el ID del proyecto:
projectid=PROJECT_ID gcloud config set project ${projectid} SERVICE_PROJECT=${projectid} REGION=us-central1 VERTEX_ENDPOINT=$REGION-aiplatform.googleapis.com DISPLAY_NAME=vector-search
Crea el extremo del índice:
curl -H "Content-Type: application/json" \ -H "Authorization: Bearer `gcloud auth print-access-token`" \ https://$VERTEX_ENDPOINT/v1/projects/$SERVICE_PROJECT/locations/$REGION/indexEndpoints \ -d '{displayName: "'$DISPLAY_NAME'", privateServiceConnectConfig: { enablePrivateServiceConnect: true, projectAllowlist: ["'$SERVICE_PROJECT'"] }}'
Verifica que se haya creado el extremo del índice:
gcloud ai index-endpoints list --region=us-central1
El resultado es similar al siguiente ejemplo, en el que el ID del extremo del índice es
8151506529447575552
:Using endpoint [https://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'
Toma nota del ID de extremo de índice. Necesitarás este ID cuando implementes el índice en un paso posterior.
Implementa el índice en el extremo
En Cloud Shell, ejecuta el siguiente comando para implementar el índice en el extremo:
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
Reemplaza los siguientes valores:
- INDEX_ENDPOINT_ID: El ID del extremo de índice para el extremo de índice de Private Service Connect que creaste
- INDEX: es el ID del índice que estás implementando
El resultado es similar al siguiente ejemplo, en el que el ID del extremo del índice es 8151506529447575552
:
Using endpoint [https://us-central1-aiplatform.googleapis.com/]
The deploy index operation [projects/725264228516/locations/us-central1/indexEndpoints/8151506529447575552/operations/6271807495283408896] was submitted successfully.
La operación de implementación tarda entre 10 y 15 minutos. Cuando implementas el índice, se genera un adjunto de servicio.
Verifica que el índice se haya implementado en el extremo del índice
En la consola de Google Cloud, ve a la pestaña Extremos de índice en la página Vector Search.
Verifica que el extremo del índice
vector-search
tenga un índice implementado que también se llamevector-search
.Si aparece un círculo azul giratorio junto al nombre del extremo del índice, el índice aún está en proceso de implementación.
Obtén el URI del adjunto de servicio para el extremo del índice
Una vez que el índice esté completamente implementado, puedes obtener el URI del adjunto de servicio.
En Cloud Shell, ejecuta el siguiente comando para obtener el URI del adjunto de servicio:
gcloud ai index-endpoints list --region=us-central1 | grep -i serviceAttachment:
En el siguiente resultado de ejemplo, el URI del adjunto de servicio es
projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798
Using endpoint [https://us-central1-aiplatform.googleapis.com/]
serviceAttachment: projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798
Toma nota del URI serviceAttachment
, que comienza con projects
, por ejemplo, projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798
.
Lo necesitarás en el próximo paso, cuando crees una regla de reenvío.
Cree una regla de reenvío.
En Cloud Shell, reserva una dirección IP para que la regla de reenvío la use en la consulta del índice de Vector Search:
gcloud compute addresses create vector-search-forwarding-rule \ --region=us-central1 \ --subnet=psc-forwarding-rule-subnet
Busca la dirección IP reservada:
gcloud compute addresses list --filter="name=vector-search-forwarding-rule"
Crea una regla de reenvío para conectar el extremo con el adjunto de servicio y reemplazalo SERVICE_ATTACHMENT_URI por tu URI de
serviceAttachment
.gcloud compute forwarding-rules create vector-search-forwarding-rule \ --region=us-central1 \ --network=vertex-networking-vpc \ --address=vector-search-forwarding-rule \ --target-service-attachment=SERVICE_ATTACHMENT_URI
A continuación, se muestra un ejemplo de uso de este comando:
gcloud compute forwarding-rules create vector-search-forwarding-rule \ --region=us-central1 \ --network=vertex-networking-vpc \ --address=vector-search-forwarding-rule \ --target-service-attachment=projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798
En la consola de Google Cloud, ve a la pestaña Extremos conectados en la página Private Service Connect.
Valida que el estado de
vector-search-forwarding-rule
seaAccepted
.Toma nota de la dirección IP de la regla de reenvío de Private Service Connect. En un paso posterior, usarás este extremo para establecer la comunicación con el índice de Vector Search implementado.
Consulta el índice implementado
Ahora que estableciste una regla de envío de Private Service Connect que está conectada a tu extremo del índice de Vector Search, puedes consultar el índice implementado mediante el envío de las consultas desde la instancia de VM on-prem-client
a la regla de envío.
Para permitir que Identity-Aware Proxy (IAP) se conecte a tus instancias de VM, crea una regla de firewall que cumpla con lo siguiente:
- Se aplica a todas las instancias de VM que deseas que sean accesibles a través de IAP.
- Permite el tráfico de TCP a través del puerto 22 desde el rango de IP
35.235.240.0/20
. Este rango contiene todas las direcciones IP que IAP usa para el reenvío de TCP.
Después de crear el firewall, instala el cliente de gRPC. En un paso posterior, usarás el cliente de gRPC para enviar consultas desde la instancia de VM on-prem-client
.
Crea la regla de firewall e instala gRPC
En Cloud Shell, ejecuta los siguientes comandos y reemplaza PROJECT_ID por el ID del proyecto:
projectid=PROJECT_ID gcloud config set project ${projectid}
Crea una regla de firewall de IAP llamada
ssh-iap-vpc
:gcloud compute firewall-rules create ssh-iap-vpc \ --network onprem-vpc \ --allow tcp:22 \ --source-ranges=35.235.240.0/20
Accede a la instancia de VM
on-prem-client
:gcloud compute ssh on-prem-client \ --project=$projectid \ --zone=us-central1-a \ --tunnel-through-iap
En la instancia de VM
on-prem-client
, instala el clientegRPC
:sudo apt-get install git -y git clone https://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
La instalación tarda alrededor de 30 minutos.
Obtén un ID para un elemento del índice existente
En la consola de Google Cloud, ve a la pestañaInstancias de la página Vertex AI Workbench.
Junto al nombre de la instancia de Vertex AI Workbench, haz clic en Abrir JupyterLab.
Tu instancia de Vertex AI Workbench abre JupyterLab.
Selecciona Archivo > Nuevo > Terminal.
En la terminal de JupyterLab (no en Cloud Shell), visualiza la última entrada en el índice:
tail -1 product-embs.json
Busca el primer par clave-valor en el elemento, que contiene el número de ID del elemento, como en el siguiente ejemplo:
"id":"27452"
Toma nota de este número de ID. Lo necesitarás para realizar una consulta en la siguiente sección.
Realiza una consulta de Vector Search
En la instancia de VM on-prem-client
, consulta el índice implementado:
./grpc_cli call FORWARDING_RULE_IP:10000 google.cloud.aiplatform.container.v1.MatchService.Match "deployed_index_id:'"vector_one"',embedding_id: '"ITEM_ID"'"
Reemplaza los siguientes valores:
- FORWARDING_RULE_IP: La dirección IP de la regla de reenvío de Private Service Connect que creaste en la sección anterior
- ITEM_ID: Es el número de ID del elemento que guardaste en la sección anterior.
El resultado es similar al siguiente:
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
Limpia
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
Para evitar que se apliquen cargos a su cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
Puedes borrar los recursos individuales en la consola de Google Cloud de la siguiente manera:
Anula la implementación y borra el índice de Vector Search de la siguiente manera:
En la consola de Google Cloud, ve a la pestaña Índices en la página Vector Search.
Ubica el índice cuyo nombre comienza con
"vs-quickstart-index-"
y contiene la marca de tiempo correcta.Haz clic en el nombre del índice.
En la página Información del índice, junto al nombre del índice en la lista Índices implementados, haz clic en
Acciones y, luego, haz clic en Anular la implementación.Anular la implementación del índice tarda unos minutos. Si un círculo azul giratorio aparece junto al nombre del índice o si el estado del índice aparece como
Undeploying
, todavía se está anulando la implementación del índice. Es posible que debas actualizar la pestaña del navegador de la consola de Google Cloud para ver que el índice ya no está implementado.Haz clic en la flecha hacia atrás
para volver a la pestaña Índices.Junto al nombre de tu índice en la lista de índices, haz clic en
Acciones y, luego, en Borrar para borrar el índice.
Borra el extremo del índice de la siguiente manera:
En la consola de Google Cloud, ve a la pestaña Extremos de índice en la página Vector Search.
Junto al nombre de tu extremo en la lista de extremos de índice, haz clic en
Acciones y, luego, en Borrar para borrar el extremo de índice.
Borra la instancia de Vertex AI Workbench de la siguiente manera:
En la sección Vertex AI de la consola de Google Cloud, ve a la pestaña Instancias en la página Workbench.
Selecciona la instancia de Vertex AI Workbench
workbench-tutorial
y haz clic en Borrar.
Borra la instancia de VM de Compute Engine de la siguiente manera:
En la consola de Google Cloud, ve a la página Compute Engine.
Selecciona la instancia de VM
on-prem-client
y haz clic en Borrar.
Borra los túneles VPN de la siguiente manera:
En la consola de Google Cloud, ve a la página VPN.
En la página VPN, haz clic en la pestaña Túneles de Cloud VPN.
En la lista de túneles VPN, selecciona los cuatro túneles VPN que creaste en este instructivo y haz clic en
Borrar.
Borra las puertas de enlace de VPN con alta disponibilidad de la siguiente manera:
En la página VPN, haz clic en la pestaña Puertas de enlace de Cloud VPN.
En la lista de puertas de enlace de VPN, haz clic en
onprem-vpn-gw1
.En la página Detalles de la puerta de enlace de Cloud VPN, haz clic en
Borrar puerta de enlace de VPN.Haz clic en la
flecha hacia atrás si es necesario para regresa a la lista de puertas de enlace de VPN y, luego, haz clic envertex-networking-vpn-gw1
En la página Detalles de la puerta de enlace de Cloud VPN, haz clic en
Borrar puerta de enlace de VPN.
Borra los Cloud Routers de la siguiente manera:
Ve a la página Cloud Routers.
En la lista de Cloud Routers, selecciona los cuatro routers que creaste en este instructivo.
Para borrar los routers, haz clic en
Borrar.Esta acción también borrará las dos puertas de enlace de Cloud NAT que están conectadas a los Cloud Routers.
Borra la regla de reenvío
vector-search-forwarding-rule
para la red de VPCvertex-networking-vpc
de la siguiente manera:Ve a la pestaña Frontends de la página Balanceo de cargas.
En la lista de reglas de reenvío, haz clic en
vector-search-forwarding-rule
.En la página Detalles de la regla de reenvío, haz clic en
Borrar.
Borra las redes de VPC de la siguiente manera:
Ir a la página de redes de VPC
En la lista de redes de VPC, haz clic en
onprem-vpc
.En la página Detalles de la red de VPC, haz clic en
Borrar la red de VPC.Borrar cada red también borra sus subredes, rutas y reglas de firewall.
Regresa a la lista de redes de VPC y haz clic en
vertex-networking-vpc
.En la página Detalles de la red de VPC, haz clic en
Borrar la red de VPC.
Borra el bucket de almacenamiento de la siguiente manera:
En la consola de Google Cloud, ve a la página de Cloud Storage.
Selecciona tu bucket de almacenamiento y haz clic en
Borrar.
Borra la cuenta de servicio
workbench-sa
de la siguiente manera:Ve a la página Cuentas de servicio.
Selecciona la cuenta de servicio
workbench-sa
y haz clic en Borrar.
¿Qué sigue?
- Obtén información sobre las opciones de herramientas de redes empresariales para acceder a los extremos y servicios de Vertex AI.
- Obtén información sobre cómo funciona Private Service Connect y por qué ofrece beneficios de rendimiento significativos.
- Obtén más información sobre cómo usar los Controles del servicio de VPC para crear perímetros seguros para permitir o denegar el acceso a Vertex AI y a otras APIs de Google en el extremo del índice de Vector Search a través de la Internet pública.
- Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.