1. Giriş
Private Service Connect ile hizmet üreticiler, bir hizmet eki aracılığıyla VPC ortamındaki hizmetleri kullanıma sunabilir ve başka bir VPC ortamındaki tüketicilerin bu hizmetlere Private Service Connect uç noktası üzerinden erişmesine izin verebilir. Bazen bu üretici hizmetleri, her bir sanal makinenin aynı hizmetleri aynı bağlantı noktası numaralarında sunduğu sanal makine kümeleri olarak tasarlanır. Daha önce, bu hizmet tasarımları için tüketici tarafında birden fazla Private Service Connect uç noktasının dağıtılması veya doğru üretici sanal makinesinin hedeflendiğinden emin olmak için üretici tarafında IP yönlendirme kullanılması gerekiyordu.
Private Service Connect artık bağlantı noktası eşleme özelliğini kullanarak doğru hedefi yerel olarak hedefleyebilir. Bu laboratuvarda, bu özelliğin gerekli olduğu kullanım alanları ve bir bağlantı noktası eşleme NEG'sini Private Service Connect iş yüküne dağıtma hakkında bilgi edineceksiniz.
Neler öğreneceksiniz?
- Private Service Connect bağlantı noktası eşleme kullanım alanları
- PSC bağlantı noktası eşlemenin temel avantajları
- Ağ gereksinimleri
- Bağlantı noktası eşleme kullanarak Private Service Connect üretici hizmeti oluşturun.
- Private Service Connect uç noktası oluşturma
- Private Service Connect uç noktası üzerinden üretici hizmetine çağrı yapma
Gerekenler
- Sahip izinlerine sahip Google Cloud projesi
2. Private Service Connect bağlantı noktası eşleme kullanım alanları
Bağlantı noktası eşleme özelliği, PSC kullanım alanlarına özel bir bağlantı noktası eşleme NEG'si (ağ uç noktası grubu) kullanır.
Bağlantı noktası eşlemeden yararlanabilecek en yaygın üretici türleri NoSQL veritabanı üreticileri ve Kafka üreticileridir. Ancak, belirli sanal makine eşleme koşullarıyla aynı hizmetleri aynı bağlantı noktalarında sunan bir sanal makine kümesi gerektiren tüm üreticiler bu özelliği kullanabilir.
The Producer defines the mapping between a client port and a producer VM + destination port. Üreticinin bu bilgileri tüketiciyle paylaşması gerekir. Tüketici, hangi üretici sanal makinesine ve hedef bağlantı noktasına ulaşması gerektiğini benzersiz şekilde tanımlamak için önceden tanımlanmış bağlantı noktalarını kullanır. Tüketici tarafından kullanılan bağlantı noktası, üretici tarafından kullanılan bağlantı noktasından farklıdır.
PSC bağlantı noktası eşlemenin temel avantajları
- Basit: Üreticiler, bağlantı noktası eşlemesiyle PSC bileşenlerini dağıtır ve tüketiciler bir PSC uç noktası dağıtır. PSC, ağ adresi çevrimini otomatik olarak gerçekleştirir.
- Uygun maliyetli: Ek PSC kaynağı veya üretici VM CPU döngüsü gerektirmez. Fiyatlandırma, diğer PSC dağıtımlarıyla aynıdır.
- Yüksek performans: Bağlantı noktası eşleme, diğer PSC modlarıyla aynı hat hızı işleme hızını ve düşük gecikmeyi sunar.
- Ölçeklenebilir ve IP açısından verimli: Tüketici VPC'sindeki bir IP adresi, 1.000 üretici VM'sine ve 1.000 bağlantı noktası eşlemesine erişebilir.
3. Ağ gereksinimleri
- Bağlantı noktası eşleme, üretici yük dengeleyici olarak dahili ağ geçişi yük dengeleyicisinin kullanılmasını gerektirir.
- Bağlantı noktası eşleme ile yalnızca PSC uç noktaları kullanılabilir (PSC arka uçları veya PSC arayüzü değil).
- Bağlantı noktası eşleme NEG'leri bölgesel yapılardır.
- Bağlantı noktası eşleme NE'leri yalnızca bir PSC bağlantısı üzerinden kullanılabilir. İstemci VM, üretici yük dengeleyici iletme kuralını doğrudan çağırırsa çalışmazlar. Bu durum, üretici hizmetinin bu codelab'de test edilme şekline yansıtılır.
- PSC uç noktası ve üretici hizmet yığını farklı VPC'lerde olmalıdır.
4. Codelab topolojisi

