Private Service Connect: como usar o Private Service Connect para publicar e consumir serviços com o Cloud Run

Sobre este codelab
schedule61 minutos
subjectÚltimo 28 de março de 2025 atualizado
account_circleEscrito por Lorin Price

O Private Service Connect (PSC) é um recurso da rede do Google Cloud que permite que consumidores acessem serviços gerenciados de maneira particular na rede VPC deles. Da mesma forma, ele permite que produtores do serviço gerenciado hospedem esses serviços em redes VPC separadas e ofereçam uma conexão particular aos consumidores.

O Cloud Run é uma plataforma de computação gerenciada para a execução de contêineres diretamente na infraestrutura escalonável do Google.

O Cloud Run pode ser consumido como um serviço PSC de duas maneiras diferentes.

  1. Usando o PSC para APIs do Google chamando o Cloud Run pelo URL run.app fornecido
  2. Por um serviço de produtor de PSC personalizado em que o Cloud Run é exposto por um anexo de serviço em um balanceador de carga de aplicativo interno com um NEG sem servidor.

Neste codelab, vamos mostrar como configurar o Cloud Run com PSC para esses dois cenários.

O que você vai aprender

  • Como implantar apps básicos no Cloud Run
  • Controles de entrada e saída do Cloud Run
  • Como implantar o Cloud Run por um balanceador de carga de aplicativo interno com um NEG sem servidor
  • Como configurar um serviço de produtor do PSC usando um anexo de serviço
  • Como implantar endpoints do PSC

O que é necessário

  • Projeto do Google Cloud com permissões de proprietário

2. Topologia do codelab

455a040761a8fab9.png

Neste codelab, você vai implantar dois serviços do Cloud Run que serão acessíveis pelo PSC: primeiro como um serviço publicado personalizado com PSC e, em segundo lugar, como PSC para APIs do Google. Você vai criar duas VPCs, uma VPC de consumidor e uma VPC de produtor. Primeiro, você vai implantar o serviço Hello World do Cloud Run e torná-lo acessível por um balanceador de carga de aplicativo interno regional e um NEG sem servidor na VPC do produtor. Verifique se o serviço está funcionando pelo balanceador de carga usando o cliente produtor antes de configurar o serviço do Cloud Run para ser acessível como um serviço de produtor PSC usando um anexo de serviço.

Na VPC do consumidor, você vai implantar um endpoint do PSC que aponta para o anexo de serviço do Cloud Run que configuramos na VPC do produtor. Em seguida, você vai verificar se o serviço pode ser acessado pelo PSC em um cliente do consumidor na VPC do consumidor. Em seguida, você vai criar outro serviço do Cloud Run que chama o endpoint do PSC. Por fim, você vai implantar um endpoint do PSC para APIs do Google. No cliente do consumidor, você vai acessar o Cloud Run pelo URL fornecido, que vai usar o PSC para o endpoint das APIs do Google.

3. Configuração e requisitos

Configuração de ambiente autoguiada

  1. Faça login no Console do Google Cloud e crie um novo projeto ou reutilize um existente. Crie uma conta do Gmail ou do Google Workspace, se ainda não tiver uma.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • O Nome do projeto é o nome de exibição para os participantes do projeto. É uma string de caracteres não usada pelas APIs do Google e pode ser atualizada quando você quiser.
  • O ID do projeto precisa ser exclusivo em todos os projetos do Google Cloud e não pode ser mudado após a definição. O console do Cloud gera automaticamente uma string exclusiva. Em geral, não importa o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, normalmente identificado como PROJECT_ID. Se você não gostar do ID gerado, crie outro aleatório. Se preferir, teste o seu e confira se ele está disponível. Ele não pode ser mudado após essa etapa e permanece durante o projeto.
  • Para sua informação, há um terceiro valor, um Número do projeto, que algumas APIs usam. Saiba mais sobre esses três valores na documentação.
  1. Em seguida, ative o faturamento no console do Cloud para usar os recursos/APIs do Cloud. A execução deste codelab não vai ser muito cara, se tiver algum custo. Para encerrar os recursos e evitar cobranças além deste tutorial, exclua os recursos criados ou exclua o projeto. Novos usuários do Google Cloud estão qualificados para o programa de US$ 300 de avaliação sem custos.

