Use o Private Service Connect para aceder à IA generativa no Vertex AI a partir de instalações locais


Os anfitriões no local podem alcançar a IA generativa no Vertex AI através da Internet pública ou de forma privada através de uma arquitetura de rede híbrida que usa o Private Service Connect (PSC) através do Cloud VPN ou do Cloud Interconnect. Ambas as opções oferecem encriptação SSL/TLS. No entanto, a opção privada oferece um desempenho muito melhor e, por isso, é recomendada para aplicações críticas.

Neste tutorial, vai usar a VPN de alta disponibilidade (VPN de HA) para aceder à IA generativa no Vertex AI publicamente, através do Cloud NAT, e de forma privada, entre duas redes da nuvem virtual privada (VPC) que podem servir de base para a conetividade privada multinuvem e no local.

Este tutorial destina-se a administradores de redes empresariais, cientistas de dados e investigadores que estão familiarizados com o Vertex AI, a VPC, a Google Cloud consola e oCloud Shell. A familiaridade com a IA generativa no Vertex AI é útil, mas não obrigatória.

Diagrama arquitetónico da utilização do Private Service Connect para aceder à IA generativa na Vertex AI.

Objetivos

  • Crie duas redes VPC, conforme mostrado no diagrama anterior:
    • Um (onprem-vpc) representa uma rede no local.
    • O outro (vertex-networking-vpc) destina-se a aceder à API REST para IA generativa no Vertex AI.
  • Implemente gateways de VPN de alta disponibilidade, túneis de Cloud VPN e Cloud Routers para ligar vertex-networking-vpc e onprem-vpc.
  • Crie um ponto final do Private Service Connect (PSC) para encaminhar pedidos para a API REST GenAI.
  • Configure um trajeto anunciado personalizado do Cloud Router em vertex-networking-vpc para anunciar trajetos para o ponto final do Private Service Connect para onprem-vpc.
  • Crie uma instância de VM do Compute Engine em onprem-vpc para representar uma aplicação cliente que envia pedidos para a API REST GenAI através da VPN de HA.

Custos

Neste documento, usa os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custos com base na sua utilização projetada, use a calculadora de preços.

Os novos Google Cloud utilizadores podem ser elegíveis para uma avaliação gratuita.

Quando terminar as tarefas descritas neste documento, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpe.

Antes de começar

  1. In the Google Cloud console, go to the project selector page.

    Go to project selector

  2. Select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
  3. Verify that billing is enabled for your Google Cloud project.

  4. Se não for o proprietário do projeto, este tem de lhe conceder a função de IAM.roles/resourcemanager.projectIamAdmin Tem de ter esta função para conceder funções e autorizações da IAM a si próprio e a contas de serviço.
  5. Abra o Cloud Shell para executar os comandos indicados neste tutorial. O Cloud Shell é um ambiente de shell interativo para Google Cloud que lhe permite gerir os seus projetos e recursos a partir do navegador de Internet.
  6. No Cloud Shell, defina o projeto atual para o seu Google Cloud ID do projeto e armazene o mesmo ID do projeto na variável do shell projectid:
      projectid="PROJECT_ID"
      gcloud config set project ${projectid}
    Substitua PROJECT_ID pelo ID do seu projeto. Se necessário, pode localizar o ID do projeto na Google Cloud consola. Para mais informações, consulte o artigo Encontre o ID do seu projeto.
  7. Make sure that you have the following role or roles on the project: roles/compute.instanceAdmin.v1, roles/compute.networkAdmin, roles/compute.securityAdmin, roles/dns.admin, roles/iap.tunnelResourceAccessor, roles/iam.serviceAccountCreator, roles/iam.serviceAccountUser, roles/iam.serviceAccountDeleter, roles/resourcemanager.projectIamAdmin, roles/servicedirectory.editor, roles/servicemanagement.quotaAdmin, roles/aiplatform.user

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

    4. For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      Aceder ao IAM
    2. Selecione o projeto.
    3. Clique em Conceder acesso.
    4. No campo Novos responsáveis, introduza o identificador do utilizador. Normalmente, este é o endereço de email de uma Conta Google.

    5. Na lista Selecionar uma função, selecione uma função.
    6. Para conceder funções adicionais, clique em Adicionar outra função e adicione cada função adicional.
    7. Clique em Guardar.

  8. Enable the DNS, IAM, Compute Engine, Service Usage, and Vertex AI APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

