A Vertex AI acessa endpoints de previsão on-line de maneira particular usando PSC

1. Introdução

Hosts no local podem alcançar uma previsão on-line nativamente pela Internet pública (opção 1) ou usando o Cloud VPN ou o Cloud Interconnect com o Private Service Connect (PSC) (opção 2) da sua rede local, ambos oferecendo criptografia SSL/TLS. A conectividade híbrida com a previsão on-line por interconexão é mais eficiente do que a Internet, portanto, é recomendada para aplicativos críticos, conforme ilustrado na figura 1.

Neste tutorial, vamos demonstrar como usar a VPN de alta disponibilidade (VPN de alta disponibilidade) para acessar a previsão on-line de maneira particular entre duas redes VPC que podem servir como base para conectividade particular no local e em várias nuvens.

A previsão on-line da Vertex é um endpoint público, então você quer restringir o acesso usando o VPC Service Controls (VPC-SC) para criar perímetros seguros que permitam ou neguem o acesso à Vertex e a outros Googleapis. Neste tutorial, não abordamos o VPC-SC. Para mais detalhes, consulte VPC Service Controls com Vertex AI.

24a07ba49a7bcb16.png

O que você vai criar

Você configurará uma rede VPC chamada on-prem-vpc para representar um ambiente local. Para sua implantação, o on-prem-vpc não existiria. Em vez disso, seria usada a rede híbrida para o data center local ou o provedor de nuvem.

Você vai criar uma arquitetura abrangente do Private Service Connect que ilustra o acesso à previsão on-line publicamente pelo Cloud NAT e particular usando PSC em VPN de alta disponibilidade, conforme os detalhes abaixo.

b545c808b366341a.png

Depois que a previsão on-line for implantada no projeto do Google Cloud, os seguintes casos de uso serão analisados:

O acesso público à previsão on-line consiste no seguinte:

  • Crie uma instância do GCE (nat-client) que utilize a NAT para o acesso à Internet de saída
  • Usar CURL para inferência no modelo
  • Use o TCPDUMP para validar o acesso da previsão on-line por um VIP público

O acesso particular à previsão on-line consiste no seguinte:

  • Implantar um modelo no endpoint de previsão on-line da Vertex no projeto
  • Criar um endpoint do Private Service Connect (Googleapis) no goall-vpc
  • Exportar o endereço IP do PSC pelo Cloud Router como uma divulgação personalizada para a VPC no local
  • Crie uma instância do GCE (private-client) e atualize o arquivo etc/hosts com o IP do endpoint do PSC.
  • Usar CURL para inferência no modelo
  • Use o TCPDUMP para validar o acesso à previsão on-line pelo endereço IP do endpoint do PSC

O que você vai aprender

  • Como estabelecer um endpoint do Private Service Connect
  • Como divulgar o IP do endpoint do PSC no Cloud Router
  • Como usar o TCPDUMP para validar o acesso à previsão on-line, tanto público quanto particular

O que é necessário

  • Projeto do Google Cloud

Permissões do IAM

Administrador de rede do Compute

Editor do diretório de serviços

Administrador do DNS

Administrador de rede

Administrador de cotas

Administrador de notebooks

Usuário da conta de serviço

Administrador de armazenamento

Usuário da Vertex AI

Administrador da conta de serviço

2. Antes de começar

Atualizar o projeto para ser compatível com o tutorial

Neste tutorial, usamos as variáveis $variables para ajudar na implementação da configuração da gcloud no Cloud Shell.

No Cloud Shell, faça o seguinte:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

3. Ativar o Services

No Cloud Shell, faça o seguinte:

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. Configuração do goall-vpc

Criar o goall-vpc

No Cloud Shell, faça o seguinte:

gcloud compute networks create aiml-vpc --project=$projectid --subnet-mode=custom

Criar a sub-rede de notebook gerenciada pelo usuário

No Cloud Shell, faça o seguinte:

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

Configuração do Cloud Router e NAT

O Cloud NAT é usado no tutorial para downloads de pacotes de software de notebook porque a instância de notebook gerenciada pelo usuário não tem um endereço IP externo. O Cloud NAT também oferece recursos de saída de NAT, o que significa que os hosts da Internet não têm permissão para iniciar a comunicação com um notebook gerenciado pelo usuário, o que o torna mais seguro.