Inicie o Cloud Shell

Embora o Google Cloud e o Spanner possam ser operados remotamente do seu laptop, neste codelab usaremos o Google Cloud Shell, um ambiente de linha de comando executado no Cloud.

No Console do Google Cloud, clique no ícone do Cloud Shell na barra de ferramentas superior à direita:

55efc1aaa7a4d3ad.png

O provisionamento e a conexão com o ambiente levarão apenas alguns instantes para serem concluídos: Quando o processamento for concluído, você verá algo como:

7ffe5cbb04455448.png

Essa máquina virtual contém todas as ferramentas de desenvolvimento necessárias. Ela oferece um diretório principal persistente de 5 GB, além de ser executada no Google Cloud. Isso aprimora o desempenho e a autenticação da rede. Neste codelab, todo o trabalho pode ser feito com um navegador. Você não precisa instalar nada.

4. Antes de começar

Ativar APIs

No Cloud Shell, verifique se o projeto está configurado e configure as variáveis.

gcloud auth login
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
export projectid=[YOUR-PROJECT-ID]
export projectnum=[YOUR-PROJECT-NUM]
export region=us-central1
export zone=us-central1-a
echo $projectid
echo $projectnum
echo $region
echo $zone

Ativar todos os serviços necessários

gcloud services enable compute.googleapis.com
gcloud services enable run.googleapis.com
gcloud services enable servicedirectory.googleapis.com
gcloud services enable dns.googleapis.com
gcloud services enable cloudbuild.googleapis.com
gcloud services enable cloudresourcemanager.googleapis.com

5. Criar rede VPC do produtor

Rede VPC

No Cloud Shell

gcloud compute networks create producer-vpc --subnet-mode custom

Criar sub-redes

No Cloud Shell

gcloud compute networks subnets create producer-subnet \
    --network=producer-vpc \
    --range=10.0.0.0/28 \
    --region=$region

gcloud compute networks subnets create lb-proxy-subnet \
    --network=producer-vpc \
    --range=10.100.100.0/24 \
    --region=$region \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE

gcloud compute networks subnets create psc-nat-subnet \
    --network=producer-vpc \
    --region=$region \
    --range=10.100.101.0/24 \
    --purpose=PRIVATE_SERVICE_CONNECT

A sub-rede do PSC será associada ao anexo de serviço PSC para fins de conversão de endereços de rede. Para casos de uso de produção, essa sub-rede precisa ter o tamanho adequado para oferecer suporte ao número de endpoints conectados. Consulte a documentação sobre o dimensionamento de sub-redes do PSC NAT para mais informações.

Criar políticas e regras de firewall de rede do produtor

No Cloud Shell

gcloud compute network-firewall-policies create producer-vpc-policy --global

gcloud compute network-firewall-policies associations create \
    --firewall-policy producer-vpc-policy \
    --network producer-vpc \
    --name network-producer-vpc \
    --global-firewall-policy

Para permitir que o IAP se conecte às suas instâncias de VM, crie uma regra de firewall que:

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

No Cloud Shell

gcloud compute network-firewall-policies rules create 1000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "SSH with IAP" \
    --direction INGRESS \
    --src-ip-ranges 35.235.240.0/20 \
    --layer4-configs tcp:22  \
    --global-firewall-policy

6. Criar o Hello World do Cloud Run

Siga as instruções aqui para criar um aplicativo de exemplo em Python. Execute estes comandos no Cloud Shell. Depois de concluir a etapa 3 em "Programar o aplicativo de exemplo", volte a este codelab e siga as instruções abaixo para implantar no Cloud Run a partir do código-fonte.