Crie duas redes VPC: vertex-networking-vpc e onprem-vpc

Nesta secção, vai criar duas redes VPC: uma para ser a rede principal para aceder à API de IA generativa (também conhecida como IA gen) da Vertex AI e a outra para simular a rede no local.

Crie as redes VPC

  1. Crie a rede VPC para aceder à API GenAI (vertex-networking-vpc):

    gcloud compute networks create vertex-networking-vpc --subnet-mode custom
    
  2. Crie a rede da VPC para simular a rede no local (onprem-vpc):

    gcloud compute networks create onprem-vpc --subnet-mode custom
    
  3. Na rede onprem-vpc, crie uma sub-rede denominada onprem-vpc-subnet1 com um intervalo IPv4 principal de 172.16.10.0/24:

    gcloud compute networks subnets create onprem-vpc-subnet1 \
       --range 172.16.10.0/24 \
       --network onprem-vpc \
       --region us-central1
    
  4. Na Google Cloud consola, aceda ao separador Redes no projeto atual na página Rede de VPC.

    Aceda à rede VPC

  5. Na lista de redes VPC, verifique se as duas redes foram criadas: vertex-networking-vpc e onprem-vpc.

  6. Na página Rede VPC, clique no separador Sub-redes no projeto atual.

  7. Na lista de sub-redes VPC, verifique se a sub-rede onprem-vpc-subnet1 foi criada na rede onprem-vpc.

Configure a conetividade híbrida

Nesta secção, cria dois gateways de VPN de alta disponibilidade que estão ligados entre si. Uma reside na vertex-networking-vpc rede VPC. O outro reside na rede VPC onprem-vpc. Cada gateway contém um Cloud Router e um par de túneis VPN.

Crie os gateways de VPN de alta disponibilidade

  1. No Cloud Shell, crie o gateway de VPN de alta disponibilidade para a rede VPC vertex-networking-vpc:

    gcloud compute vpn-gateways create vertex-networking-vpn-gw1 \
       --network vertex-networking-vpc \
       --region us-central1
    
  2. Crie o gateway de VPN de alta disponibilidade para a rede VPC:onprem-vpc

    gcloud compute vpn-gateways create onprem-vpn-gw1 \
       --network onprem-vpc \
       --region us-central1
    
  3. Na Google Cloud consola, aceda ao separador Gateways de VPN do Cloud na página VPN.

    Aceda à VPN

  4. Na lista de gateways de VPN, verifique se os dois gateways ( vertex-networking-vpn-gw1 e onprem-vpn-gw1) foram criados e se cada um tem dois endereços IP.

Crie Cloud Routers

  1. No Cloud Shell, crie um Cloud Router para a rede VPC:vertex-networking-vpc

    gcloud compute routers create vertex-networking-vpc-router1 \
       --region us-central1\
       --network vertex-networking-vpc \
       --asn 65001
    
  2. Crie um Cloud Router para a rede de VPC onprem-vpc:

    gcloud compute routers create onprem-vpc-router1 \
       --region us-central1\
       --network onprem-vpc\
       --asn 65002
    

Adicione uma gateway do Cloud NAT à onprem-vpc rede de VPC

