1. Introducción
Los hosts locales pueden acceder a una predicción en línea de forma nativa a través de la Internet pública (opción 1) o mediante Cloud VPN o Cloud Interconnect con Private Service Connect (PSC) (opción 2) desde tu red local, y ambos ofrecen encriptación SSL/TLS. La conectividad híbrida a la predicción en línea a través de la interconexión tiene un mejor rendimiento que Internet, por lo que se recomienda para aplicaciones esenciales, como se ilustra en la Figura 1.
En este instructivo, demostraremos cómo usar la VPN de alta disponibilidad (VPN con alta disponibilidad) para acceder a la predicción en línea de forma privada entre dos redes de VPC que pueden servir como base para la conectividad privada local y de múltiples nubes.
Nota: Vertex Online Prediction es un extremo público, por lo que debes restringir el acceso con los Controles del servicio de VPC (VPC-SC) para crear perímetros seguros y permitir o denegar el acceso a Vertex y otras APIs de Google. En este instructivo no se abarca VPC-SC. Para obtener más detalles, consulta los Controles del servicio de VPC con Vertex AI
Qué compilarás
Configurarás una red de VPC llamada on-prem-vpc
para representar un entorno local. Para tu implementación, on-prem-vpc
no existiría, en su lugar se usaría una red híbrida a tu centro de datos local o a tu proveedor de servicios en la nube.
Compilarás una arquitectura integral de Private Service Connect que ilustre el acceso a la predicción en línea de forma pública a través de Cloud NAT y de forma privada con PSC con VPN con alta disponibilidad, como se detalla a continuación.
Una vez que se implemente la predicción en línea en el proyecto de Google Cloud, se explorarán los siguientes casos de uso:
El acceso público a la predicción en línea consta de lo siguiente:
- Crear una instancia de GCE (nat-client) que aproveche NAT para el acceso a Internet de salida
- Usa CURL para realizar inferencias con respecto al modelo
- Usa TCPDUMP para validar el acceso a la predicción en línea a través de una VIP pública
El acceso privado a la predicción en línea consta de los siguientes elementos:
- Implementar un modelo en el extremo de predicción en línea de aVertex en el proyecto
- Crea un extremo de Private Service Connect (Googleapis) en tryl-vpc
- Exporta la dirección IP de PSC a través de Cloud Router como anuncio personalizado a la VPC local
- Crea una instancia de GCE (cliente privado) y actualiza el archivo etc/hosts con la IP de extremo de PSC.
- Usa CURL para realizar inferencias con respecto al modelo
- Usa TCPDUMP para validar el acceso a la predicción en línea a través de la dirección IP del extremo de PSC
Qué aprenderás
- Cómo establecer un extremo de Private Service Connect
- Cómo anunciar la IP del extremo de PSC a través del Cloud Router
- Cómo usar TCPDUMP para validar el acceso a las predicciones en línea, tanto públicas como privadas
Requisitos
- Proyecto de Google Cloud
Permisos de IAM
Administrador de red de Compute
Editor del Directorio de servicios
2. Antes de comenzar
Actualiza el proyecto para que sea compatible con el instructivo
En este instructivo, se usa $variables para facilitar la implementación de la configuración de gcloud en Cloud Shell.
Dentro de Cloud Shell, realiza lo siguiente:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
3. Habilitar servicios
Dentro de Cloud Shell, realiza lo siguiente:
gcloud services enable dns.googleapis.com
gcloud services enable aiplatform.googleapis.com
gcloud services enable iam.googleapis.com
gcloud services enable compute.googleapis.com
gcloud services enable notebooks.googleapis.com
4. Configuración de targetl-vpc
Crea la app de impactl-vpc
Dentro de Cloud Shell, realiza lo siguiente:
gcloud compute networks create aiml-vpc --project=$projectid --subnet-mode=custom
Crea la subred del notebook administrado por el usuario
Dentro de Cloud Shell, realiza lo siguiente:
gcloud compute networks subnets create workbench-subnet --project=$projectid --range=172.16.10.0/28 --network=aiml-vpc --region=us-central1 --enable-private-ip-google-access
Configuración de Cloud Router y NAT
Cloud NAT se usa en el instructivo para las descargas de paquetes de software de notebook porque la instancia de notebook administrado por el usuario no tiene una dirección IP externa. Cloud NAT también ofrece capacidades de NAT de salida, lo que significa que los hosts de Internet no pueden iniciar la comunicación con un notebook administrado por el usuario, lo que lo hace más seguro.
En Cloud Shell, crea el Cloud Router regional.
gcloud compute routers create cloud-router-us-central1-aiml-nat --network aiml-vpc --region us-central1
En Cloud Shell, crea la puerta de enlace regional de Cloud NAT.
gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1-aiml-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
5. Configuración de on-prem-vpc
Crea on-prem-vpc
Dentro de Cloud Shell, realiza lo siguiente:
gcloud compute networks create on-prem-vpc --project=$projectid --subnet-mode=custom
Cree la nat-subnet
Dentro de Cloud Shell, realiza lo siguiente:
gcloud compute networks subnets create nat-subnet --project=$projectid --range=192.168.10.0/28 --network=on-prem-vpc --region=us-central1
Crea la subred private-ip
Dentro de Cloud Shell, realiza lo siguiente:
gcloud compute networks subnets create private-ip-subnet --project=$projectid --range=192.168.20.0/28 --network=on-prem-vpc --region=us-central1
Configuración de Cloud Router y NAT
Cloud NAT se usa en el instructivo para las descargas de paquetes de software. Cloud NAT también ofrece capacidades de NAT de salida, lo que significa que los hosts de Internet no pueden iniciar la comunicación con el procesamiento, por lo que es más seguro.
En Cloud Shell, crea el Cloud Router regional.
gcloud compute routers create cloud-router-us-central1-on-prem-nat --network on-prem-vpc --region us-central1
En Cloud Shell, crea la puerta de enlace regional de Cloud NAT.
gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1-on-prem-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
6. Crea el extremo de Private Service Connect
En la siguiente sección, crearás un extremo de Private Service Connect (PSC) que se usará para acceder a la API de Vertex desde on-prem-vpc. En un próximo paso, se anunciará la dirección IP de PSC 100.100.10.10 desde tryl-vpc-cloud-router-vpn como un anuncio de router personalizado a la red local.
Desde Cloud Shell
gcloud compute addresses create psc-ip \
--global \
--purpose=PRIVATE_SERVICE_CONNECT \
--addresses=100.100.10.10 \
--network=aiml-vpc
Crea el extremo de PSC
Desde Cloud Shell
gcloud compute forwarding-rules create pscvertex \
--global \
--network=aiml-vpc \
--address=psc-ip \
--target-google-apis-bundle=all-apis
Genera una lista de los extremos configurados de Private Service Connect
Desde Cloud Shell
gcloud compute forwarding-rules list \
--filter target="(all-apis OR vpc-sc)" --global
Describir los extremos configurados de Private Service Connect
Desde Cloud Shell
gcloud compute forwarding-rules describe \
pscvertex --global
7. Conectividad híbrida
En la siguiente sección, crearás un Cloud Router que te permita intercambiar rutas de forma dinámica entre tu Nube privada virtual (VPC) y la red de intercambio de tráfico usando el Protocolo de puerta de enlace de frontera (BGP).
Cloud Router puede configurar una sesión de BGP a través de un túnel de Cloud VPN para conectar tus redes. Aprende automáticamente los nuevos rangos de direcciones IP de subredes y los notifica a tu red de intercambio de tráfico.
En el instructivo, implementarás una VPN con alta disponibilidad entre aiml-vpc y on-prem-vpc.
Crea la puerta de enlace de VPN con alta disponibilidad para aiml-vpc
Cuando se crea cada puerta de enlace, se asignan automáticamente dos direcciones IPv4 externas, una para cada interfaz de puerta de enlace.
Dentro de Cloud Shell, crea la puerta de enlace de VPN con alta disponibilidad
gcloud compute vpn-gateways create aiml-vpn-gw \
--network=aiml-vpc\
--region=us-central1
Crea la puerta de enlace de VPN con alta disponibilidad para on-prem-vpc
Cuando se crea cada puerta de enlace, se asignan automáticamente dos direcciones IPv4 externas, una para cada interfaz de puerta de enlace. Toma nota de estas direcciones IP para usarlas más adelante en los pasos de configuración.
En Cloud Shell, crea la puerta de enlace de VPN con alta disponibilidad.
gcloud compute vpn-gateways create on-prem-vpn-gw \
--network=on-prem-vpc\
--region=us-central1
Valida la creación de la puerta de enlace de VPN con alta disponibilidad
En la consola, navega a CONECTIVIDAD HÍBRIDA → VPN → GATEWAYS DE CLOUD VPN y valida que se generen las IP de las puertas de enlace.
Crea el Cloud Router para targetl-vpc
En Cloud Shell, crea el Cloud Router ubicado en us-central1
gcloud compute routers create aiml-cr-us-central1 \
--region=us-central1 \
--network=aiml-vpc\
--asn=65001
Crea el Cloud Router para on-prem-vpc
En Cloud Shell, crea el Cloud Router ubicado en us-central1
gcloud compute routers create on-prem-cr-us-central1 \
--region=us-central1 \
--network=on-prem-vpc \
--asn=65002
Crea los túneles VPN para “targetl-vpc”
Crearás dos túneles VPN en cada puerta de enlace de VPN con alta disponibilidad.
Crear túnel VPN0
En Cloud Shell, crea tunnel0:
gcloud compute vpn-tunnels create aiml-vpc-tunnel0 \
--peer-gcp-gateway on-prem-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router aiml-cr-us-central1 \
--vpn-gateway aiml-vpn-gw \
--interface 0
Crear túnel VPN1
En Cloud Shell, crea tunnel1:
gcloud compute vpn-tunnels create aiml-vpc-tunnel1 \
--peer-gcp-gateway on-prem-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router aiml-cr-us-central1 \
--vpn-gateway aiml-vpn-gw \
--interface 1
Crea los túneles VPN para on-prem-vpc
Crearás dos túneles VPN en cada puerta de enlace de VPN con alta disponibilidad.
Crear túnel VPN0
En Cloud Shell, crea tunnel0:
gcloud compute vpn-tunnels create on-prem-tunnel0 \
--peer-gcp-gateway aiml-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router on-prem-cr-us-central1 \
--vpn-gateway on-prem-vpn-gw \
--interface 0
Crear túnel VPN1
En Cloud Shell, crea tunnel1:
gcloud compute vpn-tunnels create on-prem-tunnel1 \
--peer-gcp-gateway aiml-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router on-prem-cr-us-central1 \
--vpn-gateway on-prem-vpn-gw \
--interface 1
Validar la creación del túnel VPN
En la consola, navega a CONECTIVIDAD HÍBRIDA → VPN → TUNNELS DE CLOUD VPN.
8. Establecer vecinos de BGP
Crea sesiones de BGP
En esta sección, configurarás las interfaces de Cloud Router y los pares de BGP.
Crea una interfaz de BGP y el intercambio de tráfico para “targetl-vpc”
En Cloud Shell, crea la interfaz de BGP:
gcloud compute routers add-interface aiml-cr-us-central1 \
--interface-name if-tunnel0-to-onprem \
--ip-address 169.254.1.1 \
--mask-length 30 \
--vpn-tunnel aiml-vpc-tunnel0 \
--region us-central1
En Cloud Shell, crea el par de BGP:
gcloud compute routers add-bgp-peer aiml-cr-us-central1 \
--peer-name bgp-on-premises-tunnel0 \
--interface if-tunnel1-to-onprem \
--peer-ip-address 169.254.1.2 \
--peer-asn 65002 \
--region us-central1
En Cloud Shell, crea la interfaz de BGP:
gcloud compute routers add-interface aiml-cr-us-central1 \
--interface-name if-tunnel1-to-onprem \
--ip-address 169.254.2.1 \
--mask-length 30 \
--vpn-tunnel aiml-vpc-tunnel1 \
--region us-central1
En Cloud Shell, crea el par de BGP:
gcloud compute routers add-bgp-peer aiml-cr-us-central1 \
--peer-name bgp-on-premises-tunnel1 \
--interface if-tunnel2-to-onprem \
--peer-ip-address 169.254.2.2 \
--peer-asn 65002 \
--region us-central1
Crea una interfaz de BGP y un intercambio de tráfico para on-prem-vpc
En Cloud Shell, crea la interfaz de BGP:
gcloud compute routers add-interface on-prem-cr-us-central1 \
--interface-name if-tunnel0-to-aiml-vpc\
--ip-address 169.254.1.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel0 \
--region us-central1
En Cloud Shell, crea el par de BGP:
gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
--peer-name bgp-aiml-vpc-tunnel0 \
--interface if-tunnel1-to-aiml-vpc\
--peer-ip-address 169.254.1.1 \
--peer-asn 65001 \
--region us-central1
En Cloud Shell, crea la interfaz de BGP:
gcloud compute routers add-interface on-prem-cr-us-central1 \
--interface-name if-tunnel1-to-aiml-vpc\
--ip-address 169.254.2.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel1 \
--region us-central1
En Cloud Shell, crea el par de BGP:
gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
--peer-name bgp-aiml-vpc-tunnel1\
--interface if-tunnel2-to-aiml-vpc\
--peer-ip-address 169.254.2.1 \
--peer-asn 65001 \
--region us-central1
Navega a CONECTIVIDAD híbrida → VPN para ver los detalles del túnel VPN.
Valida las rutas aprendidas de targetl-vpc a través de una VPN con alta disponibilidad
En la consola, ve a Red de VPC → Redes de VPC → Targetl-vpc→ ROUTES → REGIÓN → US-CENTRAL1 → VISTA
Observa que targetl-vpc aprendió las rutas de on-prem-vpc nat-subnet y private-ip-subnet
Valide que on-prem-vpc haya aprendido a workbench-subnet mediante VPN con alta disponibilidad
En la consola, ve a Red de VPC → Redes de VPC → on-prem-vpc → ROUTES → REGIÓN → US-CENTRAL1 → VISTA
9. Crea anuncios de ruta personalizados.
El Cloud Router no anuncia automáticamente la IP del extremo de Private Service Connect porque la subred no está configurada en la VPC.
En su lugar, deberás crear un anuncio de ruta personalizado desde el punto de acceso de Cloud Router basado en la nube para la dirección IP del extremo, 100.100.10.10, que se anunciará en el entorno local a través de BGP a on-prem-vpc.
Desde la consola, ve a CONECTIVIDAD HÍBRIDA → ROUTERS DE LA NUBE → targetl-cr-us-central1 y, luego, selecciona EDITAR.
En la sección Rutas anunciadas, selecciona la opción Crear rutas personalizadas, actualiza los campos según el siguiente ejemplo, selecciona LISTO y, luego, haz clic en GUARDAR.
Validación
Valida que on-prem-vpc aprendió la dirección IP del extremo de PSC a través de la VPN con alta disponibilidad.
En la consola, ve a Red de VPC → Redes de VPC → on-prem-vpc → ROUTES → REGIÓN → US-CENTRAL1 → VISTA
10. Crea anuncios de ruta personalizados on-prem-vpc
El Cloud Router on-prem-vpc anuncia todas las subredes de forma predeterminada, pero solo se necesita la private-ip-subnet.
En la siguiente sección, actualizarás los anuncios de ruta del Cloud Router on-prem-cr-us-central1.
En la consola, navega a CONECTIVIDAD HÍBRIDA → ROUTERS DE LA NUBE → on-prem-cr-us-central1 y, luego, selecciona EDITAR.
En la sección Rutas anunciadas, selecciona la opción Crear rutas personalizadas, actualiza los campos según el siguiente ejemplo, selecciona LISTO y, luego, haz clic en GUARDAR.
Validación
Valida que targetl-vpc aprendió la ruta private-ip-subnet en on-prem-vpc.
En la consola, ve a Red de VPC → Redes de VPC → Targetl-vpc → ROUTES → REGIÓN → US-CENTRAL1 → VISTA
11. Crear una cuenta de servicio administrada por el usuario (instancias de GCE)
Para proporcionar un nivel preciso de control a la API de Vertex, se requiere una cuenta de servicio administrada por el usuario que se aplicará a las instancias de cliente NAT y privada. Una vez generados, los permisos de la cuenta de servicio se pueden modificar según los requisitos de la empresa. En el instructivo, se le aplicarán los siguientes roles a la cuenta de servicio administrada por el usuario, vertex-sa:
Debes la API de Service Account antes de continuar.
En Cloud Shell, crea la cuenta de servicio.
gcloud iam service-accounts create gce-vertex-sa \
--description="service account for vertex" \
--display-name="gce-vertex-sa"
En Cloud Shell, actualiza la cuenta de servicio con el rol Administrador de instancias de procesamiento
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:gce-vertex-sa@$projectid.iam.gserviceaccount.com" --role="roles/compute.instanceAdmin.v1"
En Cloud Shell, actualiza la cuenta de servicio con el rol Usuario de Vertex AI.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:gce-vertex-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"
12. Crea una cuenta de servicio administrada por el usuario (Notebook)
En la siguiente sección, crearás una cuenta de servicio administrada por el usuario que se asociará con el notebook Vertex que se usa en el instructivo.
En el instructivo, se le aplicarán los siguientes roles a la cuenta de servicio:
En Cloud Shell, crea la cuenta de servicio.
gcloud iam service-accounts create user-managed-notebook-sa \
--display-name="user-managed-notebook-sa"
En Cloud Shell, actualiza la cuenta de servicio con el rol Administrador de almacenamiento.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.admin"
En Cloud Shell, actualiza la cuenta de servicio con el rol Usuario de Vertex AI.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"
En Cloud Shell, actualiza la cuenta de servicio con el rol Administrador de Artifact Registry.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"
En Cloud Shell, enumera la cuenta de servicio y toma nota de la dirección de correo electrónico que se usará cuando se cree el notebook administrado por el usuario.
gcloud iam service-accounts list
13. Creaste las instancias de prueba.
En la siguiente sección, crearás instancias de prueba con el objetivo de validar diferentes métodos para alcanzar las APIs de Vertex, específicamente:
- La instancia
nat-client,
usará Cloud NAT para resolver Vertex AI y, por lo tanto, acceder al extremo de predicción en línea por Internet - La instancia,
private-client
, usará la IP 100.100.10.10 de Private Service Connect para acceder al extremo de predicción en línea a través de una VPN con alta disponibilidad.
En Cloud Shell, crea la instancia nat-client
.
gcloud compute instances create nat-client \
--zone=us-central1-a \
--image-family=debian-11 \
--image-project=debian-cloud \
--subnet=nat-subnet \
--service-account=vertex-sa@$projectid.iam.gserviceaccount.com \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--no-address \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install tcpdump dnsutils -y"
En Cloud Shell, crea la instancia private-client
.
gcloud compute instances create private-client \
--zone=us-central1-a \
--image-family=debian-11 \
--image-project=debian-cloud \
--subnet=private-ip-subnet \
--service-account=vertex-sa@$projectid.iam.gserviceaccount.com \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--no-address \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install tcpdump dnsutils -y"
Para permitir que Identity-Aware Proxy (IAP) se conecte a tus instancias de VM, crea una regla de firewall que haga lo siguiente:
- Se aplica a todas las instancias de VM a las que deseas que se pueda acceder mediante IAP.
- Permite el tráfico de entrada del rango de IP 35.235.240.0/20. Este rango contiene todas las direcciones IP que IAP usa para el reenvío de TCP.
En Cloud Shell, crea la regla de firewall de IAP.
gcloud compute firewall-rules create ssh-iap-on-prem-vpc \
--network on-prem-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
14. Crear un notebook administrado por el usuario
En la siguiente sección, crearás un notebook administrado por el usuario que incorpore la cuenta de servicio creada con anterioridad, user-managed-notebook-sa.
En Cloud Shell, crea la instancia private-client.
gcloud notebooks instances create workbench-tutorial \
--vm-image-project=deeplearning-platform-release \
--vm-image-family=common-cpu-notebooks \
--machine-type=n1-standard-4 \
--location=us-central1-a \
--subnet-region=us-central1 \
--subnet=workbench-subnet \
--no-public-ip --service-account=user-managed-notebook-sa@$projectid.iam.gserviceaccount.com
15. Implementa el modelo y la predicción en línea
En la siguiente sección, usa el codelab Vertex AI:Usa rutinas de predicción personalizadas con Sklearn para realizar el procesamiento previo y posterior de los datos para predicciones a partir de la sección 7,dado que ya creaste un notebook en el paso anterior. Una vez implementado el modelo, vuelve al instructivo para comenzar la siguiente sección.
16. Valida el acceso a la API de Vertex por Internet
En la siguiente sección, accederás a instance, nat-client y validarás la conectividad a Vertex AI con dig y tcpdump en función del dominio us-central1-aiplatform.googleapis.com que se utilizó para resolver las APIs de Vertex.
Accede a nat-client mediante IAP en Cloud Shell para validar la conectividad a la API de Vertex. Para ello, realiza un análisis en el dominio de Vertex us-central1-aiplatform.googleapis.com
gcloud compute ssh nat-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
Ejecuta la dig.
dig us-central1-aiplatform.googleapis.com
Por ejemplo, toma nota de las IP públicas en la respuesta de DNS.
user@nat-client:~$ dig us-central1-aiplatform.googleapis.com
; <<>> DiG 9.16.42-Debian <<>> us-central1-aiplatform.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56761
;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;us-central1-aiplatform.googleapis.com. IN A
;; ANSWER SECTION:
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.111.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.250.1.95
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.121.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.250.103.95
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.120.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.171.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.250.159.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.120.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.161.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.172.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.126.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.70.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.132.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.201.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.202.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.69.95
;; Query time: 4 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Thu Jun 29 01:35:57 UTC 2023
;; MSG SIZE rcvd: 322
En el SO nat-client, ejecuta tcpdump para validar la resolución de DNS cuando realices un curl en función de la predicción en línea.
sudo tcpdump -i any port 53 -n
Ejemplo:
user@nat-client:~$ sudo tcpdump -i any port 53 -n
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
Selecciona el signo "+" para abrir una terminal nueva de Cloud Shell. Cuando se abra la nueva pestaña, actualiza la variable del nombre del proyecto.
En Cloud Shell, actualiza la variable del nombre del proyecto.
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
Dentro de Cloud Shell dos, realiza una conexión SSH a la instancia nat-client.
gcloud compute ssh --zone "us-central1-a" "nat-client" --project "$projectid"
En la siguiente sección, crearás un archivo instances.json con el editor sudo VI o nano y, luego, insertarás la cadena de datos que se usa para obtener una predicción del modelo implementado.
En el SO nat-client, crea un archivo instances.json con la siguiente cadena de datos:
{"instances": [
[0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
[0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}
Ejemplo:
user@nat-client:$ more instances.json
{"instances": [
[0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
[0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}
user@nat-client:$
Obtén el ID de extremo de predicción en línea de la consola de Cloud que se usará en los pasos posteriores.
Navega a VERTEX AI → PREDICCIÓN EN LÍNEA
En el SO nat-client, crea las siguientes variables:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"
Ejemplo:
ENDPOINT_ID="3328226095324463104"
Desde el SO nat-client, realiza un curl para obtener una respuesta del modelo.
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
Ejemplo, observa la predicción exitosa.
user@nat-client$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
{
"predictions": [
"$479.0",
"$586.0"
],
"deployedModelId": "1949163636186415104",
"model": "projects/234086459238/locations/us-central1/models/947543727654567936",
"modelDisplayName": "diamonds-cpr",
"modelVersionId": "1"
}
17. Validación: Acceso a Internet a la API de Vertex
Ahora que ejecutaste la predicción, veamos los resultados de TCPDUMP (terminal 1) que indican que la instancia nat-client (192.168.10.2) realiza una consulta de DNS al servidor dns local 169.254.169.254 para el dominio de Vertex AI us-central1-aiplatform.googleapis.com. El resultado de la consulta de DNS son direcciones IP virtuales (VIPS) públicas para las APIs de Vertex, como se muestra a continuación:
user@nat-client:~$ sudo tcpdump -i any port 53 -n
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
20:05:09.260937 ens4 Out IP 192.168.10.2.40782 > 169.254.169.254.53: 47190+ A? oauth2.googleapis.com. (39)
20:05:09.260946 ens4 Out IP 192.168.10.2.40782 > 169.254.169.254.53: 28075+ AAAA? oauth2.googleapis.com. (39)
20:05:09.263556 ens4 In IP 169.254.169.254.53 > 192.168.10.2.40782: 28075 4/0/0 AAAA 2607:f8b0:4001:c34::5f, AAAA 2607:f8b0:4001:c54::5f, AAAA 2607:f8b0:4001:c16::5f, AAAA 2607:f8b0:4001:c17::5f (151)
20:05:09.265018 ens4 In IP 169.254.169.254.53 > 192.168.10.2.40782: 47190 16/0/0 A 74.125.201.95, A 74.125.202.95, A 74.125.69.95, A 64.233.183.95, A 173.194.193.95, A 173.194.194.95, A 173.194.195.95, A 173.194.196.95, A 173.194.197.95, A 64.233.191.95, A 173.194.74.95, A 173.194.192.95, A 209.85.145.95, A 209.85.146.95, A 209.85.147.95, A 142.250.125.95 (295)
20:05:09.474478 ens4 Out IP 192.168.10.2.57356 > 169.254.169.254.53: 36008+ A? us-central1-aiplatform.googleapis.com. (55)
20:05:09.474488 ens4 Out IP 192.168.10.2.57356 > 169.254.169.254.53: 47020+ AAAA? us-central1-aiplatform.googleapis.com. (55)
20:05:09.477190 ens4 In IP 169.254.169.254.53 > 192.168.10.2.57356: 36008 16/0/0 A 173.194.194.95, A 173.194.195.95, A 173.194.196.95, A 173.194.197.95, A 173.194.74.95, A 173.194.192.95, A 209.85.145.95, A 209.85.146.95, A 209.85.147.95, A 142.250.125.95, A 142.250.136.95, A 142.250.148.95, A 209.85.200.95, A 209.85.234.95, A 142.250.152.95, A 142.250.128.95 (311)
20:05:09.478607 ens4 In IP 169.254.169.254.53 > 192.168.10.2.57356: 47020 4/0/0 AAAA 2607:f8b0:4001:c1b::5f, AAAA 2607:f8b0:4001:c0c::5f, AAAA 2607:f8b0:4001:c0e::5f, AAAA 2607:f8b0:4001:c1e::5f (167)
18. Habilita el acceso privado a las APIs de Vertex
En la siguiente sección, accederás a las APIs de Vertex usando Private Service Connect a través de redes híbridas (VPN con alta disponibilidad) para acceder de forma privada a la predicción en línea. En el ejemplo usado en el instructivo, actualizarás el archivo /etc/hosts en la instancia private-client.
En tu entorno local, actualizar un archivo /etc/hosts de una o varias máquinas para pruebas es apropiado. Sin embargo, para entornos de gran escala y producción, es más conveniente crear una nueva zona de reenvío con el FQDN de extremo de PSC.
Como ejemplo, el extremo de psc creado en el instructivo se llama pscvertex y se traduce a pscvertex.p.googleapis.com. Cuando se usa el extremo para Vertex, agrega el FQDN con el servicio, p. ej., us-central1-aiplatform-pscvertex.p.googleapis.com.
La actualización del DNS local con el extremo de PSC también requiere la refactorización de las aplicaciones locales para llamar al FDQN, p. ej., us-central1-aiplatform-pscvertex.p.googleapis.com en lugar del extremo público nativo us-central1-aiplatform.googleapis.com.
Los clientes que se pueden configurar para usar un extremo personalizado pueden usar los nombres de DNS de p.googleapis.com para enviar solicitudes a un extremo.
Consulta la documentación de tu cliente o biblioteca cliente para obtener información sobre cómo configurarlo para usar extremos personalizados. Por ejemplo:
- Python: Puedes configurar api_endpoint en la clase de opciones del cliente en el paquete google-api-core.
- Go: Puedes configurar WithEndpoint en el paquete de opciones del cliente en el paquete de API.
- gcloud: Puedes configurar api_endpoint_overrides
Selecciona el signo "+" para abrir una terminal nueva de Cloud Shell. Cuando se abra la nueva pestaña, actualiza la variable del nombre del proyecto.
Desde Cloud Shell.
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
Accede a private-client usando IAP en un nuevo Cloud Shell para validar la conectividad a la API de Vertex realizando un análisis en el dominio de Vertex us-central1-aiplatform.googleapis.com.
En Cloud Shell, accede a la instancia del SO del cliente privado.
gcloud compute ssh private-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
Ejecuta la dig.
dig us-central1-aiplatform.googleapis.com
Por ejemplo, toma nota de las IP públicas basadas en la respuesta DNS.
user@private-client:~$ dig us-central1-aiplatform.googleapis.com
; <<>> DiG 9.16.42-Debian <<>> us-central1-aiplatform.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33311
;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;us-central1-aiplatform.googleapis.com. IN A
;; ANSWER SECTION:
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.132.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.201.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.202.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.69.95
us-central1-aiplatform.googleapis.com. 300 IN A 64.233.182.95
us-central1-aiplatform.googleapis.com. 300 IN A 64.233.183.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.193.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.194.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.195.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.196.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.197.95
us-central1-aiplatform.googleapis.com. 300 IN A 64.233.191.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.74.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.192.95
us-central1-aiplatform.googleapis.com. 300 IN A 209.85.145.95
us-central1-aiplatform.googleapis.com. 300 IN A 209.85.146.95
;; Query time: 4 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Sun Jul 02 20:5
Actualiza la instancia private-client, /etc/hosts, con el editor sudo VI o nano para crear un registro del FQDN de Vertex AI us-central1-aiplatform.googleapis.com que dirija al extremo de PSC 100.100.10.10. No se requieren más cambios.
Ejemplo:
user@private-client:~$ more /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
100.100.10.10 us-central1-aiplatform.googleapis.com
192.168.20.2 private-client.c.$projectid.internal private-client # Added by Google
169.254.169.254 metadata.google.internal # Added by Google
Desde el SO del cliente privado, realiza un PING en el extremo de la API de Vertex.
ping us-central1-aiplatform.googleapis.com
Ejemplo, PING devuelve la IP del extremo de PSC, pero no se espera una respuesta.
user@private-client:~$ ping us-central1-aiplatform.googleapis.com
PING us-central1-aiplatform.googleapis.com (100.100.10.10) 56(84) bytes of data.
En el SO del cliente privado, ejecuta tcpdump para validar la resolución de DNS y la ruta de datos de IP al extremo de PSC cuando realices un curl en la predicción en línea.
sudo tcpdump -i any port 53 -n or host 100.100.10.10
Selecciona el signo "+" para abrir una cuarta terminal de Cloud Shell. Cuando se abra la nueva pestaña, actualiza la variable del nombre del proyecto.
En Cloud Shell, actualiza la variable del nombre del proyecto.
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
Dentro de Cloud Shell cuatro, realiza una conexión SSH a la instancia de cliente privado.
gcloud compute ssh --zone "us-central1-a" "private-client" --project "$projectid"
En la siguiente sección, crearás un archivo instances.json con el editor sudo VI o nano y, luego, insertarás la cadena de datos que se usa para obtener una predicción del modelo implementado.
En el SO private-client, crea un archivo instances.json con la siguiente cadena de datos:
{"instances": [
[0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
[0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}
Ejemplo:
user@private-client:$ more instances.json
{"instances": [
[0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
[0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}
user@private-client:$
Desde el SO private-client, crea las siguientes variables:
gcloud config list project
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"
Ejemplo:
ENDPOINT_ID="3328226095324463104"
Desde el SO del cliente privado en Cloud Shell cuatro, realiza un curl para obtener una respuesta del modelo.
curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
19. Validación: Acceso privado a la API de Vertex
Desde el SO del cliente privado en Cloud Shell cuatro, observa que se usó la IP del extremo de PSC (100.100.10.10) para acceder a la API de Vertex.
user@private-client$ curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
Note: Unnecessary use of -X or --request, POST is already inferred.
* Trying 100.100.10.10:443...
* Connected to us-central1-aiplatform.googleapis.com (100.100.10.10) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
* CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
* subject: CN=upload.video.google.com
* start date: May 29 08:21:36 2023 GMT
* expire date: Aug 21 08:21:35 2023 GMT
* subjectAltName: host "us-central1-aiplatform.googleapis.com" matched cert's "*.googleapis.com"
* issuer: C=US; O=Google Trust Services LLC; CN=GTS CA 1C3
* SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x55f2ab65c2c0)
> POST /v1/projects/$projectid/locations/us-central1/endpoints/3328226095324463104:predict HTTP/2
> Host: us-central1-aiplatform.googleapis.com
> user-agent: curl/7.74.0
> accept: */*
> authorization: Bearer ya29.a0AbVbY6NdCbIJYj0mQROeq-xYgQCw534TTtjRc1kBAEOimKCFxb3gqgD5AvhfefJatSNr33eW1YJirfQVMptFoqfjRoB-i8zEJJ_GGCVqhsVnpSOjK0hzJQSuo2YGjIiSe1o1zdo7lWmh1Px-vLe8FImieGkrQ1hqVaa6aCgYKAXgSARESFQFWKvPlUQ_FuKB2hrDJRyFDjupL1g0171
> content-type: application/json
> content-length: 154
>
* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
* We are completely uploaded and fine
< HTTP/2 200
< content-type: application/json; charset=UTF-8
< x-vertex-ai-internal-prediction-backend: harpoon
< date: Mon, 03 Jul 2023 22:13:35 GMT
< vary: X-Origin
< vary: Referer
< vary: Origin,Accept-Encoding
< server: scaffolding on HTTPServer2
< cache-control: private
< x-xss-protection: 0
< x-frame-options: SAMEORIGIN
< x-content-type-options: nosniff
< accept-ranges: none
<
{
"predictions": [
"$479.0",
"$586.0"
],
"deployedModelId": "1949163636186415104",
"model": "projects/234086459238/locations/us-central1/models/947543727654567936",
"modelDisplayName": "diamonds-cpr",
"modelVersionId": "1"
}
* Connection #0 to host us-central1-aiplatform.googleapis.com left intact
Desde la terminal TCPDUMP de Cloud Shell tres, podemos validar que no se observó una búsqueda de DNS a us-central1-aiplatform.googleapis.com, ya que el archivo /etc/host tuvo prioridad, pero se usó la dirección IP de PSC 100.100.10.10 en la ruta de datos.
user@private-client:~$ sudo tcpdump -i any port 53 -n or host 100.100.10.10
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
22:13:35.507625 ens4 Out IP 192.168.20.2.37004 > 169.254.169.254.53: 58585+ A? oauth2.googleapis.com. (39)
22:13:35.507631 ens4 Out IP 192.168.20.2.37004 > 169.254.169.254.53: 15580+ AAAA? oauth2.googleapis.com. (39)
22:13:35.511796 ens4 In IP 169.254.169.254.53 > 192.168.20.2.37004: 58585 16/0/0 A 142.251.6.95, A 108.177.112.95, A 74.125.124.95, A 172.217.212.95, A 172.217.214.95, A 172.253.114.95, A 172.253.119.95, A 108.177.111.95, A 142.250.1.95, A 108.177.121.95, A 142.250.103.95, A 108.177.120.95, A 142.251.171.95, A 142.250.159.95, A 142.251.120.95, A 142.251.161.95 (295)
22:13:35.512002 ens4 In IP 169.254.169.254.53 > 192.168.20.2.37004: 15580 4/0/0 AAAA 2607:f8b0:4001:c2b::5f, AAAA 2607:f8b0:4001:c18::5f, AAAA 2607:f8b0:4001:c5f::5f, AAAA 2607:f8b0:4001:c58::5f (151)
22:13:35.722145 ens4 Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [S], seq 1951267724, win 65320, options [mss 1420,sackOK,TS val 1371205990 ecr 0,nop,wscale 7], length 0
22:13:35.730727 ens4 In IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [S.], seq 3198878726, ack 1951267725, win 65535, options [mss 1366,sackOK,TS val 67847676 ecr 1371205990,nop,wscale 8], length 0
22:13:35.730760 ens4 Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [.], ack 1, win 511, options [nop,nop,TS val 1371205999 ecr 67847676], length 0
22:13:35.738339 ens4 Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 1:518, ack 1, win 511, options [nop,nop,TS val 1371206006 ecr 67847676], length 517
22:13:35.739922 ens4 In IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [.], ack 518, win 261, options [nop,nop,TS val 67847688 ecr 1371206006], length 0
22:13:35.740860 ens4 In IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [.], seq 1:2709, ack 518, win 261, options [nop,nop,TS val 67847689 ecr 1371206006], length 2708
22:13:35.740863 ens4 In IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [P.], seq 2709:4699, ack 518, win 261, options [nop,nop,TS val 67847689 ecr 1371206006], length 1990
22:13:35.740874 ens4 Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [.], ack 2709, win 497, options [nop,nop,TS val 1371206009 ecr 67847689], length 0
22:13:35.740886 ens4 Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [.], ack 4699, win 485, options [nop,nop,TS val 1371206009 ecr 67847689], length 0
22:13:35.742709 ens4 Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 518:598, ack 4699, win 501, options [nop,nop,TS val 1371206011 ecr 67847689], length 80
22:13:35.743996 ens4 Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 598:644, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 46
22:13:35.744011 ens4 Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 644:693, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 49
22:13:35.744082 ens4 Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 693:728, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 35
22:13:35.744165 ens4 Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 728:1069, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 341
Validaste correctamente la conexión a la predicción en línea a través de un extremo público a través de Internet y de forma privada con el uso de redes híbridas y Private Service Connect (googleapis). Sal del SO y vuelve a la ventana de Cloud Shell.
20. Limpia
En Cloud Shell, borra los componentes del instructivo.
gcloud compute forwarding-rules delete pscvertex --global --quiet
gcloud compute instances delete workbench-tutorial --zone=us-central1-a --quiet
gcloud compute addresses delete psc-ip --global --quiet
gcloud compute networks subnets delete workbench-subnet --region=us-central1 --quiet
gcloud compute vpn-tunnels delete aiml-vpc-tunnel0 aiml-vpc-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=us-central1 --quiet
gcloud compute vpn-gateways delete aiml-vpn-gw on-prem-vpn-gw --region=us-central1 --quiet
gcloud compute routers delete aiml-cr-us-central1 cloud-router-us-central1-aiml-nat --region=us-central1 --quiet
gcloud compute routers delete cloud-router-us-central1-on-prem-nat on-prem-cr-us-central1 --region=us-central1 --quiet
gcloud compute instances delete nat-client private-client --zone=us-central1-a --quiet
gcloud compute firewall-rules delete ssh-iap-on-prem-vpc --quiet
gcloud compute networks subnets delete nat-subnet private-ip-subnet --region=us-central1 --quiet
gcloud compute networks delete on-prem-vpc --quiet
gcloud compute networks delete aiml-vpc --quiet
Borra componentes de Vertex
Para borrar la imagen de contenedor, navega a Artifact Registry, selecciona el repositorio que creaste y haz clic en Borrar.
Para borrar el bucket de almacenamiento, en el menú de navegación de la consola de Cloud, navega a Almacenamiento, selecciona tu bucket y haz clic en Borrar:
Anula la implementación del modelo en el extremo. Navega a Vertex AI → Predicción en línea → Selecciona diamonds-cpr_endpoint → Anular la implementación del modelo en el extremo → Anular la implementación
Borra el modelo. Navega a Vertex AI → Registro de modelos → Borrar modelo
Borra el extremo de predicción en línea. Navega a Vertex AI → Predicción en línea → Selecciona diamonds-cpr_endpoint → Borrar extremo
21. Felicitaciones
Felicitaciones, configuraste y validaste correctamente la conexión a la predicción en línea de forma nativa a través de Internet y de forma privada con Private Service Connect y las redes híbridas.
Creaste un cliente nat-client y un cliente privado, y usaste TCPDUMP para validar las direcciones IP que se usan para llegar a las APIs de Vertex. Además, aprendiste sobre Private Service Connect (googleapis) y cómo se puede usar para aislar aplicaciones locales y de múltiples nubes aprovechando un extremo de PSC del cliente.
Cosmopup cree que los instructivos son increíbles.
¿Qué sigue?
Consulta algunos de estos instructivos...
- Private Service Connect para las API de Google
- Crea un notebook seguro administrado por el usuario con Vertex AI
Lecturas adicionales y Videos
- Descripción general de Private Service Connect
- ¿Qué es Private Service Connect?
- Cómo obtener predicciones a partir de un modelo de AA
- ¿Qué es Vertex AI?