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 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 melalui Load Balancer Aplikasi Internal dengan NEG Serverless.
Codelab ini akan mempelajari cara menyiapkan Cloud Run dengan PSC untuk kedua skenario ini
Yang akan Anda pelajari
- Men-deploy aplikasi dasar di Cloud Run
- Kontrol traffic masuk dan keluar 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 secara 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 vpc produsen. Anda akan memverifikasi bahwa layanan berfungsi melalui load balancer melalui klien produsen sebelum menyiapkan layanan Cloud Run agar dapat diakses sebagai layanan produsen PSC melalui Lampiran Layanan.
Beralih ke 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 vpc konsumen. Selanjutnya, Anda akan membuat layanan Cloud Run lain yang memanggil Endpoint PSC. Terakhir, Anda akan men-deploy Endpoint PSC untuk Google API. Dari klien konsumen, Anda akan mengakses Cloud Run melalui URL yang disediakan Cloud Run, yang akan menggunakan PSC untuk endpoint 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 konfigurasikan 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
Mengaktifkan 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. Membuat Jaringan VPC Produsen
Jaringan VPC
Dari Cloud Shell
gcloud compute networks create producer-vpc --subnet-mode custom
Membuat 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 Penafsiran Alamat Jaringan. Untuk kasus penggunaan produksi, subnet ini harus berukuran sesuai untuk mendukung jumlah endpoint yang dilampirkan. Lihat dokumentasi ukuran subnet NAT PSC untuk mengetahui informasi selengkapnya.
Membuat Kebijakan Firewall dan Aturan Firewall Jaringan Produsen
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 Cloud Run Hello World
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 sesuai 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 yang Dibatasi 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 diikuti di lingkungan produksi.
Dari Cloud Shell
gcloud beta run deploy helloworld \ --source . \ --platform=managed \ --ingress=internal \ --allow-unauthenticated \ --no-default-url \ --region=$region
Menggunakan flag --no-default-url
akan men-deploy layanan Cloud Run Anda tanpa URL run.app yang disediakan. 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 Cloud Run Hello World melalui Load Balancer Aplikasi Internal
Cadangkan alamat IP internal statis untuk aturan penerusan load balancer Anda.
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.
Membuat 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 Ditampilkan Melalui Load Balancer
Membuat 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. Membuat 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
Membuat 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 dan Aturan Firewall Jaringan Konsumen
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 Hello World
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.
Membuat 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 di 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. Membuat VM klien konsumen dan Menguji Konektivitas ke Endpoint
Membuat VM klien konsumen
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'
Menguji Konektivitas
Dari Cloud Shell
gcloud compute ssh \ --zone "$zone" "consumer-client" \ --tunnel-through-iap \ --project $projectid
Ganti <cloudrun-service-ip> dengan alamat IP yang 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 HelloWorld Cloud Run sebelumnya yang kita ekspos melalui PSC.
Ikuti petunjuk "Menulis 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 telah Anda uji di 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 selesai di-deploy, layanan Cloud Run akan memberikan URL Layanan dalam format https://cloudrun-loop-<projectnum>.<region>.run.app. Perhatikan juga URL ini karena akan mengujinya di 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 ke consumer-vpc untuk memanggil endpoint PSC yang terhubung ke layanan Cloud Run Hello World. Namun, pada tahap ini, VM klien konsumen kita keluar ke internet melalui Cloud NAT untuk melakukan panggilan ke URL Cloud Run publik. Kita dapat menjalankan dig pada 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 PSC untuk endpoint Google API guna mengubah resolusi ini menjadi pribadi agar traffic tidak keluar dari internet publik.
Dari VM klien konsumen
exit
15. Membuat PSC untuk Endpoint 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 satu alamat IP /32 yang bersifat global dan tidak boleh tumpang-tindih dengan subnet VPC yang ada, subnet VPC yang di-peering, atau rute campuran.
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 termasuk dalam domain googleapis.com. Karena Cloud Run menggunakan run.app, kita harus 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 klien konsumen dan menjalankan dig lagi, dan sekarang kita akan melihat bahwa URL Cloud Run 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 akan menunjukkan bahwa layanan Cloud Run Loop kini me-resolve ke endpoint PSC untuk 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
Mungkin saja menjalankan dua perintah berikutnya akan 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 gagal, lewati dua perintah ini dan lanjutkan ke bagian berikutnya, lalu kembali ke bagian ini untuk menghapus setelah beberapa saat.
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 traffic masuk dan keluar 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