Neste passo, adiciona um gateway Cloud NAT ao Cloud Router para a rede VPC onprem-vpc. Um gateway Cloud NAT oferece conetividade de saída para instâncias de máquinas virtuais (VM) do Compute Engine que não têm endereços IP externos.

  1. No Cloud Shell, adicione uma gateway do Cloud NAT ao onprem-vpc-router1Cloud Router:

    gcloud compute routers nats create us-central-cloudnat-onprem \
       --router=onprem-vpc-router1 \
       --auto-allocate-nat-external-ips \
       --nat-all-subnet-ip-ranges \
       --region us-central1
    
  2. Na Google Cloud consola, aceda à página Routers na nuvem.

    Aceder aos Cloud Routers

  3. Na lista de routers na nuvem, verifique se vertex-networking-vpc-router1 e onprem-vpc-router1 foram criados. Pode ter de atualizar o separador do navegador da Google Cloud consola para ver os novos valores.

  4. Na lista do Cloud Router, clique em onprem-vpc-router1.

  5. Na página Detalhes do router, verifique se o gateway us-central-cloudnat-onprem Cloud NAT foi criado.

Crie túneis de VPN

  1. Na rede vertex-networking-vpc, crie um túnel de VPN denominado vertex-networking-vpc-tunnel0:

    gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel0 \
       --peer-gcp-gateway onprem-vpn-gw1 \
       --region us-central1 \
       --ike-version 2 \
       --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
       --router vertex-networking-vpc-router1 \
       --vpn-gateway vertex-networking-vpn-gw1 \
       --interface 0
    
  2. Na rede vertex-networking-vpc, crie um túnel de VPN denominado vertex-networking-vpc-tunnel1:

    gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel1 \
       --peer-gcp-gateway onprem-vpn-gw1 \
       --region us-central1 \
       --ike-version 2 \
       --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
       --router vertex-networking-vpc-router1 \
       --vpn-gateway vertex-networking-vpn-gw1 \
       --interface 1
    
  3. Na rede onprem-vpc, crie um túnel de VPN denominado onprem-vpc-tunnel0:

    gcloud compute vpn-tunnels create onprem-vpc-tunnel0 \
       --peer-gcp-gateway vertex-networking-vpn-gw1 \
       --region us-central1\
       --ike-version 2 \
       --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
       --router onprem-vpc-router1 \
       --vpn-gateway onprem-vpn-gw1 \
       --interface 0
    
  4. Na rede onprem-vpc, crie um túnel de VPN denominado onprem-vpc-tunnel1:

    gcloud compute vpn-tunnels create onprem-vpc-tunnel1 \
       --peer-gcp-gateway vertex-networking-vpn-gw1 \
       --region us-central1\
       --ike-version 2 \
       --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
       --router onprem-vpc-router1 \
       --vpn-gateway onprem-vpn-gw1 \
       --interface 1
    
  5. Na Google Cloud consola, aceda à página VPN.

    Aceda à VPN

  6. Na lista de túneis VPN, verifique se os quatro túneis VPN foram criados.

Estabeleça sessões de BGP

O Cloud Router usa o protocolo de gateway de fronteira (BGP) para trocar rotas entre a sua rede VPC (neste caso, vertex-networking-vpc) e a sua rede nas instalações (representada por onprem-vpc). No Cloud Router, configura uma interface e um par BGP para o seu router nas instalações. A interface e a configuração do par BGP formam em conjunto uma sessão de BGP. Nesta secção, cria duas sessões BGP para vertex-networking-vpc e duas para onprem-vpc.

Depois de configurar as interfaces e os pares BGP entre os routers, estes começam automaticamente a trocar rotas.

Estabeleça sessões de BGP para vertex-networking-vpc

  1. No Cloud Shell, na rede vertex-networking-vpc, crie uma interface BGP para vertex-networking-vpc-tunnel0:

    gcloud compute routers add-interface vertex-networking-vpc-router1 \
       --interface-name if-tunnel0-to-onprem \
       --ip-address 169.254.0.1 \
       --mask-length 30 \
       --vpn-tunnel vertex-networking-vpc-tunnel0 \
       --region us-central1
    
  2. Na rede vertex-networking-vpc, crie um par BGP para bgp-onprem-tunnel0:

    gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \
       --peer-name bgp-onprem-tunnel0 \
       --interface if-tunnel0-to-onprem \
       --peer-ip-address 169.254.0.2 \
       --peer-asn 65002 \
       --region us-central1
    
  3. Na rede vertex-networking-vpc, crie uma interface BGP para vertex-networking-vpc-tunnel1:

    gcloud compute routers add-interface vertex-networking-vpc-router1 \
       --interface-name if-tunnel1-to-onprem \
       --ip-address 169.254.1.1 \
       --mask-length 30 \
       --vpn-tunnel vertex-networking-vpc-tunnel1 \
       --region us-central1
    
  4. Na rede vertex-networking-vpc, crie um par BGP para bgp-onprem-tunnel1:

    gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \
       --peer-name bgp-onprem-tunnel1 \
       --interface if-tunnel1-to-onprem \
       --peer-ip-address 169.254.1.2 \
       --peer-asn 65002 \
       --region us-central1
    