Antes de implantar o serviço do Cloud Run, execute o comando a seguir para garantir que a conta de serviço de computação padrão tenha as permissões adequadas.

No Cloud Shell

gcloud projects add-iam-policy-binding $projectid --member=serviceAccount:$projectnum-compute@developer.gserviceaccount.com --role=roles/run.builder

OBSERVAÇÃO:neste codelab, presumimos que sua organização não tenha ativado a política organizacional de compartilhamento restrito de domínio. Se essa política estiver ativada, você terá que realizar etapas extras para implantar o Cloud Run com autenticação, configurar uma tela de consentimento do OAuth e configurar o IAP para o back-end do balanceador de carga. Recomendamos que todas essas etapas de configuração sejam seguidas em um ambiente de produção.

No Cloud Shell

gcloud beta run deploy helloworld \
    --source . \
    --platform=managed \
    --ingress=internal \
    --allow-unauthenticated \
    --no-default-url \
    --region=$region

O uso da flag --no-default-url implanta seu serviço do Cloud Run sem o URL run.app fornecido. Não vamos usar o URL para esse serviço. No momento da publicação deste codelab, esse recurso ainda está em pré-lançamento.

Antes de continuar, volte para o diretório principal do Cloud Shell.

No Cloud Shell

cd ..

7. Expor o Hello World do Cloud Run por um balanceador de carga de aplicativo interno

Reserve um endereço IP interno estático para a regra de encaminhamento do balanceador de carga.

No Cloud Shell, faça o seguinte:

gcloud compute addresses create cloudrun-ip \
 --region=$region \
 --subnet=producer-subnet

gcloud compute addresses describe cloudrun-ip --region=$region

Exemplo de saída

address: 10.0.1.31
addressType: INTERNAL
creationTimestamp: '2025-03-17T09:04:06.620-07:00'
description: ''
id: 'xxxx'
kind: compute#address
labelFingerprint: xxxx
name: cloudrun-ip
networkTier: PREMIUM
purpose: GCE_ENDPOINT
region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/addresses/cloudrun-ip
status: RESERVED
subnetwork: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/subnetworks/producer-subnet

Anote o endereço IP que você acabou de criar.

Criar o balanceador de carga de aplicativo interno regional

No Cloud Shell, faça o seguinte:

gcloud compute network-endpoint-groups create cloudrun-producer-neg \
    --region=$region \
    --network-endpoint-type=serverless \
    --cloud-run-service=helloworld

gcloud compute backend-services create cloudrun-producer-bes \
    --load-balancing-scheme=INTERNAL_MANAGED \
    --protocol=HTTP \
    --region=$region

gcloud compute backend-services add-backend cloudrun-producer-bes \
        --region=$region \
        --network-endpoint-group=cloudrun-producer-neg \
        --network-endpoint-group-region=$region

gcloud compute url-maps create producer-urlmap \
        --default-service=cloudrun-producer-bes \
        --region=$region

gcloud compute target-http-proxies create producer-http-proxy \
        --url-map=producer-urlmap \
        --region=$region

No Cloud Shell, faça o seguinte:

gcloud compute forwarding-rules create cloudrun-fr \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --network=producer-vpc \
        --subnet=producer-subnet \
        --address=cloudrun-ip \
        --target-http-proxy=producer-http-proxy \
        --target-http-proxy-region=$region \
        --region=$region \
        --ports=80 \
        --allow-global-access

8. Testar o Hello World do Cloud Run exposto pelo balanceador de carga

Criar uma VM de teste

No Cloud Shell

gcloud compute instances create producer-client \
    --zone=$zone \
    --subnet=producer-subnet \
    --no-address \
    --scopes=cloud-platform

No Cloud Shell, faça o seguinte:

gcloud compute ssh \
    --zone "$zone" "producer-client" \
    --tunnel-through-iap \
    --project $projectid