No Cloud Shell, crie o roteador de nuvem regional.

gcloud compute routers create cloud-router-us-central1-aiml-nat --network aiml-vpc --region us-central1

No Cloud Shell, crie o gateway cloud nat regional.

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. Configuração de on-prem-vpc

Crie on-prem-vpc

No Cloud Shell, faça o seguinte:

gcloud compute networks create on-prem-vpc --project=$projectid --subnet-mode=custom

Crie o nat-subnet

No Cloud Shell, faça o seguinte:

gcloud compute networks subnets create nat-subnet --project=$projectid --range=192.168.10.0/28 --network=on-prem-vpc --region=us-central1

Crie a sub-rede private-ip-subnet.

No Cloud Shell, faça o seguinte:

gcloud compute networks subnets create private-ip-subnet --project=$projectid --range=192.168.20.0/28 --network=on-prem-vpc --region=us-central1

Configuração do Cloud Router e NAT

O Cloud NAT é usado no tutorial para downloads de pacotes de software. O Cloud NAT também oferece recursos de saída de NAT, o que significa que os hosts da Internet não têm permissão para iniciar a comunicação com a computação, o que o torna mais seguro.

No Cloud Shell, crie o roteador de nuvem regional.

gcloud compute routers create cloud-router-us-central1-on-prem-nat --network on-prem-vpc --region us-central1

No Cloud Shell, crie o gateway cloud nat regional.

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. Crie o endpoint do Private Service Connect

Na seção a seguir, você vai criar um endpoint do Private Service Connect (PSC) que será usado para acessar a API Vertex em on-prem-vpc. O endereço IP 100.100.10.10 do PSC vai ser divulgado do goall-vpc-cloud-router-vpn como uma divulgação de roteador personalizado para a rede local em uma próxima etapa.

No Cloud Shell

gcloud compute addresses create psc-ip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=100.100.10.10 \
    --network=aiml-vpc

Crie o endpoint do PSC

No Cloud Shell

gcloud compute forwarding-rules create pscvertex \
    --global \
    --network=aiml-vpc \
    --address=psc-ip \
    --target-google-apis-bundle=all-apis

Liste os endpoints configurados do Private Service Connect

No Cloud Shell

gcloud compute forwarding-rules list  \
--filter target="(all-apis OR vpc-sc)" --global

Descrever os endpoints configurados do Private Service Connect

No Cloud Shell

gcloud compute forwarding-rules describe \
    pscvertex --global

7. Conectividade híbrida

Na seção a seguir, você vai criar um Cloud Router que permite trocar rotas dinamicamente entre sua nuvem privada virtual (VPC) e sua rede de peering usando o protocolo de gateway de borda (BGP).

O Cloud Router pode configurar uma sessão do BGP em um túnel do Cloud VPN para conectar suas redes. Ele aprende automaticamente intervalos de endereços IP de novas sub-redes e os divulga na rede de peering.

Neste tutorial, você vai implantar a VPN de alta disponibilidade entre aiml-vpc e on-prem-vpc.

Crie o gateway de VPN de alta disponibilidade para aiml-vpc

Quando cada gateway é criado, dois endereços IPv4 externos são alocados automaticamente, um para cada interface de gateway.

No Cloud Shell, crie o gateway de VPN de alta disponibilidade

gcloud compute vpn-gateways create aiml-vpn-gw \
   --network=aiml-vpc\
   --region=us-central1

Crie o gateway de VPN de alta disponibilidade para on-prem-vpc

Quando cada gateway é criado, dois endereços IPv4 externos são alocados automaticamente, um para cada interface de gateway. Anote esses endereços IP para usar mais tarde nas etapas de configuração.

No Cloud Shell, crie o gateway de VPN de alta disponibilidade.

gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-vpc\
   --region=us-central1

Validar a criação do gateway de VPN de alta disponibilidade

No console, acesse CONECTIVIDADE HÍBRIDA → VPN → CLOUD VPN GATEWAYS e confirme se os IPs de gateway foram gerados.

66312b1b53c233d7.png

Crie o Cloud Router para goall-vpc

No Cloud Shell, crie o Cloud Router localizado em us-central1

gcloud compute routers create aiml-cr-us-central1 \
   --region=us-central1 \
   --network=aiml-vpc\
   --asn=65001