Estabeleça sessões de BGP para onprem-vpc

  1. Na rede onprem-vpc, crie uma interface BGP para onprem-vpc-tunnel0:

    gcloud compute routers add-interface onprem-vpc-router1 \
       --interface-name if-tunnel0-to-vertex-networking-vpc \
       --ip-address 169.254.0.2 \
       --mask-length 30 \
       --vpn-tunnel onprem-vpc-tunnel0 \
       --region us-central1
    
  2. Na rede onprem-vpc, crie um par BGP para bgp-vertex-networking-vpc-tunnel0:

    gcloud compute routers add-bgp-peer onprem-vpc-router1 \
       --peer-name bgp-vertex-networking-vpc-tunnel0 \
       --interface if-tunnel0-to-vertex-networking-vpc \
       --peer-ip-address 169.254.0.1 \
       --peer-asn 65001 \
       --region us-central1
    
  3. Na rede onprem-vpc, crie uma interface BGP para onprem-vpc-tunnel1:

    gcloud compute routers add-interface onprem-vpc-router1  \
       --interface-name if-tunnel1-to-vertex-networking-vpc \
       --ip-address 169.254.1.2 \
       --mask-length 30 \
       --vpn-tunnel onprem-vpc-tunnel1 \
       --region us-central1
    
  4. Na rede onprem-vpc, crie um par BGP para bgp-vertex-networking-vpc-tunnel1:

    gcloud compute routers add-bgp-peer onprem-vpc-router1 \
       --peer-name bgp-vertex-networking-vpc-tunnel1 \
       --interface if-tunnel1-to-vertex-networking-vpc \
       --peer-ip-address 169.254.1.1 \
       --peer-asn 65001 \
       --region us-central1
    

Valide a criação da sessão de BGP

  1. Na Google Cloud consola, aceda à página VPN.

    Aceda à VPN

  2. Na lista de túneis VPN, verifique se o valor na coluna Estado da sessão de BGP de cada um dos túneis mudou de Configurar sessão de BGP para BGP estabelecido. Pode ter de atualizar o separador do navegador da Google Cloud consola para ver os novos valores.

Crie o ponto final do Private Service Connect (PSC)

Nesta secção, cria um ponto final do Private Service Connect (PSC) para as APIs Google que as instâncias de VM na rede onprem-vpc vão usar para aceder à API GenAI a partir da sua rede onprem-vpc.

Um ponto final do Private Service Connect (PSC) é um endereço IP interno na rede onprem-vpc que pode ser acedido diretamente pelos clientes nessa rede. Este ponto final é criado implementando uma regra de encaminhamento que direciona o tráfego de rede que corresponde ao endereço IP do ponto final do PSC para um pacote de APIs Google: especificamente, o pacote all-apis.