Substitua <loadbalancer-ip> pelo endereço IP que você criou anteriormente (por exemplo, 10.0.0.2).

Teste Hello World

Na VM de produtor

curl <loadbalancer-ip>

Resposta esperada

Hello World!

Saia da VM.

Na VM de produtor

exit

9. Criar anexo de serviço

No Cloud Shell

gcloud compute service-attachments create cloudrun-attachment \
    --region=$region \
    --producer-forwarding-rule=cloudrun-fr \
    --connection-preference=ACCEPT_MANUAL \
    --consumer-accept-list=$projectid=5 \
    --nat-subnets=psc-nat-subnet

Em seguida, extraia e anote o URI do anexo de serviço para configurar o endpoint do PSC no ambiente do consumidor.

No Cloud Shell, faça o seguinte:

gcloud compute service-attachments describe cloudrun-attachment --region=$region

Exemplo de resultado esperado

connectionPreference: ACCEPT_MANUAL
consumerAcceptLists:
- connectionLimit: 5
  projectIdOrNum: $projectid
creationTimestamp: '2025-03-10T08:49:08.134-07:00'
description: ''
enableProxyProtocol: false
fingerprint: -F0Kpe3Fi8o=
id: '2679595584727463707'
kind: compute#serviceAttachment
name: cloudrun-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/subnetworks/psc-nat-subnet
pscServiceAttachmentId:
  high: 'xxxxx'
  low: 'xxxx'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/serviceAttachments/cloudrun-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$projectid/forwardingRules/cloudrun-fr

10. Criar uma rede VPC do consumidor

Rede VPC

No Cloud Shell

gcloud compute networks create consumer-vpc --subnet-mode custom

Criar sub-rede

No Cloud Shell

gcloud compute networks subnets create consumer-subnet \
    --network=consumer-vpc \
    --range=10.0.0.0/24 \
    --region=$region \
    --enable-private-ip-google-access

gcloud compute networks subnets create cloudrun-egress \
    --network=consumer-vpc \
    --range=10.0.1.0/24 \
    --region=$region \
    --enable-private-ip-google-access

Criar o Cloud NAT

No Cloud Shell

gcloud compute routers create central-cr \
    --network=consumer-vpc \
    --region=$region

gcloud compute routers nats create central-nat \
    --router=central-cr \
    --region=$region \
    --nat-all-subnet-ip-ranges \
    --auto-allocate-nat-external-ips

Criar políticas e regras de firewall de rede para consumidores

Vamos criar outra política de firewall de rede para a consumer-vpc.

No Cloud Shell

gcloud compute network-firewall-policies create consumer-vpc-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy consumer-vpc-policy --network consumer-vpc --name network-consumer-vpc --global-firewall-policy

gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy consumer-vpc-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22  --global-firewall-policy

11. Criar um endpoint do PSC para o serviço Hello World do Cloud Run

Neste ponto, vamos criar um endpoint do PSC e conectá-lo ao serviço do Cloud Run que você expôs pelo anexo de serviço. Você vai usar o URI do anexo de serviço que anotou anteriormente nesta seção. Verifique se o formato do URI no comando gcloud corresponde ao seu URI.

Criar endpoint do PSC

No Cloud Shell

gcloud compute addresses create cloudrun-service-ip --region=$region --subnet=consumer-subnet --ip-version=IPV4


gcloud compute forwarding-rules create cloudrun-ep --region=$region --network=consumer-vpc --address=cloudrun-service-ip --target-service-attachment=projects/$projectid/regions/$region/serviceAttachments/cloudrun-attachment

Encontre o endereço IP do endpoint do PSC que você acabou de criar. Você vai usar o endereço IP na próxima etapa para testar o endpoint.

No Cloud Shell

gcloud compute addresses list --filter="name=cloudrun-service-ip"

Exemplo de resultado esperado

NAME: cloudrun-service-ip
ADDRESS/RANGE: 10.0.0.2
TYPE: INTERNAL
PURPOSE: GCE_ENDPOINT
NETWORK: 
REGION: us-central1
SUBNET: consumer-subnet
STATUS: IN_USE