Crie o Cloud Router para a on-prem-vpc

No Cloud Shell, crie o Cloud Router localizado em us-central1

gcloud compute routers create on-prem-cr-us-central1 \
   --region=us-central1 \
   --network=on-prem-vpc \
   --asn=65002

Crie os túneis de VPN para goall-vpc

Você vai criar dois túneis de VPN em cada gateway de VPN de alta disponibilidade.

Criar túnel VPN 0

No Cloud Shell, crie 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

Criar túnel VPN 1

No Cloud Shell, crie 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

Crie os túneis de VPN para on-prem-vpc

Você vai criar dois túneis de VPN em cada gateway de VPN de alta disponibilidade.

Criar túnel VPN 0

No Cloud Shell, crie 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

Criar túnel VPN 1

No Cloud Shell, crie 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 a criação do túnel VPN

No console, navegue até CONECTIVIDADE HÍBRIDA → VPN → TÚneles do CLOUD VPN.

e8e13ebaed09f1.png

8. Estabelecer vizinhos do BGP

Criar sessões do BGP

Nesta seção, você configura as interfaces do Cloud Router e os pares do BGP.

Criar uma interface do BGP e fazer peering para goall-vpc

No Cloud Shell, crie a interface do 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

No Cloud Shell, crie o peer do 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

No Cloud Shell, crie a interface do 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

No Cloud Shell, crie o peer do 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

Criar uma interface do BGP e peering para on-prem-vpc

No Cloud Shell, crie a interface do 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

No Cloud Shell, crie o peer do 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

No Cloud Shell, crie a interface do 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

No Cloud Shell, crie o peer do 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

Acesse CONECTIVIDADE Híbrida → VPN para ver os detalhes do túnel VPN.

cb91b4476a88acd3.png

Validar as rotas aprendidas do goall-vpc pela VPN de alta disponibilidade

No console, acesse Rede VPC → Redes VPC → goall-vpc→ ROUTES → REGIÃO → US-CENTRAL1 → VISUALIZAÇÃO

Observe que o goall-vpc aprendeu rotas de on-prem-vpc nat-subnet e private-ip-subnet

f407ed6e1a6233db.png

Confira se a on-prem-vpc aprendeu a sub-rede do workbench pela VPN de alta disponibilidade

No console, acesse Rede VPC → Redes VPC → on-prem-vpc → ROUTES → REGIÃO → US-CENTRAL1 → VISUALIZAÇÃO

7957e5d898a9e7e0.png

9. Criar divulgações de rota personalizadas goall-vpc

O IP do endpoint do Private Service Connect não é divulgado automaticamente pelo Cloud Router goall-cr-us-central1 porque a sub-rede não está configurada na VPC.

Em vez disso, você terá que criar uma divulgação de rota personalizada do Cloud Router goall-cr-us-central para o endereço IP 100.100.10.10 do endpoint que será divulgado para o ambiente no local por BGP para o on-prem-vpc.

No console, acesse CONECTIVIDADE HÍBRIDA → CLOUD ROUTERS → goall-cr-us-central1 e selecione EDITAR.

c8fb02ed59a5b068.png

Na seção "Rotas anunciadas", selecione a opção Criar rotas personalizadas, atualize os campos com base no exemplo abaixo, selecione CONCLUÍDO e clique em SALVAR.

5996464e3aae0665.png

f799082ab2cd7e31.png

Validação

Confira se o on-prem-vpc aprendeu o endereço IP do endpoint do PSC pela VPN de alta disponibilidade

No console, acesse Rede VPC → Redes VPC → on-prem-vpc → ROUTES → REGIÃO → US-CENTRAL1 → VISUALIZAÇÃO

1b42673e6f940bf2.png

10. Criar divulgações de rota personalizadas on-prem-vpc

O Cloud Router on-prem-vpc divulga todas as sub-redes por padrão, mas apenas a private-ip-subnet é necessária.

Na seção a seguir, atualize as divulgações de rota do Cloud Router on-prem-cr-us-central1.

No console, acesse CONECTIVIDADE HÍBRIDA → CLOUD ROUTERS → on-prem-cr-us-central1 e selecione EDITAR.

bd96bde9550d516a.png