O endereço IP do ponto final do PSC (192.168.0.1) é anunciado a partir do vertex-networking-vpc-router Cloud Router como uma rota anunciada personalizada para a rede onprem-vpc num passo posterior.

  1. Reserve um endereço IP interno global para atribuir ao ponto final:

    gcloud compute addresses create psc-googleapi-ip \
       --global \
       --purpose=PRIVATE_SERVICE_CONNECT \
       --addresses=192.168.0.1 \
       --network=vertex-networking-vpc
    
  2. Crie o ponto final, juntamente com uma regra de encaminhamento que ligue o ponto final às APIs e aos serviços Google:

    gcloud compute forwarding-rules create pscvertex \
       --global \
       --network=vertex-networking-vpc\
       --address=psc-googleapi-ip \
       --target-google-apis-bundle=all-apis
    
  3. Liste os pontos finais do PSC configurados e verifique se o ponto final pscvertex foi criado:

    gcloud compute forwarding-rules list  \
       --filter target="(all-apis OR vpc-sc)" --global
    
  4. Obtenha os detalhes do ponto final do PSC configurado e verifique se o endereço IP é 192.168.0.1:

    gcloud compute forwarding-rules describe \
       pscvertex --global
    

Crie anúncios de rotas personalizadas para vertex-networking-vpc

Nesta secção, cria uma rota anunciada personalizada para vertex-networking-vpc-router1 (o Cloud Router para vertex-networking-vpc) anunciar o endereço IP do ponto final do PSC à rede onprem-vpc.

  1. Na Google Cloud consola, aceda à página Routers na nuvem.

    Aceder aos Cloud Routers

  2. Na lista do Cloud Router, clique em vertex-networking-vpc-router1.

  3. Na página Detalhes do router, clique em Editar.

  4. Na secção Rotas anunciadas, para Rotas, selecione Criar rotas personalizadas.

  5. Selecione a caixa de verificação Anunciar todas as sub-redes visíveis para o Cloud Router para continuar a anunciar as sub-redes disponíveis para o Cloud Router. A ativação desta opção imita o comportamento do Cloud Router no modo de anúncio predefinido.

  6. Clique em Adicionar um trajeto personalizado.

  7. Para Origem, selecione Intervalo de IPs personalizado.

  8. Para o Intervalo de endereços IP, introduza o seguinte endereço IP:

    192.168.0.1
    
  9. Em Descrição, introduza o seguinte texto:

    Custom route to advertise Private Service Connect endpoint IP address
    
  10. Clique em Concluído e, de seguida, clique em Guardar.

Valide se onprem-vpc aprendeu os trajetos anunciados

  1. Na Google Cloud consola, aceda à página Rotas.

    Aceda a Trajetos

  2. No separador Rotas eficazes, faça o seguinte:

    1. Para Rede, escolha onprem-vpc.
    2. Para Região, escolha us-central1 (Iowa).
    3. Clique em Ver.
    4. Na lista de rotas, verifique se existem entradas cujos nomes começam por onprem-vpc-router1-bgp-vertex-networking-vpc-tunnel0 e onprem-vpc-router1-bgp-vfertex-networking-vpc-tunnel1 e se ambas têm um intervalo de IPs de destino de 192.168.0.1/32. (192.168.0.1 é o endereço IP do ponto final do PSC.)

      Se estas entradas não aparecerem imediatamente, aguarde alguns minutos e, em seguida, atualize o separador do navegador da consola Google Cloud .

Configure uma instância de VM na rede no local

Nesta secção, cria uma instância de VM do Compute Engine na rede de VPC onprem-vpc. Esta instância de VM simula um cliente no local que se liga ao ponto final do PSC e acede à API GenAI.

Crie uma conta de serviço gerida pelo utilizador

Neste tutorial, vai criar uma conta de serviço gerida pelo utilizador seguindo as práticas recomendadas do Compute Engine e do IAM.

  1. No Cloud Shell, execute os seguintes comandos, substituindo PROJECT_ID pelo ID do seu projeto:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  2. Crie a conta de serviço:

    gcloud iam service-accounts create user-managed-sa
    
  3. Atribua a função IAM Utilizador da Vertex AI (roles/aiplatform.user) à conta de serviço:

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

Crie a instância de VM on-prem-client

Neste passo, cria a instância de VM, que usa o endereço IP do Private Service Connect (192.168.0.1) para aceder às APIs Google através da VPN de alta disponibilidade.