12. Criar uma VM de cliente do consumidor e testar a conectividade ao endpoint

Criar uma VM de cliente do consumidor

No Cloud Shell

gcloud compute instances create consumer-client \
    --zone=$zone \
    --subnet=consumer-subnet \
    --no-address \
    --metadata startup-script='#! /bin/bash
    sudo apt-get update
    sudo apt-get install dnsutils -y'

Testar a conectividade

No Cloud Shell

gcloud compute ssh \
    --zone "$zone" "consumer-client" \
    --tunnel-through-iap \
    --project $projectid

Substitua <cloudrun-service-ip> pelo endereço IP real.

Da VM do cliente-consumidor

curl <cloudrun-service-ip>

Resposta esperada

Hello World!

Da VM do cliente-consumidor

exit

13. Criar serviço de loop do Cloud Run

Em seguida, vamos criar um serviço do Cloud Run que fará uma chamada privada de volta para a VPC do consumidor para chamar o serviço HelloWorld anterior do Cloud Run que foi exposto pelo PSC.

Siga as instruções "Criar o aplicativo de exemplo" aqui para criar um aplicativo de loop em PHP. Em vez de helloworld-php, nomeie o diretório como cloudrun-loop. Execute estes comandos no Cloud Shell. Na segunda etapa, use o código PHP abaixo no arquivo index.php. Volte ao codelab quando estiver tudo pronto para implantar no Cloud Run. Não siga as instruções da documentação para esta etapa.

Use este código para o arquivo index.php. Substitua <cloudrun-service-ip> pelo endereço IP do endpoint do PSC testado na etapa anterior.

No Cloud Shell

<?php 