Üretici VPC'sinde, her biri iki web sunucusu çalıştıran iki sanal makine oluşturulur. Bunlardan biri 1000 numaralı bağlantı noktasında, diğeri ise 2000 numaralı bağlantı noktasında çalışır. Portmap NEG, dahili ağ geçişli yük dengeleyici ve hizmet eki oluşturulmadan önce her hizmet test edilir.
Tüketici VPC'sinde bir PSC uç noktası oluşturup istemci sanal makinesinden üretici hizmetine bağlantıyı test edeceğiz.
5. 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.
6. Başlamadan önce
API'leri etkinleştir
Cloud Shell'de proje kimliğinizin ayarlandığından emin olun.
gcloud config list project gcloud config set project [YOUR-PROJECT-ID] project=[YOUR-PROJECT-ID] region=us-central1 zone=us-central1-a echo $project echo $region echo $zone
Gerekli tüm hizmetleri etkinleştirin
gcloud services enable compute.googleapis.com
7. Ü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-service-subnet --network producer-vpc --range 10.0.0.0/24 --region $region --enable-private-ip-google-access gcloud compute networks subnets create psc-nat-subnet --network producer-vpc --range 10.100.100.0/24 --region $region --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ğ, bağlı tüm PSC uç noktalarından gelen gelen trafiğin miktarını destekleyecek şekilde uygun boyutta olmalıdır. Daha fazla bilgi için PSC NAT alt ağ boyutlandırma belgelerine bakın.
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
Aşağıdaki güvenlik duvarı kuralı, PSC alt ağından ağdaki tüm örneklere TCP bağlantı noktaları 1000-2000 üzerindeki trafiğe izin verir. Üretim ortamında bu güvenlik duvarı kuralı yalnızca belirli üretici hizmetiyle ilişkili örneklerle sınırlı olmalıdır.
Cloud Shell'den
gcloud compute network-firewall-policies rules create 2000 --action ALLOW --firewall-policy producer-vpc-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 10.100.100.0/24 --layer4-configs tcp:1000-2000 --global-firewall-policy
Aşağıdaki güvenlik duvarı kuralı, hizmetler alt ağındaki tüm trafiğin TCP bağlantı noktaları 1000-2000 üzerinden geçmesine izin verir. Bu kural, üretici hizmetimizin düzgün çalıştığını test etmek için kullanılır.
Cloud Shell'den
gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy producer-vpc-policy --description "allow traffic within the service subnet" --direction INGRESS --src-ip-ranges 10.0.0.0/24 --layer4-configs tcp:1000-2000 --global-firewall-policy
Üretici sanal makinelerini oluşturma ve yapılandırma
Sanal makineler oluşturma
Cloud Shell'den
gcloud compute instances create portmap-vm1 --zone=$zone --subnet=producer-service-subnet --no-address gcloud compute instances create portmap-vm2 --zone=$zone --subnet=producer-service-subnet --no-address gcloud compute instances create test-client-vm --zone=$zone --subnet=producer-service-subnet --no-address
Aşağıdaki bölümde, her Producer sanal makinesinde 1000 ve 2000 numaralı bağlantı noktasında HTTP sunucusunu başlatın.
Sanal makineleri yapılandırma
Cloud Shell'den
gcloud compute ssh --zone $zone "portmap-vm1" --tunnel-through-iap --project $project
portmap-vm1 oturumundan Cloud Shell'de
mkdir 1000 cd 1000 echo "portmap-vm1 1000">index.html sudo python3 -m http.server 1000 & cd .. mkdir 2000 cd 2000 echo "portmap-vm1 2000">index.html sudo python3 -m http.server 2000 &
Yeni bir Cloud Shell penceresi açma
Değişkenleri sıfırlayarak başlayın. Cloud Shell'de
project=[YOUR-PROJECT-ID] region=us-central1 zone=us-central1-a echo $project echo $region echo $zone gcloud compute ssh --zone $zone "portmap-vm2" --tunnel-through-iap --project $project
portmap-vm2 oturumundan Cloud Shell'de
mkdir 1000 cd 1000 echo "portmap-vm2 1000">index.html sudo python3 -m http.server 1000 & cd .. mkdir 2000 cd 2000 echo "portmap-vm2 2000">index.html sudo python3 -m http.server 2000 &
8. Test Producer Service
Öncelikle, portmap örneklerinin IP adreslerini almamız gerekir. Bu IP adreslerinin ikisini de not edin.
Yeni bir Cloud Shell penceresi açma
Değişkenleri sıfırlayarak başlayın. Cloud Shell'de
project=[YOUR-PROJECT-ID] region=us-central1 zone=us-central1-a echo $project echo $region echo $zone gcloud compute instances describe portmap-vm1 \ --format='get(networkInterfaces[0].networkIP)' --zone $zone gcloud compute instances describe portmap-vm2\ --format='get(networkInterfaces[0].networkIP)' --zone $zone
Test örneğine giriş yapın. Cloud Shell'de
gcloud compute ssh --zone $zone "test-client-vm" --tunnel-through-iap --project $project curl [portmap-vm1 IP]:1000
Beklenen çıktı
portmap-vm1 1000
Cloud Shell'de
curl [portmap-vm1 IP]:2000
Beklenen çıktı
portmap-vm1 2000
Cloud Shell'de
curl [portmap-vm2 IP]:1000
Beklenen çıktı
portmap-vm2 1000
Cloud Shell'de
curl [portmap-vm2 IP]:2000
Beklenen çıktı
portmap-vm2 2000
test-client-vm'den çıkma
9. Portmap NEG ile üretici hizmeti oluşturma
Yük Dengeleyici Bileşenleri Oluşturma
Cloud Shell'den
gcloud compute network-endpoint-groups create portmap-neg --region=$region --network=producer-vpc --subnet=producer-service-subnet --network-endpoint-type=GCE_VM_IP_PORTMAP
İstemci bağlantı noktasından üretici bağlantı noktasına eşleme oluşturmak için Portmap NEG'ye uç noktalar ekleyin. Bu eşlemeyi üretici oluşturur ve bu bilgileri tüketicilere iletmek için kendi yöntemini kullanır. Belirli bağlantı noktası eşlemesi, PSC üzerinden paylaşılmaz.
Cloud Shell'de
gcloud compute network-endpoint-groups update portmap-neg --region=$region --add-endpoint=client-destination-port=1001,instance=projects/$project/zones/$zone/instances/portmap-vm1,port=1000 --add-endpoint=client-destination-port=1002,instance=projects/$project/zones/$zone/instances/portmap-vm1,port=2000 --add-endpoint=client-destination-port=1003,instance=projects/$project/zones/$zone/instances/portmap-vm2,port=1000 --add-endpoint=client-destination-port=1004,instance=projects/$project/zones/$zone/instances/portmap-vm2,port=2000
Yük dengeleyici oluşturma işlemini tamamlayın.
Cloud Shell'de
gcloud compute backend-services create portmap-bes --load-balancing-scheme=internal --region=$region --network=producer-vpc gcloud compute backend-services add-backend portmap-bes --network-endpoint-group=portmap-neg --network-endpoint-group-region=$region gcloud compute forwarding-rules create portmap-fr --load-balancing-scheme=INTERNAL --network=producer-vpc --subnet=producer-service-subnet --ports=ALL --region=$region --backend-service=portmap-bes
Hizmet eki oluşturma
Cloud Shell'den
gcloud compute service-attachments create portmap-service-attachment --region=$region --producer-forwarding-rule=portmap-fr --connection-preference=ACCEPT_AUTOMATIC --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 portmap-service-attachment --region=$region
Beklenen Çıkış Örneği
connectionPreference: ACCEPT_AUTOMATIC creationTimestamp: '2024-07-19T10:02:29.432-07:00' description: '' enableProxyProtocol: false fingerprint: LI8D6JNQsLA= id: '6207474793859982026' kind: compute#serviceAttachment name: portmap-service-attachment natSubnets: - https://www.googleapis.com/compute/v1/projects/$project/regions/$zone/subnetworks/psc-nat-subnet pscServiceAttachmentId: high: '94288091358954472' low: '6207474793859982026' reconcileConnections: false region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/portmap-service-attachment targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/portmap-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-client-subnet --network consumer-vpc --range=10.0.0.0/24 --region $region --enable-private-ip-google-access
Ağ güvenlik duvarı politikası ve güvenlik duvarı kuralları oluşturma
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
Tüketici ağı için yalnızca IAP erişiminden SSH gerekir.
11. Sanal makine, PSC uç noktası oluşturma ve bağlantıyı test etme
Bu noktada üç Cloud Shell penceresi açık olmalıdır. Birinin portmap-vm1 ile açık bir oturumu olmalıdır. Biri portmap-vm2 ile açık bir oturuma, diğeri ise çalışan oturuma sahip olmalıdır.
Test VM'yi oluşturun.
Cloud Shell'den
gcloud compute instances create consumer-client-vm --zone $zone --subnet=consumer-client-subnet --no-address
PSC uç noktası oluşturma
Cloud Shell'den
gcloud compute addresses create psc-endpoint-ip --region=$region --subnet=consumer-client-subnet --addresses 10.0.0.10 gcloud compute forwarding-rules create psc-portmap-endpoint --region=$region --network=consumer-vpc --address=psc-endpoint-ip --target-service-attachment=[SERVICE ATTACHMENT URI]
Bağlantıyı Test Etme
Cloud Shell'den
gcloud compute ssh --zone $zone "consumer-client-vm" --tunnel-through-iap --project $project curl 10.0.0.10:1001
Beklenen Çıkış
portmap-vm1 1000
Cloud Shell'den
curl 10.0.0.10:1002
Beklenen Çıkış
portmap-vm1 2000
Cloud Shell'den
curl 10.0.0.10:1003
Beklenen Çıkış
portmap-vm2 1000
Cloud Shell'den
curl 10.0.0.10:1004
Beklenen Çıkış
portmap-vm2 2000
12. Temizleme adımları
Sanal makine örneğinden çıkma (tüm pencereler)
exit
Tek bir Cloud Shell terminalinden laboratuvar bileşenlerini silme
gcloud compute forwarding-rules delete psc-portmap-endpoint --region=$region -q gcloud compute addresses delete psc-endpoint-ip --region=$region -q gcloud compute instances delete consumer-client-vm --zone=$zone -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 networks subnets delete consumer-client-subnet --region=$region -q gcloud compute networks delete consumer-vpc -q gcloud compute service-attachments delete portmap-service-attachment --region=$region -q gcloud compute forwarding-rules delete portmap-fr --region=$region -q gcloud compute backend-services delete portmap-bes --region=$region -q gcloud compute network-endpoint-groups delete portmap-neg --region=$region -q gcloud compute instances delete test-client-vm --zone=$zone -q gcloud compute instances delete portmap-vm2 --zone=$zone -q gcloud compute instances delete portmap-vm1 --zone=$zone -q gcloud compute network-firewall-policies rules delete 2001 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -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 psc-nat-subnet --region $region -q gcloud compute networks subnets delete producer-service-subnet --region $region -q gcloud compute networks delete producer-vpc -q
13. Tebrikler!
Codelab'i tamamladığınız için tebrik ederiz.
İşlediğimiz konular
- Private Service Connect bağlantı noktası eşleme kullanım alanları
- PSC bağlantı noktası eşlemenin temel avantajları
- Ağ gereksinimleri
- Bağlantı noktası eşleme kullanarak Private Service Connect üretici hizmeti oluşturun.
- Private Service Connect uç noktası oluşturma
- Private Service Connect uç noktası üzerinden üretici hizmetine çağrı yapma