Na seção "Rotas anunciadas", selecione a opção Criar rotas personalizadas, atualize os campos com base no exemplo abaixo, selecione CONCLUÍDO e clique em SALVAR.

f8b61f669a9cfeef.png

Validação

Confira se o goall-vpc aprendeu a rota private-ip-subnet de on-prem-vpc.

No console, acesse Rede VPC → Redes VPC → goall-vpc → ROUTES → REGIÃO → US-CENTRAL1 → VISUALIZAÇÃO

2b1a7a5f918e9f50.png

11. Criar uma conta de serviço gerenciada pelo usuário (instâncias do GCE)

Para fornecer um bom nível de controle à API Vertex, é necessário ter uma conta de serviço gerenciada pelo usuário que será aplicada às instâncias Nat e Private Client. Depois de geradas, as permissões da conta de serviço podem ser modificadas com base nos requisitos comerciais. No tutorial, a conta de serviço gerenciada pelo usuário, vertex-sa, vai ter os seguintes papéis aplicados:

a API Service Account antes de continuar.

No Cloud Shell, crie a conta de serviço.

gcloud iam service-accounts create gce-vertex-sa \
    --description="service account for vertex" \
    --display-name="gce-vertex-sa"

No Cloud Shell, atualize a conta de serviço com o papel de administrador da instância de computação

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:gce-vertex-sa@$projectid.iam.gserviceaccount.com" --role="roles/compute.instanceAdmin.v1"

No Cloud Shell, atualize a conta de serviço com o papel de Usuário da Vertex AI.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:gce-vertex-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"

12. Criar uma conta de serviço gerenciada pelo usuário (Notebook)

Na seção a seguir, você vai criar uma conta de serviço gerenciada pelo usuário que será associada ao Vertex Workbench (Notebook) usado no tutorial.

No tutorial, a conta de serviço terá os seguintes papéis aplicados:

No Cloud Shell, crie a conta de serviço.

gcloud iam service-accounts create user-managed-notebook-sa \
    --display-name="user-managed-notebook-sa"

No Cloud Shell, atualize a conta de serviço com o papel Administrador de armazenamento.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.admin"

No Cloud Shell, atualize a conta de serviço com o papel de Usuário da Vertex AI.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"

No Cloud Shell, atualize a conta de serviço com o papel de Administrador do Artifact Registry.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"

No Cloud Shell, liste a conta de serviço e anote o endereço de e-mail que será usado ao criar o notebook gerenciado pelo usuário.

gcloud iam service-accounts list

13. Criou as instâncias de teste

Na seção a seguir, você vai criar instâncias de teste para validar diferentes métodos e alcançar as APIs Vertex, especificamente:

  • A instância nat-client, vai usar o Cloud NAT para resolver a Vertex AI e, portanto, acessar o endpoint de previsão on-line pela Internet
  • A instância, private-client, vai usar o IP 100.100.10.10 do Private Service Connect para acessar o endpoint de previsão on-line pela VPN de alta disponibilidade.

No Cloud Shell, crie a instância 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"

No Cloud Shell, crie a instância 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 o Identity-Aware Proxy (IAP) se conecte às instâncias de VM, crie uma regra de firewall que:

  • Aplica-se a todas as instâncias de VM que você quer disponibilizar usando o IAP.
  • Permite tráfego de entrada no intervalo de IP 35.235.240.0/20. Esse intervalo contém todos os endereços IP que o IAP usa para encaminhamento de TCP.

No Cloud Shell, crie a regra de firewall do 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. Criar um notebook gerenciado pelo usuário

a API do notebook

Na seção a seguir, crie um notebook gerenciado pelo usuário que incorpore a conta de serviço criada anteriormente, user-managed-notebook-sa.

No Cloud Shell, crie a instância 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. Implantar o modelo e a previsão on-line

Na seção a seguir, use o codelab Vertex AI:usar rotinas de previsão personalizadas com o Sklearn para pré-processar e pós-processar dados para previsões,já que você já criou um notebook na etapa anterior. Depois que o modelo for implantado, volte ao tutorial para iniciar a próxima seção.

ee68b7ba0cfd2746.png

16. Validar o acesso à API Vertex pela Internet

Na seção a seguir, você vai fazer login na instância nat-client e validar a conectividade com a Vertex AI usando dig e tcpdump no domínio us-central1-aiplatform.googleapis.com usado para resolver as APIs Vertex.