Para permitir que o Identity-Aware Proxy (IAP) se ligue às suas instâncias de VM, crie uma regra de firewall que:

  • Aplica-se a todas as instâncias de VM que quer tornar acessíveis através do IAP. (Neste caso, só existe on-prem-client.)
  • Permite o tráfego TCP através da porta 22 a partir do intervalo de IP 35.235.240.0/20. Este intervalo contém todos os endereços IP que o IAP usa para o encaminhamento TCP.
  1. Crie a instância de VM on-prem-client. O comando seguinte também instala os pacotes tcpdump e dnsutils, que contêm as utilidades tcpdump e dig que vai usar mais tarde para validar os pedidos da API:

    gcloud compute instances create on-prem-client \
       --zone=us-central1-a \
       --image-family=debian-11 \
       --image-project=debian-cloud \
       --subnet=onprem-vpc-subnet1 \
       --scopes=https://www.googleapis.com/auth/cloud-platform \
       --no-address \
       --shielded-secure-boot \
       --service-account=user-managed-sa@$projectid.iam.gserviceaccount.com \
       --metadata startup-script="#! /bin/bash
          sudo apt-get update
          sudo apt-get install tcpdump dnsutils -y"
    
  2. Crie uma regra de firewall do IAP com o nome ssh-iap-on-prem-vpc:

    gcloud compute firewall-rules create ssh-iap-on-prem-vpc \
       --network onprem-vpc \
       --allow tcp:22 \
       --source-ranges=35.235.240.0/20
    

Valide o acesso público à Internet à IA generativa na Vertex AI

Nesta secção, inicia sessão na instância de VM on-prem-client através do Identity-Aware Proxy e, em seguida, valida a conetividade pública com as APIs Vertex AI (incluindo a IA gen) executando o comando dig no domínio público da Vertex AI (us-central1-aiplatform.googleapis.com).

  1. No Cloud Shell (separador um), execute os seguintes comandos, substituindo PROJECT_ID pelo ID do seu projeto:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  2. Inicie sessão na on-prem-clientinstância de VM através do IAP:

    gcloud compute ssh on-prem-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
    
  3. Execute o comando dig:

    dig us-central1-aiplatform.googleapis.com
    

    Deverá ver um resultado dig semelhante ao seguinte, em que os endereços IP na secção de resposta são endereços IP públicos:

    ; <<>> DiG 9.16.44-Debian <<>> us-central1.aiplatfom.googleapis.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42506
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 512
    ;; QUESTION SECTION:
    ;us-central1.aiplatfom.googleapis.com. IN A
    
    ;; ANSWER SECTION:
    us-central1.aiplatfom.googleapis.com. 300 IN A  173.194.192.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.152.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  172.217.219.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.146.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.147.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.125.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.136.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.148.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.200.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.234.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.251.171.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  108.177.112.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.128.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.251.6.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  172.217.212.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  74.125.124.95
    
    ;; Query time: 8 msec
    ;; SERVER: 169.254.169.254#53(169.254.169.254)
    ;; WHEN: Wed Sep 27 04:10:16 UTC 2023
    ;; MSG SIZE  rcvd: 321
    

Configure e valide o acesso privado à IA generativa na Vertex AI

Nesta secção, configura o acesso privado à IA generativa na Vertex AI para que, quando envia pedidos para o ponto final do serviço público (us-central1-aiplatform.googleapis.com), estes sejam redirecionados para o seu ponto final do PSC. Por sua vez, o ponto final da PSC encaminha o pedido para

Atualize o ficheiro /etc/hosts para apontar para o ponto final do PSC

