1. Giriş
Private Service Connect (PSC), tüketicilerin yönetilen hizmetlere VPC ağlarının içinden özel olarak erişmesine olanak tanıyan bir Google Cloud ağ iletişimi özelliğidir. Aynı ş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ı üzerinde çalıştırmanıza olanak tanıyan, yönetilen bir bilgi işlem platformudur.
Cloud Run, iki farklı şekilde PSC hizmeti olarak kullanılabilir.
- Cloud Run tarafından sağlanan run.app URL'si üzerinden Cloud Run'ı çağırarak Google API'leri için PSC aracılığıyla
- Cloud Run'ın, sunucusuz NEG ile dahili uygulama yük dengeleyici üzerinden bir hizmet eki aracılığıyla kullanıma sunulduğu özel bir PSC üretici hizmeti aracılığıyla.
Bu codelab'de, bu senaryoların her ikisi için de Cloud Run'ı PSC ile nasıl ayarlayacağınız ele alınacaktır.
Neler öğreneceksiniz?
- Cloud Run'da temel uygulamaları dağıtma
- Cloud Run giriş ve çıkış kontrolleri
- Sunucusuz NEG ile dahili uygulama yük dengeleyicisi üzerinden Cloud Run'ı dağıtma
- Hizmet eki aracılığıyla PSC üretici hizmeti oluşturma
- PSC uç noktalarını dağıtma
Gerekenler
- Sahip izinlerine sahip Google Cloud projesi
2. Codelab topolojisi