Faça login no nat-client usando o IAP no Cloud Shell para validar a conectividade com a API Vertex realizando uma análise no domínio de vértice us-central1-aiplatform.googleapis.com

gcloud compute ssh nat-client --project=$projectid --zone=us-central1-a --tunnel-through-iap

Execute a dig.

dig us-central1-aiplatform.googleapis.com

Por exemplo, observe os IPs públicos na resposta 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

No SO nat-client, execute tcpdump para validar a resolução de DNS ao realizar um curl na previsão on-line.

 sudo tcpdump -i any port 53 -n

Exemplo:

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

Abra um novo terminal do Cloud Shell selecionando o "+". Quando a nova guia for aberta, atualize a variável do nome do projeto.

No Cloud Shell, atualize a variável do nome do projeto.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

No Cloud Shell 2, execute SSH para a instância nat-client.

gcloud compute ssh --zone "us-central1-a" "nat-client" --project "$projectid"

Na próxima seção, você vai criar um arquivo instances.json usando o editor sudo VI ou nano e inserir a string de dados usada para receber uma previsão do modelo implantado.

No SO nat-client, crie um arquivo instances.json com a string de dados abaixo:

{"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]]}

Exemplo:

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:$

Acesse o ID do endpoint de previsão on-line no console do Cloud para usar nas próximas etapas.

Acesse VERTEX AI → PREDICIONAMENTO ON-LINE

237d413ccde1e95b.png

No SO nat-client, crie as seguintes variáveis:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"

Exemplo:

ENDPOINT_ID="3328226095324463104"

No sistema operacional nat-client, execute um curl para obter uma resposta do 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

Por exemplo, observe a previsão bem-sucedida.

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. Validação: acesso à API Vertex pela Internet

Agora que você executou a previsão, vamos dar uma olhada nos resultados do TCPDUMP (terminal 1) que indicam que a instância nat-client (192.168.10.2) está executando uma consulta DNS ao servidor DNS local 169.254.169.254 para o domínio us-central1-aiplatform.googleapis.com da Vertex AI. O resultado da consulta DNS são endereços IP virtuais (VIPS) públicos para APIs Vertex, conforme observado abaixo:

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. Ative o acesso privado às APIs da Vertex

Na seção a seguir, você vai acessar as APIs Vertex usando o Private Service Connect em uma rede híbrida (VPN de alta disponibilidade) para alcançar a previsão on-line de maneira particular. No exemplo usado no tutorial, você vai atualizar o arquivo /etc/hosts na instância private-client.

No seu ambiente local, atualizar um ou vários arquivos de máquinas /etc/hosts para teste é apropriado. No entanto, para ambientes de grande escala e produção, é melhor criar uma nova zona de encaminhamento usando o FQDN do endpoint do PSC.

Por exemplo, o endpoint psc criado no tutorial é chamado de pscvertex, que se traduz em pscvertex.p.googleapis.com, ao usar o endpoint para anexar o FQDN com o serviço, por exemplo, us-central1-aiplatform-pscvertex.p.googleapis.com.

Atualizar o DNS local com o endpoint PSC também requer a refatoração de aplicativos locais para chamar o FDQN, por exemplo, us-central1-aiplatform-pscvertex.p.googleapis.com em vez do endpoint público nativo us-central1-aiplatform.googleapis.com.

Os clientes que podem ser configurados para usar um endpoint personalizado podem usar os nomes DNS de p.googleapis.com para enviar solicitações a um endpoint.

Consulte a documentação do seu cliente ou biblioteca cliente para informações sobre como configurá-lo para usar endpoints personalizados. Exemplo:

Abra um novo terminal do Cloud Shell selecionando o "+". Quando a nova guia for aberta, atualize a variável do nome do projeto.

Do Cloud Shell.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

Faça login no cliente privado usando o IAP em um novo Cloud Shell para validar a conectividade com a API Vertex. Para isso, faça uma análise no domínio de vértice us-central1-aiplatform.googleapis.com

No Cloud Shell, faça login na instância do SO de cliente privado.

gcloud compute ssh private-client --project=$projectid --zone=us-central1-a --tunnel-through-iap

Execute a dig.

dig us-central1-aiplatform.googleapis.com

Por exemplo, observe os IPs públicos com base na resposta 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

Atualize a instância de cliente privado /etc/hosts usando o nano ou o editor sudo VI para criar um registro do FQDN da Vertex AI us-central1-aiplatform.googleapis.com que aponta para o endpoint PSC 100.100.10.10. Não é preciso fazer mais alterações.

Exemplo:

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

No SO de cliente particular, faça uma PING no endpoint da API Vertex.

ping us-central1-aiplatform.googleapis.com

Por exemplo, a PING retorna o IP do endpoint do PSC, mas nenhuma resposta é esperada.

user@private-client:~$ ping us-central1-aiplatform.googleapis.com
PING us-central1-aiplatform.googleapis.com (100.100.10.10) 56(84) bytes of data.

No SO de cliente privado, execute tcpdump para validar a resolução de DNS e o caminho de dados do IP para o endpoint do PSC ao realizar um curl na previsão on-line.

 sudo tcpdump -i any port 53 -n or host 100.100.10.10

Abra um quarto terminal do Cloud Shell selecionando o "+". Quando a nova guia for aberta, atualize a variável do nome do projeto.

No Cloud Shell, atualize a variável do nome do projeto.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

No Cloud Shell quatro, execute um SSH para a instância private-client.

gcloud compute ssh --zone "us-central1-a" "private-client" --project "$projectid"

Na próxima seção, você vai criar um arquivo instances.json usando o editor sudo VI ou nano e inserir a string de dados usada para receber uma previsão do modelo implantado.

No SO de cliente privado, crie um arquivo instances.json com a string de dados abaixo:

{"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]]}

Exemplo:

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:$

No SO private-client, crie as seguintes variáveis:

gcloud config list project
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"

Exemplo:

ENDPOINT_ID="3328226095324463104"

No SO de cliente privado no quarto Cloud Shell, execute um curl para receber uma resposta do 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. Validação: acesso particular à API Vertex

No SO de cliente privado do Cloud Shell quatro, observe que o IP do endpoint do PSC (100.100.10.10) foi usado para acessar a API 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

Do terminal TCPDUMP no Cloud Shell três, podemos validar que uma busca DNS para us-central1-aiplatform.googleapis.com não foi observada, já que o arquivo /etc/host teve precedência, mas o endereço IP do PSC 100.100.10.10 foi usado no caminho dos dados.

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

Você validou a conexão com a previsão on-line usando um endpoint público pela Internet e de forma particular com o uso de redes híbridas e o Private Service Connect (googleapis). Saia do SO e volte ao comando do Cloud Shell.

20. Limpar

Exclua os componentes do tutorial no Cloud Shell.

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

Excluir componentes Vertex

Para excluir a imagem do contêiner, acesse o Artifact Registry, escolha o repositório que você criou e clique em Excluir.

616a3108bc2e48c8.png

Para excluir o bucket do Storage, use o menu de navegação do console do Cloud, acesse o Storage, selecione o bucket e clique em Excluir:

eddd1f9fdfaede8.png

Cancelar a implantação do modelo do endpoint. Acesse Vertex AI → Previsão on-line → Selecione diamonds-cpr_endpoint → Cancelar implantação do modelo no endpoint → Cancelar implantação

bc95f092d21d4698.png

Exclua o modelo. Acesse Vertex AI → Model Registry → Excluir modelo

ec4afff091e11606.png

Exclua o endpoint de previsão on-line. Acesse Vertex AI → Previsão on-line → Selecionar diamonds-cpr_endpoint → Excluir endpoint

7453760299bdfb9a.png

21. Parabéns

Parabéns! Você configurou e validou a conexão com a previsão on-line de maneira nativa usando a Internet e de forma privada com o Private Service Connect e a rede híbrida.

Você criou um nat-client e um private-client e usou o TCPDUMP para validar os endereços IP usados para alcançar as APIs Vertex. Além disso, você aprendeu sobre o Private Service Connect (googleapis) e como ele pode ser usado para isolar aplicativos no local e em várias nuvens aproveitando um endpoint PSC do cliente.

Cosmopup acha os tutoriais incríveis!!

e6d3675ca7c6911f.jpeg

Qual é a próxima etapa?

Confira alguns desses tutoriais...

Leia mais e Vídeos

Documentos de referência