Neste passo, adiciona uma linha ao ficheiro /etc/hosts que faz com que os pedidos enviados para o ponto final do serviço público (us-central1-aiplatform.googleapis.com) sejam redirecionados para o ponto final do PSC (192.168.0.1).

  1. Na on-prem-client instância de VM (separador um), use um editor de texto, como o vim ou o nano para abrir o ficheiro /etc/hosts:

    sudo vim /etc/hosts
    
  2. Adicione a seguinte linha ao ficheiro:

    192.168.0.1 us-central1-aiplatform.googleapis.com
    

    Esta linha atribui o endereço IP do ponto final do PSC (192.168.0.1) ao nome de domínio totalmente qualificado para a API Google Vertex AI (us-central1-aiplatform.googleapis.com).

    O ficheiro editado deve ter o seguinte aspeto:

    127.0.0.1       localhost
    ::1             localhost ip6-localhost ip6-loopback
    ff02::1         ip6-allnodes
    ff02::2         ip6-allrouters
    
    192.168.0.1 us-central1-aiplatform.googleapis.com  # Added by you
    172.16.10.6 on-prem-client.us-central1-a.c.vertex-genai-400103.internal on-prem-client  # Added by Google
    169.254.169.254 metadata.google.internal  # Added by Google
    
  3. Guarde o ficheiro da seguinte forma:

    • Se estiver a usar o vim, prima a tecla Esc e, de seguida, escreva :wq para guardar o ficheiro e sair.
    • Se estiver a usar o nano, escreva Control+O e prima Enter para guardar o ficheiro e, de seguida, escreva Control+X para sair.
  4. Envie um ping para o ponto final do Vertex AI da seguinte forma:

    ping us-central1-aiplatform.googleapis.com
    

    O comando ping deve devolver o seguinte resultado. 192.168.0.1 é o endereço IP do ponto final do PSC:

    PING us-central1-aiplatform.googleapis.com (192.168.0.1) 56(84) bytes of data.
    
  5. EscrevaControl+C para sair de ping.

  6. Execute o seguinte comando tcpdump para validar a resolução de DNS e o caminho dos dados de IP quando envia um pedido de previsão online para o ponto final:

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

Crie o pedido privado