if(!function_exists('curl_init')) {
    die('cURL not available!');
}

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://<cloudrun-service-ip>/');
curl_setopt($curl, CURLOPT_FAILONERROR, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$output = curl_exec($curl);
if ($output === FALSE) {
    echo 'An error has occurred: ' . curl_error($curl) . PHP_EOL;
}
else {
    echo $output;
}
?>

Estamos especificando uma rede e uma sub-rede nesta implantação do Cloud Run porque o tráfego do Cloud Run precisa sair de volta para a VPC para acessar o endpoint do PSC. Estamos direcionando o Cloud Run para usar a sub-rede cloudrun-egress para a saída VPC direta. Estamos direcionando todo o tráfego para sair pela sub-rede de saída direta da VPC de volta para a VPC.

No Cloud Shell

gcloud run deploy cloudrun-loop \
    --source . \
    --platform=managed \
    --ingress=internal \
    --allow-unauthenticated  \
    --vpc-egress=all-traffic \
    --network=consumer-vpc \
    --subnet=cloudrun-egress \
    --region=$region

Quando o serviço do Cloud Run terminar a implantação, ele vai fornecer um URL do serviço no formato https://cloudrun-loop-<projectnum>.<region>.run.app. Anote esse URL, que será testado na próxima etapa.

14. Testar a conectividade com o CloudRun-Loop pelo URL do Cloud Run

No Cloud Shell

gcloud compute ssh \
    --zone "$zone" "consumer-client" \
    --tunnel-through-iap \
    --project $projectid

Substitua <Cloud-Run-ServiceURL> pelo URL do serviço que você anotou na etapa anterior.

Da VM do cliente-consumidor

curl <Cloud-Run-ServiceURL>

Resposta esperada

Hello World!

Esse resultado mostra que o serviço CloudRun-Loop está acionando o consumer-vpc para chamar o endpoint PSC conectado ao serviço Hello World do Cloud Run. No entanto, neste ponto, a VM do cliente consumidor está saindo para a Internet pelo Cloud NAT para fazer uma chamada para o URL público do Cloud Run. Podemos executar um comando dig no URL para mostrar que ele será resolvido em um endereço IP público.

Da VM do cliente-consumidor

dig <Cloud-Run-ServiceURL>

Exemplo de saída

; <<>> DiG 9.18.33-1~deb12u2-Debian <<>> https://cloudrun-loop-<projectnum>.<region>.run.app
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1938
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;https://cloudrun-loop-<projectnum>.<region>.run.app.        IN A

;; ANSWER SECTION:
https://cloudrun-loop-<projectnum>.<region>.run.app. 300 IN A 216.239.38.53
https://cloudrun-loop-<projectnum>.<region>.run.app. 300 IN A 216.239.36.53
https://cloudrun-loop-<projectnum>.<region>.run.app. 300 IN A 216.239.32.53
https://cloudrun-loop-<projectnum>.<region>.run.app. 300 IN A 216.239.34.53

;; Query time: 4 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Tue Mar 11 19:05:36 UTC 2025
;; MSG SIZE  rcvd: 147

Podemos criar um PSC para o endpoint das APIs do Google para mudar essa resolução para particular e manter o tráfego fora da Internet pública.

Da VM do cliente-consumidor

exit

15. Criar um endpoint do PSC para APIs do Google

Esse endpoint do PSC é diferente do que criamos anteriormente. O PSC para APIs do Google aponta para um pacote de APIs do Google (todas as APIs ou as compatíveis com o VPC-SC). O endereço IP não é originado de uma sub-rede regional, mas é criado como um único endereço IP /32 global que não pode se sobrepor a nenhuma sub-rede VPC, sub-rede VPC pareada ou rotas híbridas.

No Cloud Shell

export pscgoogip=100.100.100.100

echo $pscgoogip

gcloud compute addresses create psc-goog-ep-ip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=$pscgoogip \
    --network=consumer-vpc

No Cloud Shell

gcloud compute forwarding-rules create psc4googapi \
    --global \
    --network=consumer-vpc \
    --address=psc-goog-ep-ip \
    --target-google-apis-bundle=all-apis

16. Criar uma zona particular do Cloud DNS para run.app

Quando um endpoint do PSC para APIs do Google é criado, uma zona DNS particular do Cloud Run é criada para todas as APIs que se enquadram no domínio googleapis.com. Como o Cloud Run usa o run.app, precisamos criar outra zona particular para mapear o run.app ao endpoint do PSC para as APIs do Google.

No Cloud Shell

gcloud dns managed-zones create "cloudrun" \
    --dns-name=run.app \
    --description="run.app psc resolution" \
    --visibility=private \
    --networks=consumer-vpc

gcloud dns record-sets transaction start \
   --zone="cloudrun"

gcloud dns record-sets transaction add $pscgoogip \
   --name=*.run.app \
   --ttl=300 \
   --type=A \
   --zone="cloudrun"

gcloud dns record-sets transaction execute \
   --zone="cloudrun"

17. Testar a resolução de DNS particular

Vamos fazer login novamente na VM do cliente-consumidor e executar o comando dig novamente. Agora, o URL do Cloud Run vai ser resolvido no endpoint PSC para APIs do Google.

No Cloud Shell

gcloud compute ssh \
    --zone "$zone" "consumer-client" \
    --tunnel-through-iap \
    --project $projectid

Primeiro, vamos limpar o cache do DNS. Substitua <Cloud-Run-ServiceURL> pelo URL do serviço anotado anteriormente.

Da VM do cliente-consumidor

sudo resolvectl flush-caches

curl <CloudRun-Loop-ServiceURL>

O curl ainda vai funcionar como antes.

Da VM do cliente-consumidor

curl <CloudRun-Loop-ServiceURL>

Resposta esperada

Hello World!

Da VM do cliente-consumidor

dig <CloudRun-Loop-ServiceURL>

O comando dig vai mostrar que o serviço do Cloud Run Loop agora está sendo resolvido para o endpoint do PSC das APIs do Google.

Exemplo de saída

; <<>> DiG 9.18.33-1~deb12u2-Debian <<>> https://cloudrun-loop-<projectnum>.<region>.run.app
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30179
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;https://cloudrun-loop-<projectnum>.<region>.run.app.        IN A

;; ANSWER SECTION:
https://cloudrun-loop-<projectnum>.<region>.run.app. 300 IN A 100.100.100.100

;; Query time: 8 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Tue Mar 11 20:04:05 UTC 2025
;; MSG SIZE  rcvd: 99

SUCCESS!

18. Etapas de limpeza

Sair da instância da VM

exit

No Cloud Shell

gcloud dns record-sets delete *.run.app --zone="cloudrun" --type=A -q

gcloud dns managed-zones delete "cloudrun" -q

gcloud compute instances delete consumer-client --zone=$zone --project=$projectid -q

gcloud compute forwarding-rules delete psc4googapi --global -q

gcloud compute addresses delete psc-goog-ep-ip --global -q

gcloud run services delete cloudrun-loop --region=$region -q 

gcloud artifacts docker images delete $region-docker.pkg.dev/$projectid/cloud-run-source-deploy/cloudrun-loop -q

gcloud compute forwarding-rules delete cloudrun-ep --region=$region -q

gcloud compute addresses delete cloudrun-service-ip --region=$region -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy consumer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=consumer-vpc-policy  --name=network-consumer-vpc --global-firewall-policy -q

gcloud compute network-firewall-policies delete consumer-vpc-policy --global -q

gcloud compute routers nats delete central-nat --router=central-cr --region=$region -q

gcloud compute routers delete central-cr --region=$region -q

gcloud compute networks subnets delete consumer-subnet --region $region -q

É possível que a execução dos dois comandos a seguir falhe com erros de "recurso em uso". Os documentos do Cloud Run indicam que, às vezes, o Cloud Run leva de uma a duas horas para liberar os recursos da sub-rede depois que o serviço do Cloud Run é excluído. Se a exclusão falhar, pule esses dois comandos e continue para a próxima seção. Depois de algum tempo, volte a esta seção para excluir.

No Cloud Shell

gcloud compute networks subnets delete cloudrun-egress --region $region -q

gcloud compute networks delete consumer-vpc -q

No Cloud Shell

gcloud compute service-attachments delete cloudrun-attachment --region=$region -q

gcloud compute instances delete producer-client --zone=$zone --project=$projectid -q

gcloud compute forwarding-rules delete cloudrun-fr --region=$region -q

gcloud compute target-http-proxies delete producer-http-proxy --region=$region -q

gcloud compute url-maps delete producer-urlmap --region=$region -q

gcloud compute backend-services delete cloudrun-producer-bes --region=$region -q

gcloud compute network-endpoint-groups delete cloudrun-producer-neg --region=$region -q

gcloud compute addresses delete cloudrun-ip --region=$region -q

gcloud run services delete helloworld --region=$region -q 

gcloud artifacts docker images delete $region-docker.pkg.dev/$projectid/cloud-run-source-deploy/helloworld -q

gcloud artifacts repositories delete cloud-run-source-deploy --location=$region -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy  --name=network-producer-vpc --global-firewall-policy -q

gcloud compute network-firewall-policies delete producer-vpc-policy --global -q

gcloud compute networks subnets delete lb-proxy-subnet --region $region -q

gcloud compute networks subnets delete psc-nat-subnet --region $region -q

gcloud compute networks subnets delete producer-subnet --region $region -q

gcloud compute networks delete producer-vpc -q

19. Parabéns!

Parabéns por concluir o codelab.

O que vimos

  • Como implantar apps básicos no Cloud Run
  • Controles de entrada e saída do Cloud Run
  • Como implantar o Cloud Run por um balanceador de carga de aplicativo interno com um NEG sem servidor
  • Como configurar um serviço de produtor do PSC usando um anexo de serviço
  • Como implantar endpoints do PSC