1. Pengantar
Private Service Connect (PSC) adalah kemampuan jaringan Google Cloud yang memungkinkan konsumen mengakses layanan terkelola secara pribadi dari dalam jaringan VPC mereka. Demikian pula, hal ini memungkinkan produsen layanan terkelola untuk menghosting layanan ini di jaringan VPC masing-masing yang terpisah dan menawarkan koneksi pribadi kepada konsumen mereka.
Cloud Run adalah platform komputasi terkelola yang memungkinkan Anda menjalankan container langsung di atas infrastruktur Google yang bersifat skalabel atau dapat diubah ukurannya sesuai kebutuhan.
Cloud Run dapat digunakan sebagai layanan PSC dengan dua cara yang berbeda.
- Melalui PSC untuk Google API dengan memanggil Cloud Run melalui URL run.app yang disediakan Cloud Run
- Melalui layanan produsen PSC kustom tempat Cloud Run diekspos melalui Lampiran Layanan via Load Balancer Aplikasi Internal dengan NEG Serverless.
Codelab ini akan membahas cara menyiapkan Cloud Run dengan PSC untuk kedua skenario ini
Yang akan Anda pelajari
- Men-deploy aplikasi dasar di Cloud Run
- Kontrol ingress dan egress Cloud Run
- Men-deploy Cloud Run melalui Load Balancer Aplikasi Internal dengan NEG Serverless
- Menyiapkan Layanan Produsen PSC melalui Lampiran Layanan
- Men-deploy Endpoint PSC
Yang Anda butuhkan
- Project Google Cloud dengan izin Pemilik
2. Topologi codelab

Dalam codelab ini, Anda akan men-deploy dua layanan Cloud Run yang akan dapat diakses melalui PSC - pertama sebagai layanan yang dipublikasikan kustom dengan PSC, dan kedua sebagai PSC untuk Google API. Anda akan membuat dua VPC, yaitu consumer-vpc dan producer-vpc. Pertama-tama, Anda akan men-deploy layanan Cloud Run Hello World dan membuatnya dapat diakses melalui Load Balancer Aplikasi Internal Regional dan NEG Serverless di producer-vpc. Anda akan memverifikasi bahwa layanan berfungsi melalui load balancer via produsen-klien sebelum menyiapkan layanan Cloud Run agar dapat diakses sebagai layanan produsen PSC melalui Lampiran Layanan.
Selanjutnya, di consumer-vpc, Anda akan men-deploy endpoint PSC yang mengarah ke Lampiran Layanan Cloud Run yang kita siapkan di producer-vpc. Kemudian, Anda akan memverifikasi bahwa layanan dapat diakses melalui PSC dari klien konsumen di consumer-vpc. Selanjutnya, Anda akan membuat layanan Cloud Run lain yang memanggil Endpoint PSC Anda. Terakhir, Anda akan men-deploy Endpoint PSC untuk Google API. Dari consumer-client, Anda akan mengakses Cloud Run melalui URL yang disediakan Cloud Run, yang akan menggunakan endpoint PSC untuk Google API.
3. Penyiapan dan Persyaratan
Penyiapan lingkungan mandiri
- Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.



- Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
- Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (umumnya diidentifikasi sebagai
PROJECT_ID). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri, dan lihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan tersedia selama durasi project. - Sebagai informasi, ada nilai ketiga, Project Number, yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
- Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini tidak akan memakan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus project-nya. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.
Mulai Cloud Shell
Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.
Dari Google Cloud Console, klik ikon Cloud Shell di toolbar kanan atas:

Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:

Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Semua pekerjaan Anda dalam codelab ini dapat dilakukan di browser. Anda tidak perlu menginstal apa pun.
4. Sebelum memulai
Mengaktifkan API
Di dalam Cloud Shell, pastikan project Anda sudah disiapkan dan konfigurasi variabel.
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
Aktifkan semua layanan yang diperlukan
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. Buat Jaringan VPC Produsen
Jaringan VPC
Dari Cloud Shell
gcloud compute networks create producer-vpc --subnet-mode custom
Buat Subnet
Dari 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
Subnet PSC akan dikaitkan dengan Lampiran Layanan PSC untuk tujuan Network Address Translation. Untuk kasus penggunaan produksi, subnet ini harus disesuaikan ukurannya dengan tepat untuk mendukung jumlah endpoint yang terlampir. Lihat dokumentasi penentuan ukuran subnet NAT PSC untuk mengetahui informasi selengkapnya.
Membuat Kebijakan Firewall Jaringan Produsen dan Aturan Firewall
Dari 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
Untuk mengizinkan IAP terhubung ke instance VM Anda, buat aturan firewall yang:
- Berlaku untuk semua instance VM yang ingin Anda akses menggunakan IAP.
- Mengizinkan traffic masuk dari rentang IP 35.235.240.0/20. Rentang ini berisi semua alamat IP yang digunakan IAP untuk penerusan TCP.
Dari 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. Membuat Hello World Cloud Run
Ikuti petunjuk di sini untuk menulis aplikasi contoh di Python. Jalankan perintah ini di Cloud Shell. Setelah Anda menyelesaikan langkah 3 di "Menulis Aplikasi Contoh", kembali ke Codelab ini dan ikuti petunjuk di bawah untuk Men-deploy ke Cloud Run dari Sumber.
Sebelum men-deploy layanan Cloud Run, pastikan akun layanan komputasi default Anda memiliki izin yang tepat dengan menjalankan perintah berikut.
Dari Cloud Shell
gcloud projects add-iam-policy-binding $projectid --member=serviceAccount:$projectnum-compute@developer.gserviceaccount.com --role=roles/run.builder
CATATAN: Codelab ini mengasumsikan bahwa organisasi Anda tidak mengaktifkan Kebijakan Organisasi Berbagi Terbatas Domain. Jika kebijakan ini diaktifkan, Anda harus melakukan langkah-langkah tambahan untuk men-deploy Cloud Run dengan autentikasi, mengonfigurasi Layar Izin OAuth, dan menyiapkan IAP untuk backend load balancer. Sebaiknya semua langkah konfigurasi ini dilakukan di lingkungan produksi.
Dari Cloud Shell
gcloud beta run deploy helloworld \
--source . \
--platform=managed \
--ingress=internal \
--allow-unauthenticated \
--no-default-url \
--region=$region
Menggunakan tanda --no-default-url akan men-deploy layanan Cloud Run Anda tanpa URL run.app yang diberikan. Kami tidak akan menggunakan URL untuk layanan ini. Pada saat publikasi codelab ini, fitur ini masih dalam pratinjau.
Sebelum melanjutkan, kembali ke direktori utama Cloud Shell Anda.
Dari Cloud Shell
cd ..
7. Mengekspos Hello World Cloud Run melalui Load Balancer Aplikasi Internal
Cadangkan alamat IP internal statis untuk aturan penerusan load balancer.
Di Cloud Shell
gcloud compute addresses create cloudrun-ip \ --region=$region \ --subnet=producer-subnet gcloud compute addresses describe cloudrun-ip --region=$region
Contoh Output
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
Catat alamat IP yang baru saja Anda buat.
Buat Load Balancer Aplikasi Internal Regional
Di Cloud Shell
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
Di Cloud Shell
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. Menguji Hello World Cloud Run yang Diekspos Melalui Load Balancer
Buat VM Pengujian
Dari Cloud Shell
gcloud compute instances create producer-client \
--zone=$zone \
--subnet=producer-subnet \
--no-address \
--scopes=cloud-platform
Di Cloud Shell
gcloud compute ssh \
--zone "$zone" "producer-client" \
--tunnel-through-iap \
--project $projectid
Ganti <loadbalancer-ip> dengan alamat IP yang Anda buat sebelumnya (contoh 10.0.0.2).
Menguji Hello World
Di producer-vm
curl <loadbalancer-ip>
Output yang Diinginkan
Hello World!
Keluar dari VM.
Di producer-vm
exit
9. Membuat Lampiran Layanan
Dari 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
Selanjutnya, ambil dan catat URI Lampiran Layanan untuk mengonfigurasi endpoint PSC di lingkungan konsumen.
Di Cloud Shell
gcloud compute service-attachments describe cloudrun-attachment --region=$region
Contoh Output yang Diharapkan
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. Buat jaringan VPC Konsumen
Jaringan VPC
Dari Cloud Shell
gcloud compute networks create consumer-vpc --subnet-mode custom
Buat Subnet
Dari 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
Buat Cloud NAT
Dari 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
Membuat Kebijakan Firewall Jaringan Konsumen dan Aturan Firewall
Kita akan membuat Kebijakan Firewall Jaringan lain untuk consumer-vpc.
Dari 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. Membuat Endpoint PSC untuk Layanan Cloud Run Halo Dunia
Pada tahap ini, kita akan membuat endpoint PSC dan menghubungkannya ke layanan Cloud Run yang Anda ekspos melalui Lampiran Layanan. Anda akan menggunakan URI lampiran layanan yang Anda catat sebelumnya di bagian ini. Pastikan format URI dalam perintah gcloud cocok dengan URI Anda.
Buat Endpoint PSC
Dari 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
Dapatkan alamat IP Endpoint PSC yang baru saja Anda buat. Anda akan menggunakan alamat IP pada langkah berikutnya untuk menguji endpoint.
Dari Cloud Shell
gcloud compute addresses list --filter="name=cloudrun-service-ip"
Contoh Output yang Diharapkan
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. Buat VM klien konsumen dan Uji Konektivitas ke Endpoint
Membuat VM consumer-client
Dari 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'
Uji Konektivitas
Dari Cloud Shell
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
Ganti <cloudrun-service-ip> dengan alamat IP sebenarnya.
Dari VM klien konsumen
curl <cloudrun-service-ip>
Output yang Diinginkan
Hello World!
Dari VM klien konsumen
exit
13. Membuat Layanan Loop Cloud Run
Selanjutnya, kita akan membuat layanan Cloud Run yang akan melakukan panggilan pribadi kembali ke consumer-vpc untuk memanggil layanan Cloud Run HelloWorld sebelumnya yang kita ekspos melalui PSC.
Ikuti petunjuk "Tulis aplikasi contoh" di sini untuk menulis aplikasi loop di PHP. Daripada helloworld-php, beri nama direktori Anda cloudrun-loop. Jalankan perintah ini di Cloud Shell. Pada langkah kedua, gunakan kode PHP di bawah dalam file index.php Anda. Kembali ke codelab saat Anda siap men-deploy ke Cloud Run. Jangan ikuti petunjuk dalam dokumentasi untuk langkah ini.
Gunakan kode ini untuk file index.php Anda. Ganti <cloudrun-service-ip> dengan alamat IP endpoint PSC yang Anda uji pada langkah sebelumnya.
Dari 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;
}
?>
Kita menentukan jaringan dan subnet dalam deployment Cloud Run ini karena traffic Cloud Run harus keluar kembali ke VPC untuk mengakses endpoint PSC. Kita mengarahkan Cloud Run untuk menggunakan subnet cloudrun-egress untuk Traffic Keluar VPC Langsung. Kami mengarahkan semua traffic untuk keluar melalui subnet Traffic Keluar VPC Langsung kembali ke VPC.
Dari 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
Setelah layanan Cloud Run selesai di-deploy, layanan tersebut akan memberikan URL Layanan dalam format https://cloudrun-loop-<projectnum>.<region>.run.app. Catat URL ini karena akan diuji pada langkah berikutnya.
14. Menguji Konektivitas ke CloudRun-Loop melalui URL Cloud Run
Dari Cloud Shell
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
Ganti <Cloud-Run-ServiceURL> dengan URL Layanan yang Anda catat di langkah sebelumnya.
Dari VM klien konsumen
curl <Cloud-Run-ServiceURL>
Output yang Diinginkan
Hello World!
Hasil ini menunjukkan bahwa layanan CloudRun-Loop berhasil memanggil kembali consumer-vpc untuk memanggil endpoint PSC yang terhubung ke layanan Cloud Run Hello World. Namun, pada tahap ini, VM klien konsumen kami melakukan keluar (egress) ke internet melalui Cloud NAT kami untuk melakukan panggilan ke URL Cloud Run publik kami. Kita dapat menjalankan dig di URL untuk menunjukkan bahwa URL tersebut akan di-resolve ke alamat IP publik.
Dari VM klien konsumen
dig <Cloud-Run-ServiceURL>
Contoh Output
; <<>> 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
Kita dapat membuat endpoint PSC untuk Google API guna mengubah resolusi ini menjadi pribadi agar traffic tidak melalui internet publik.
Dari VM klien konsumen
exit
15. Membuat Endpoint PSC untuk Google API
Endpoint PSC ini berbeda dengan yang kita buat sebelumnya. PSC untuk Google API mengarah ke paket Google API (semua API, atau API yang kompatibel dengan VPC-SC). Alamat IP tidak berasal dari subnet regional, tetapi dibuat sebagai alamat IP /32 tunggal yang bersifat global dan tidak dapat tumpang-tindih dengan subnet VPC, subnet VPC yang di-peering, atau rute hybrid yang ada.
Dari 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
Dari Cloud Shell
gcloud compute forwarding-rules create psc4googapi \
--global \
--network=consumer-vpc \
--address=psc-goog-ep-ip \
--target-google-apis-bundle=all-apis
16. Membuat Zona Pribadi Cloud DNS untuk run.app
Saat endpoint PSC untuk Google API dibuat, zona DNS pribadi Cloud Run akan dibuat untuk semua API yang berada di domain googleapis.com. Karena Cloud Run menggunakan run.app, kita perlu membuat zona pribadi lain untuk memetakan run.app ke endpoint PSC untuk Google API.
Dari 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. Menguji Resolusi DNS Pribadi
Kita akan login kembali ke VM consumer-client dan menjalankan dig lagi, dan sekarang kita akan melihat bahwa URL Cloud Run kita akan di-resolve ke endpoint PSC untuk Google API.
Dari Cloud Shell
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
Pertama, kita akan menghapus cache DNS. Ganti <Cloud-Run-ServiceURL> dengan URL Layanan yang Anda catat sebelumnya.
Dari VM klien konsumen
sudo resolvectl flush-caches curl <CloudRun-Loop-ServiceURL>
Curl akan tetap berfungsi seperti yang terlihat sebelumnya.
Dari VM klien konsumen
curl <CloudRun-Loop-ServiceURL>
Output yang Diinginkan
Hello World!
Dari VM klien konsumen
dig <CloudRun-Loop-ServiceURL>
Dig harus menunjukkan bahwa layanan Cloud Run Loop kita kini di-resolve ke PSC untuk endpoint Google API.
Contoh Output
; <<>> 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
BERHASIL!
18. Langkah-langkah pembersihan
Keluar dari instance VM
exit
Dari 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
Ada kemungkinan bahwa menjalankan dua perintah berikutnya dapat gagal dengan error "resource in use". Dokumen Cloud Run menyatakan bahwa terkadang Cloud Run memerlukan waktu 1 hingga 2 jam untuk merilis resource subnet setelah layanan Cloud Run dihapus. Jika penghapusan Anda gagal, lewati dua perintah ini dan lanjutkan ke bagian berikutnya, lalu kembali ke bagian ini untuk menghapus setelah beberapa waktu.
Dari Cloud Shell
gcloud compute networks subnets delete cloudrun-egress --region $region -q gcloud compute networks delete consumer-vpc -q
Dari 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. Selamat!
Selamat, Anda telah menyelesaikan codelab.
Yang telah kita bahas
- Men-deploy aplikasi dasar di Cloud Run
- Kontrol ingress dan egress Cloud Run
- Men-deploy Cloud Run melalui Load Balancer Aplikasi Internal dengan NEG Serverless
- Menyiapkan Layanan Produsen PSC melalui Lampiran Layanan
- Men-deploy Endpoint PSC