Neste passo, cria um ficheiro de texto denominado request.json que contém o payload de um pedido curl de exemplo que envia para a API REST de IA generativa. Para mais informações acerca de pedidos de exemplo, consulte o artigo Pedido de exemplo.

  1. Mantendo o comando tcpdump em execução no separador um, abra uma nova sessão do Cloud Shell (separador dois) clicando em abrir um novo separador no Cloud Shell.

  2. Na nova sessão do Cloud Shell (separador dois), execute os seguintes comandos, substituindo PROJECT_ID pelo ID do seu projeto:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  3. Inicie sessão na on-prem-clientinstância de VM através do IAP:

    gcloud compute ssh on-prem-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
    
  4. Execute os seguintes comandos, substituindo PROJECT_ID pelo ID do seu projeto:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  5. Use um editor de texto, como o vim ou o nano, para criar um novo ficheiro denominado request.json que contenha o seguinte texto:

    {
       "instances": [
          { "prompt": "Give me ten interview questions for the role of program manager."}
       ],
       "parameters": {
          "temperature": 0.2,
          "maxOutputTokens": 256,
          "topK": 40,
          "topP": 0.95
       }
    }
    
  6. Execute o seguinte comando para enviar um pedido para o ponto final do PSC, que encaminha o pedido para a API GenAI. Quando o ponto final recebe a resposta, reencaminha-a para a VM on-prem-client:

    curl -X POST \
       -H "Authorization: Bearer $(gcloud auth print-access-token)" \
       -H "Content-Type: application/json; charset=utf-8" \
       -d @request.json \
       "https://us-central1-aiplatform.googleapis.com/v1/projects/$projectid/locations/us-central1/publishers/google/models/text-bison:predict"
    

    Deverá ver uma resposta semelhante ao exemplo seguinte:

    {
       "predictions": [
          {
          "content": " 1. **What is your experience in managing programs?**\n2. **What are your strengths and weaknesses as a program manager?**\n3. **What is your approach to managing a program?**\n4. **How do you handle risks and challenges in a program?**\n5. **How do you communicate with stakeholders in a program?**\n6. **How do you measure the success of a program?**\n7. **What is your experience in working with cross-functional teams?**\n8. **What is your experience in managing budgets and resources?**\n9. **What is your experience in managing change in a program?**\n10. **What are your career goals as a program manager?**",
          "citationMetadata": {
             "citations": []
          },
          "safetyAttributes": {
             "categories": [
             "Finance",
             "Health"
             ],
             "blocked": false,
             "scores": [
                0.6,
                0.1
             ]
          }
          }
       ],
       "metadata": {
          "tokenMetadata": {
             "outputTokenCount": {
                "totalBillableCharacters": 505,
                "totalTokens": 153
             },
             "inputTokenCount": {
                "totalBillableCharacters": 54,
                "totalTokens": 12
             }
          }
       }
    }
    
  7. No separador Um, verifique se o endereço IP do ponto final PSC (192.168.0.1) foi usado para aceder às APIs Vertex AI a partir da instância de VM on-prem-client (sub-rede 172.16.10.0/28).

    No terminal tcpdump no separador 1 do Cloud Shell, pode ver que não é necessária uma procura de DNS para us-central1-aiplatform.googleapis.com, porque a linha que adicionou ao ficheiro /etc/hosts tem precedência e o endereço IP do ponto final do PSC (192.168.0.1) é usado no caminho de dados.

    Deverá ver um resultado tcpdump semelhante ao seguinte:

    23:48:49.938797 ens4  Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [P.], seq 2054:2093, ack 6264, win 501, options [nop,nop,TS val 2943864305 ecr 2340789954], length 39
    23:48:49.938947 ens4  Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [P.], seq 2093:2117, ack 6264, win 501, options [nop,nop,TS val 2943864305 ecr 2340789954], length 24
    23:48:49.939839 ens4  Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [F.], seq 2117, ack 6264, win 501, options [nop,nop,TS val 2943864306 ecr 2340789954], length 0
    23:48:49.940292 ens4  In  IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [.], ack 2117, win 272, options [nop,nop,TS val 2340789958 ecr 2943864305], length 0
    23:48:49.940437 ens4  In  IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [F.], seq 6264, ack 2117, win 272, options [nop,nop,TS val 2340789958 ecr 2943864305], length 0
    23:48:49.940442 ens4  Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [.], ack 6265, win 501, options [nop,nop,TS val 2943864307 ecr 2340789958], length 0
    23:48:49.941193 ens4  In  IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [.], ack 2118, win 272, options [nop,nop,TS val 2340789959 ecr 2943864306], length 0
    

Limpar

Para evitar incorrer em custos na sua Google Cloud conta pelos recursos usados neste tutorial, elimine o projeto que contém os recursos ou mantenha o projeto e elimine os recursos individuais.

Pode eliminar os recursos individuais no projeto executando os seguintes comandos no Cloud Shell:

   projectid=PROJECT_ID
   gcloud config set project ${projectid}
   gcloud compute firewall-rules delete ssh-iap-on-prem-vpc --quiet
   gcloud compute instances delete on-prem-client --zone=us-central1-a --quiet
   gcloud iam service-accounts delete user-managed-sa@$projectid.iam.gserviceaccount.com --quiet
   gcloud compute forwarding-rules delete pscvertex --global --quiet
   gcloud compute addresses delete psc-googleapi-ip --global --quiet
   gcloud compute vpn-tunnels delete vertex-networking-vpc-tunnel0 vertex-networking-vpc-tunnel1 onprem-vpc-tunnel0 onprem-vpc-tunnel1 --region=us-central1 --quiet
   gcloud compute routers nats delete us-central-cloudnat-onprem --router=onprem-vpc-router1 --region=us-central1 --quiet
   gcloud compute routers delete vertex-networking-vpc-router1 onprem-vpc-router1 --region=us-central1 --quiet
   gcloud compute vpn-gateways delete vertex-networking-vpn-gw1 onprem-vpn-gw1 --region=us-central1 --quiet
   gcloud compute networks subnets delete onprem-vpc-subnet1 --region=us-central1 --quiet
   gcloud compute networks delete onprem-vpc --quiet
   gcloud compute networks delete vertex-networking-vpc --quiet

O que se segue?