1. Giriş
Private Service Connect (PSC), tüketicilerin VPC ağlarının içinden yönetilen hizmetlere özel olarak erişmesine olanak tanıyan bir Google Cloud ağ özelliğidir. Benzer şekilde, yönetilen hizmet üreticilerinin bu hizmetleri kendi ayrı VPC ağlarında barındırmasına ve tüketicilerine özel bir bağlantı sunmasına olanak tanır.
Cloud Run, container'ları doğrudan Google'ın ölçeklenebilir altyapısının üzerinde çalıştırmanıza olanak tanıyan yönetilen bir bilgi işlem platformudur.
Cloud Run, PSC hizmeti olarak iki farklı şekilde kullanılabilir.
- Cloud Run tarafından sağlanan run.app URL'si üzerinden Cloud Run'u çağırarak Google API'leri için PSC üzerinden
- Cloud Run'un, sunucusuz NEG içeren bir dahili uygulama yük dengeleyici aracılığıyla bir hizmet eki üzerinden kullanıma sunulduğu özel bir PSC üretici hizmeti aracılığıyla.
Bu codelab'de, her iki senaryo için de Cloud Run'un PSC ile nasıl ayarlanacağı incelenmektedir.
Neler öğreneceksiniz?
- Cloud Run'da temel uygulamaları dağıtma
- Cloud Run giriş ve çıkış kontrolleri
- Sunucusuz NEG ile dahili uygulama yük dengeleyici üzerinden Cloud Run dağıtma
- Hizmet Eki aracılığıyla PSC Üretici Hizmeti oluşturma
- PSC Endpoints'i dağıtma
Gerekenler
- Sahibi izinlerine sahip Google Cloud projesi
2. Codelab topolojisi
Bu codelab'de, PSC üzerinden erişilebilecek iki Cloud Run hizmeti dağıtacaksınız. İlki, PSC ile özel olarak yayınlanan bir hizmet, ikincisi ise Google API'leri için PSC. Tüketici VPC'si ve üretici VPC'si olmak üzere iki VPC oluşturacaksınız. Öncelikle Hello World Cloud Run hizmetini dağıtır ve producer-vpc'de Bölgesel Dahili Uygulama Yük Dengeleyici ve Sunucusuz NEG aracılığıyla erişilebilir hale getirirsiniz. Cloud Run hizmetini, hizmet eki aracılığıyla PSC üretici hizmeti olarak erişilebilir olacak şekilde ayarlamadan önce hizmetin yük dengeleyici üzerinden üretici istemcisi aracılığıyla çalıştığını doğrularsınız.
consumer-vpc'ye geçerek producer-vpc'de ayarladığımız Cloud Run Hizmet Eki'ni işaret eden bir PSC uç noktası dağıtırsınız. Ardından, hizmete tüketici VPC'sindeki bir tüketici istemcisinden PSC üzerinden erişilebildiğini doğrularsınız. Ardından, PSC uç noktanızı çağıran başka bir Cloud Run hizmeti oluşturursunuz. Son olarak, Google API'leri için bir PSC uç noktası dağıtacaksınız. Tüketici istemcisinden, Cloud Run tarafından sağlanan URL üzerinden Cloud Run'a erişirsiniz. Bu URL, Google API'leri için PSC uç noktasını kullanır.
3. Kurulum ve Gereksinimler
Kendine ait tempoda ortam kurulumu
- Google Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.
- Proje adı, bu projenin katılımcılarının görünen adıdır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. Dilediğiniz zaman güncelleyebilirsiniz.
- Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve değiştirilemez (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dize otomatik olarak oluşturur. Bu dizenin ne olduğu genellikle önemli değildir. Çoğu kod laboratuvarında proje kimliğinize (genellikle
PROJECT_ID
olarak tanımlanır) referans vermeniz gerekir. Oluşturulan kimliği beğenmezseniz rastgele başka bir kimlik oluşturabilirsiniz. Alternatif olarak, kendi anahtarınızı deneyerek kullanılabilir olup olmadığını görebilirsiniz. Bu adımdan sonra değiştirilemez ve proje boyunca geçerli kalır. - Bazı API'lerin kullandığı üçüncü bir değer (Proje Numarası) olduğunu belirtmek isteriz. Bu üç değer hakkında daha fazla bilgiyi dokümanlar bölümünde bulabilirsiniz.
- Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmak çok pahalı değildir. Bu eğitimden sonra faturalandırılmamak için kaynakları kapatmak istiyorsanız oluşturduğunuz kaynakları veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerinde ücretsiz deneme programına uygundur.
Cloud Shell'i başlatma
Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir. Ancak bu kod laboratuvarında, Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.
Google Cloud Console'da, sağ üstteki araç çubuğunda Cloud Shell simgesini tıklayın:
Ortam sağlanıp bağlantı kurulabilmesi için birkaç saniye beklemeniz gerekir. İşlem tamamlandığında aşağıdakine benzer bir ekran görürsünüz:
Bu sanal makinede ihtiyacınız olan tüm geliştirme araçları yüklüdür. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansını ve kimlik doğrulamayı büyük ölçüde iyileştirir. Bu codelab'deki tüm çalışmalarınızı tarayıcıda yapabilirsiniz. Hiçbir şey yüklemeniz gerekmez.
4. Başlamadan önce
API'leri etkinleştir
Cloud Shell'de, projenizin ayarlandığından emin olun ve değişkenleri yapılandırın.
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
Gerekli tüm hizmetleri etkinleştirin
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. Üretici VPC Ağı Oluşturma
VPC Ağı
Cloud Shell'den
gcloud compute networks create producer-vpc --subnet-mode custom
Alt ağ oluşturma
Cloud Shell'den
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
PSC alt ağı, ağ adresi çevirisi amacıyla PSC hizmet eki ile ilişkilendirilir. Üretim kullanım alanları için bu alt ağın, bağlı uç noktalarının sayısını destekleyecek şekilde uygun şekilde boyutlandırılması gerekir. Daha fazla bilgi için PSC NAT alt ağı boyutlandırma dokümanlarına bakın.
Üretici Ağı Güvenlik Duvarı Politikası ve Güvenlik Duvarı Kuralları Oluşturma
Cloud Shell'den
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
IAP'nin sanal makine örneklerinize bağlanmasına izin vermek için aşağıdakileri yapan bir güvenlik duvarı kuralı oluşturun:
- IAP kullanılarak erişilmesini istediğiniz tüm sanal makine örnekleri için geçerlidir.
- 35.235.240.0/20 IP aralığından gelen giriş trafiğine izin verir. Bu aralık, IAP'nin TCP yönlendirme için kullandığı tüm IP adreslerini içerir.
Cloud Shell'den
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. Hello World Cloud Run oluşturma
Python'da örnek uygulama yazmak için buradaki talimatları uygulayın. Bu komutları Cloud Shell'de çalıştırın. "Örnek Uygulamayı Yazma" bölümündeki 3. adımı tamamladıktan sonra bu Codelab'e dönün ve kaynaktan Cloud Run'a dağıtmak için aşağıdaki talimatları uygulayın.
Cloud Run hizmetinizi dağıtmadan önce, varsayılan Compute Engine hizmet hesabınızın aşağıdaki komutu çalıştırarak gerekli izinlere sahip olduğundan emin olun.
Cloud Shell'den
gcloud projects add-iam-policy-binding $projectid --member=serviceAccount:$projectnum-compute@developer.gserviceaccount.com --role=roles/run.builder
NOT: Bu kod laboratuvarında, kuruluşunuzda Alan Sınırlamalı Paylaşım Kuruluş Politikası'nın etkin olmadığı varsayılmaktadır. Bu politikayı etkinleştirdiyseniz Cloud Run'u kimlik doğrulamasıyla dağıtmak, OAuth izin ekranını yapılandırmak ve yük dengeleyici arka uçunuz için IAP'yi ayarlamak için ek adımlar uygulamanız gerekir. Bu yapılandırma adımlarının tümünün üretim ortamında uygulanması önerilir.
Cloud Shell'den
gcloud beta run deploy helloworld \ --source . \ --platform=managed \ --ingress=internal \ --allow-unauthenticated \ --no-default-url \ --region=$region
--no-default-url
işareti kullanıldığında Cloud Run hizmetiniz, sağlanan run.app URL'si olmadan dağıtılır. Bu hizmetin URL'sini kullanmayacağız. Bu codelab'in yayınlandığı tarih itibarıyla bu özellik hâlâ önizleme sürümündedir.
Devam etmeden önce Cloud Shell'inizin ana dizine geri dönün.
Cloud Shell'den
cd ..
7. Dahili uygulama yük dengeleyicisi aracılığıyla Hello World Cloud Run'u gösterme
Yük dengeleyici yönlendirme kuralınız için statik bir dahili IP adresi ayırın.
Cloud Shell'de
gcloud compute addresses create cloudrun-ip \ --region=$region \ --subnet=producer-subnet gcloud compute addresses describe cloudrun-ip --region=$region
Örnek Çıkış
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
Az önce oluşturduğunuz IP adresini not edin.
Bölgesel dahili uygulama yük dengeleyicisini oluşturma
Cloud Shell'de
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
Cloud Shell'de
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. Yük Dengeleyici üzerinden sunulan Hello World Cloud Run'u test etme
Test VM'si oluşturma
Cloud Shell'den
gcloud compute instances create producer-client \ --zone=$zone \ --subnet=producer-subnet \ --no-address \ --scopes=cloud-platform
Cloud Shell'de
gcloud compute ssh \ --zone "$zone" "producer-client" \ --tunnel-through-iap \ --project $projectid
<loadbalancer-ip> ifadesini daha önce oluşturduğunuz IP adresiyle (ör. 10.0.0.2) değiştirin.
Test Hello World
Üretici-vm'de
curl <loadbalancer-ip>
Beklenen Çıkış
Hello World!
Sanal makineden çıkın.
Üretici-vm'de
exit
9. Hizmet Eki Oluşturma
Cloud Shell'den
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
Ardından, tüketici ortamında PSC uç noktasını yapılandırmak için Hizmet Eki URI'sini alıp not edin.
Cloud Shell'de
gcloud compute service-attachments describe cloudrun-attachment --region=$region
Beklenen Çıkış Örneği
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. Tüketici VPC ağı oluşturma
VPC Ağı
Cloud Shell'den
gcloud compute networks create consumer-vpc --subnet-mode custom
Alt Ağ Oluştur
Cloud Shell'den
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
Cloud NAT oluşturma
Cloud Shell'den
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
Tüketici Ağı Güvenlik Duvarı Politikası ve Güvenlik Duvarı Kuralları Oluşturma
consumer-vpc için başka bir ağ güvenlik duvarı politikası oluşturacağız.
Cloud Shell'den
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. Hello World Cloud Run Hizmeti için PSC Uç Noktası Oluşturma
Bu noktada, bir PSC uç noktası oluşturup bunu Hizmet Eki aracılığıyla kullanıma sunduğunuz Cloud Run hizmetine bağlarız. Bu bölümde daha önce not ettiğiniz hizmet eki URI'sini kullanırsınız. gcloud komutundaki URI'nin biçiminin URI'nizle eşleştiğinden emin olun.
PSC uç noktası oluşturma
Cloud Shell'den
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
Yeni oluşturduğunuz PSC uç noktasının IP adresini alın. Uç noktayı test etmek için bir sonraki adımda bu IP adresini kullanacaksınız.
Cloud Shell'den
gcloud compute addresses list --filter="name=cloudrun-service-ip"
Beklenen Çıkış Örneği
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. Tüketici istemcisi sanal makinesi oluşturma ve uç noktaya bağlantıyı test etme
Tüketici istemcisi sanal makinesi oluşturma
Cloud Shell'den
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'
Bağlantıyı test etme
Cloud Shell'den
gcloud compute ssh \ --zone "$zone" "consumer-client" \ --tunnel-through-iap \ --project $projectid
<cloudrun-service-ip> yerine gerçek IP adresini yazın.
Tüketici istemci sanal makinesinden
curl <cloudrun-service-ip>
Beklenen Çıkış
Hello World!
Tüketici istemci sanal makinesinden
exit
13. Cloud Run döngü hizmeti oluşturma
Ardından, PSC üzerinden kullanıma sunduğumuz önceki Cloud Run HelloWorld hizmetini çağırmak için consumer-vpc'ye özel geri çağrı yapacak bir Cloud Run hizmeti oluşturacağız.
PHP'de döngü uygulaması yazmak için buradaki "Örnek uygulamayı yazma" talimatlarını uygulayın. helloworld-php yerine dizininize cloudrun-loop adını verin. Bu komutları Cloud Shell'de çalıştırın. İkinci adımda, index.php dosyanızda aşağıdaki PHP kodunu kullanın. Cloud Run'a dağıtmaya hazır olduğunuzda codelab'e dönün. Bu adım için dokümanlar bölümündeki talimatları uygulamayın.
index.php dosyanız için bu kodu kullanın. <cloudrun-service-ip> kısmını, önceki adımda test ettiğiniz PSC uç noktanızın IP adresiyle değiştirin.
Cloud Shell'den
<?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; } ?>
Cloud Run trafiğinin PSC uç noktasına erişmek için VPC'ye geri dönmesi gerektiğinden bu Cloud Run dağıtımında bir ağ ve alt ağ belirtiyoruz. Cloud Run'u, doğrudan VPC çıkışı için cloudrun-egress alt ağını kullanacak şekilde yönlendiriyoruz. Tüm trafiği, doğrudan VPC çıkış alt ağı üzerinden VPC'ye geri yönlendiriyoruz.
Cloud Shell'den
gcloud run deploy cloudrun-loop \ --source . \ --platform=managed \ --ingress=internal \ --allow-unauthenticated \ --vpc-egress=all-traffic \ --network=consumer-vpc \ --subnet=cloudrun-egress \ --region=$region
Cloud Run hizmeti dağıtımı tamamlandığında https://cloudrun-loop-<projectnum>.<region>.run.app biçiminde bir Hizmet URL'si sağlar. Bu URL'yi de not edin. Bir sonraki adımda bu URL'yi test edeceğiz.
14. Cloud Run URL'si üzerinden CloudRun-Loop'a bağlanma bağlantısını test etme
Cloud Shell'den
gcloud compute ssh \ --zone "$zone" "consumer-client" \ --tunnel-through-iap \ --project $projectid
<Cloud-Run-ServiceURL> değerini, önceki adımda not ettiğiniz hizmet URL'si ile değiştirin.
Tüketici istemci sanal makinesinden
curl <Cloud-Run-ServiceURL>
Beklenen Çıkış
Hello World!
Bu sonuç, CloudRun-Loop hizmetimizin, Hello World Cloud Run hizmetimize bağlı PSC uç noktamızı çağırmak için consumer-vpc'yi başarıyla geri çağırdığını gösterir. Ancak bu noktada, tüketici istemci sanal makinemiz herkese açık Cloud Run URL'mize çağrı yapmak için Cloud NAT'imiz üzerinden internete çıkış yapıyor. URL'de bir dig çalıştırarak herkese açık bir IP adresine çözümleneceğini gösterebiliriz.
Tüketici istemci sanal makinesinden
dig <Cloud-Run-ServiceURL>
Örnek Çıkış
; <<>> 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
Trafiği herkese açık internetten uzak tutmak için bu çözünürlüğü gizli olarak değiştirmek üzere Google API'leri için bir PSC uç noktası oluşturabiliriz.
Tüketici istemci sanal makinesinden
exit
15. Google API'leri uç noktası için PSC oluşturma
Bu PSC uç noktası, daha önce oluşturduğumuzdan farklıdır. Google API'leri için PSC, bir Google API'si paketini (tüm API'ler veya VPC-SC uyumlu API'ler) gösterir. IP adresi bölgesel bir alt ağdan alınmaz. Bunun yerine, mevcut VPC alt ağları, eşlenen VPC alt ağları veya karma rotalarla çakışmayabilecek küresel tek bir /32 IP adresi olarak oluşturulur.
Cloud Shell'den
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
Cloud Shell'den
gcloud compute forwarding-rules create psc4googapi \ --global \ --network=consumer-vpc \ --address=psc-goog-ep-ip \ --target-google-apis-bundle=all-apis
16. run.app için Cloud DNS Gizli Bölgesi oluşturma
Google API'leri için bir PSC uç noktası oluşturulduğunda googleapis.com alanına giren tüm API'ler için bir Cloud Run özel DNS bölgesi oluşturulur. Cloud Run, run.app'i kullandığından run.app'i Google API'leri için PSC uç noktamızla eşlemek üzere başka bir özel bölge oluşturmamız gerekir.
Cloud Shell'den
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. Gizli DNS çözümlemesini test etme
Tüketici istemcisi sanal makinemize tekrar giriş yapıp dig komutunu tekrar çalıştıracağız. Bu durumda, Cloud Run URL'mizin Google API'leri için PSC uç noktamıza yönlendirildiğini göreceğiz.
Cloud Shell'den
gcloud compute ssh \ --zone "$zone" "consumer-client" \ --tunnel-through-iap \ --project $projectid
Öncelikle DNS önbelleğini temizleyeceğiz. <Cloud-Run-ServiceURL> değerini daha önce not ettiğiniz hizmet URL'si ile değiştirin.
Tüketici istemci sanal makinesinden
sudo resolvectl flush-caches curl <CloudRun-Loop-ServiceURL>
Kıvrım, daha önce görüldüğü gibi çalışmaya devam eder.
Tüketici istemci sanal makinesinden
curl <CloudRun-Loop-ServiceURL>
Beklenen Çıkış
Hello World!
Tüketici istemci sanal makinesinden
dig <CloudRun-Loop-ServiceURL>
dig, Cloud Run Loop hizmetimizin artık Google API'leri için PSC uç noktamıza yönlendirildiğini gösterir.
Örnek Çıkış
; <<>> 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
BAŞARILI!
18. Temizleme adımları
Sanal makine örneğinden çıkma
exit
Cloud Shell'den
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
Sonraki iki komutun çalıştırılması "kaynak kullanılıyor" hatalarıyla başarısız olabilir. Cloud Run dokümanlarına göre, Cloud Run hizmeti silindikten sonra alt ağ kaynaklarının serbest bırakılması bazen 1-2 saat sürebilir. Silme işleminiz başarısız olursa bu iki komutu atlayıp bir sonraki bölüme geçin, ardından bir süre sonra silmek için bu bölüme geri dönün.
Cloud Shell'den
gcloud compute networks subnets delete cloudrun-egress --region $region -q gcloud compute networks delete consumer-vpc -q
Cloud Shell'den
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. Tebrikler!
Codelab'i tamamladığınız için tebrikler.
Ele aldığımız konular
- Cloud Run'da temel uygulamaları dağıtma
- Cloud Run giriş ve çıkış kontrolleri
- Sunucusuz NEG ile dahili uygulama yük dengeleyici üzerinden Cloud Run dağıtma
- Hizmet Eki aracılığıyla PSC Üretici Hizmeti oluşturma
- PSC Endpoints'i dağıtma