Bu codelab'de, PSC üzerinden erişilebilen iki Cloud Run hizmeti dağıtacaksınız. Bunlardan ilki, PSC ile özel olarak yayınlanmış bir hizmet, ikincisi ise Google API'leri için PSC olacak. consumer-vpc ve producer-vpc olmak üzere iki VPC oluşturacaksınız. Öncelikle Hello World Cloud Run hizmetini dağıtacak ve bu hizmete producer-vpc'deki bölgesel dahili uygulama yük dengeleyici ve sunucusuz NEG üzerinden erişilebilmesini sağlayacaksınız. Cloud Run hizmetini, hizmet eki aracılığıyla PSC üretici hizmeti olarak erişilebilir şekilde ayarlamadan önce, üretici-istemci aracılığıyla yük dengeleyici üzerinden hizmetin çalıştığını doğrulayacaksınız.
Tüketici VPC'sine geçerek üretici VPC'sinde oluşturduğumuz Cloud Run Service Attachment'a 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ğrulayacaksınız. Ardından, PSC uç noktanızı çağıran başka bir Cloud Run hizmeti oluşturacaksınız. Son olarak, Google API'leri için bir PSC uç noktası dağıtacaksınız. Tüketici istemcisinden, Google API'leri için PSC uç noktasını kullanan Cloud Run tarafından sağlanan URL aracılığıyla Cloud Run'a erişirsiniz.
3. Kurulum ve Gereksinimler
Yönlendirmesiz 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ı için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. Bu bilgiyi istediğiniz zaman güncelleyebilirsiniz.
- Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğinize (genellikle
PROJECT_IDolarak tanımlanır) başvurmanız gerekir. Oluşturulan kimliği beğenmezseniz başka bir rastgele kimlik oluşturabilirsiniz. Dilerseniz kendi adınızı deneyerek kullanılabilir olup olmadığını kontrol edebilirsiniz. Bu adım tamamlandıktan sonra değiştirilemez ve proje süresince geçerli kalır. - Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
- Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırılmayı önlemek için kaynakları kapatmak üzere oluşturduğunuz kaynakları veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.
Cloud Shell'i başlatma
Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir. Ancak bu codelab'de, 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ın temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır. İşlem tamamlandığında aşağıdakine benzer bir sonuç görürsünüz:

Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu codelab'deki tüm çalışmalarınızı tarayıcıda yapabilirsiniz. Herhangi bir şey yüklemeniz gerekmez.
4. Başlamadan önce
API'leri etkinleştir
Cloud Shell'de projenizin ayarlandığından ve değişkenlerin yapılandırıldığından emin olun.
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 Çevrimi amacıyla PSC hizmet ekiyle ilişkilendirilir. Üretim kullanım alanlarında bu alt ağ, eklenen uç nokta sayısını destekleyecek şekilde uygun boyutta olmalıdır. Daha fazla bilgi için PSC NAT alt ağ boyutlandırma belgelerine 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ğıdaki özellikleri içeren bir güvenlik duvarı kuralı oluşturun:
- IAP kullanarak erişmek 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 aşağıdaki komutu çalıştırarak varsayılan Compute Engine hizmet hesabınızın uygun 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 codelab'de, kuruluşunuzda alanla kısıtlanmış paylaşım kuruluş politikasının etkin olmadığı varsayılır. Bu politika etkinse kimlik doğrulama ile Cloud Run'ı dağıtmak için ek adımlar uygulamanız, OAuth kullanıcı rızası ekranını yapılandırmanız ve yük dengeleyici arka ucunuz için IAP'yi ayarlamanız gerekir. Bu yapılandırma adımlarının tamamı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şaretini kullandığınızda Cloud Run hizmetiniz, sağlanan run.app URL'si olmadan dağıtılır. Bu hizmet için URL'yi kullanmayacağız. Bu codelab yayınlandığında bu özellik hâlâ önizleme sürümündeydi.
Devam etmeden önce Cloud Shell'inizin ana dizinine geri dönün.
Cloud Shell'den
cd ..
7. Hello World Cloud Run'ı dahili uygulama yük dengeleyicisi üzerinden kullanıma sunma
Yük dengeleyici iletme 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
Yeni 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 kullanıma sunulan Hello World Cloud Run hizmetini test etme
Test sanal makinesi 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> kısmını daha önce oluşturduğunuz IP adresiyle (örneğin, 10.0.0.2) değiştirin.
Test Hello World
In producer-vm
curl <loadbalancer-ip>
Beklenen Çıkış
Hello World!
Sanal makineden çıkın.
In producer-vm
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ğlayacağız. Bu bölümün başlarında not aldığınız hizmet eki URI'sini kullanacaksınız. gcloud komutundaki URI 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 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 Loop Hizmeti oluşturma
Ardından, PSC üzerinden kullanıma sunduğumuz önceki Cloud Run HelloWorld hizmetini çağırmak için consumer-vpc'ye özel bir geri arama 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 geri dönün. Bu adım için dokümanlardaki 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 çıkış yapması gerektiğinden bu Cloud Run dağıtımında bir ağ ve alt ağ belirtiyoruz. Cloud Run'ı Direct VPC Egress için cloudrun-egress alt ağını kullanmaya yönlendiriyoruz. Tüm trafiği, doğrudan VPC çıkış alt ağı üzerinden çıkış yapıp 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 not edin ve bir sonraki adımda test edin.
14. Cloud Run URL'si üzerinden Cloud Run Loop'a Bağlantıyı Test Etme
Cloud Shell'den
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
<Cloud-Run-ServiceURL> kısmını, önceki adımda not aldığınız hizmet URL'siyle 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'ye başarıyla geri çağrı yaptığını gösteriyor. Ancak bu noktada, tüketici istemcisi VM'miz, herkese açık Cloud Run URL'mizi çağırmak için Cloud NAT'miz üzerinden internete çıkış yapıyor. URL'de herkese açık bir IP adresine çözümleneceğini göstermek için dig komutunu çalıştırabiliriz.
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ümü özel 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ğumuz uç noktadan farklıdır. Google API'leri için PSC, bir Google API paketi (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şlenmiş VPC alt ağları veya karma rotalarla çakışamayan küresel 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 özel 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 Google API'leri için PSC'mize run.app'i 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. Özel DNS çözümlemesini test etme
Tüketici istemcisi sanal makinemize tekrar giriş yapıp Dig komutunu tekrar çalıştırdığımızda artık Cloud Run URL'mizin Google API'leri için PSC uç noktamıza çözümlendiğini görmemiz gerekir.
Cloud Shell'den
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
Öncelikle DNS önbelleğini temizleyeceğiz. <Cloud-Run-ServiceURL> kısmını daha önce not aldığınız hizmet URL'siyle değiştirin.
Tüketici istemci sanal makinesinden
sudo resolvectl flush-caches curl <CloudRun-Loop-ServiceURL>
Curl, daha önce görüldüğü gibi çalışmaya devam etmelidir.
Tüketici istemci sanal makinesinden
curl <CloudRun-Loop-ServiceURL>
Beklenen Çıkış
Hello World!
Tüketici istemci sanal makinesinden
dig <CloudRun-Loop-ServiceURL>
dig komutu, Cloud Run Loop hizmetimizin artık Google API'leri için PSC uç noktamıza çözümlendiğini göstermelidir.
Ö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ında, Cloud Run hizmeti silindikten sonra alt ağ kaynaklarının serbest bırakılmasının bazen 1-2 saat sürdüğü belirtilmektedir. Silme işleminiz başarısız olursa bu iki komutu atlayın, bir sonraki bölüme geçin ve bir süre sonra silme işlemini gerçekleştirmek 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 tebrik ederiz.
İşlediğimiz konular
- Cloud Run'da temel uygulamaları dağıtma
- Cloud Run giriş ve çıkış kontrolleri
- Sunucusuz NEG ile dahili uygulama yük dengeleyicisi üzerinden Cloud Run'ı dağıtma
- Hizmet eki aracılığıyla PSC üretici hizmeti oluşturma
- PSC uç noktalarını dağıtma