1. Giriş
Private Service Connect ile hizmet üreticileri, bir VPC ortamındaki hizmetleri Hizmet Eki aracılığıyla gösterebilir 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 sanal makinenin aynı bağlantı noktalarında aynı hizmetleri sunduğu sanal makine kümeleri olarak tasarlanır. Daha önce bu hizmet tasarımları, tüketici tarafında birden fazla Private Service Connect uç noktasının dağıtılmasını veya doğru üretici sanal makinesinin hedeflendiğinden emin olmak için üretici tarafında IP yönlendirmenin kullanılmasını gerektiriyordu.
Private Service Connect artık bağlantı noktası eşlemeyi kullanarak doğal olarak doğru hedefi hedefleyebilir. Bu laboratuvarda, bu özelliğin gerekli olduğu kullanım alanları ve Özel Service Connect iş yüküne Bağlantı Noktası Eşleme NEG'sinin nasıl dağıtılacağı 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şlemeyi kullanarak Private Service Connect üretici hizmeti oluşturun.
- Private Service Connect uç noktası oluşturma
- Private Service Connect uç noktası üzerinden bir üretici hizmetine çağrı yapma
Gerekenler
- Sahibi 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şlemesinden yararlanabilecek en yaygın üretici türleri NoSQL veritabanı üreticileri ve Kafka üreticileridir. Ancak, belirli sanal makine eşleme gereksinimleri olan aynı hizmetleri aynı bağlantı noktalarında sunan bir sanal makine kümesi gerektiren tüm üreticiler bu özelliği kullanabilir.
Üretici, istemci bağlantı noktası ile üretici sanal makinesi + hedef bağlantı noktası arasındaki eşlemeyi tanımlar. Ardından üreticinin bu bilgileri tüketiciyle paylaşması gerekir. Tüketici, hangi üretici sanal makinesine + 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 farklı bir bağlantı noktasıdır.
PSC bağlantı noktası eşlemenin temel avantajları
- Basit: Üretici, PSC bileşenlerini bağlantı noktası eşlemesiyle dağıtır ve tüketiciler bir PSC uç noktası dağıtır. PSC, ağ adresi çevrimini otomatik olarak yönetir.
- Maliyet etkin: Ek PSC kaynağı veya üretici sanal makine CPU döngüsü gerektirmez. Fiyatlandırma, diğer PSC dağıtım türleriyle aynıdır.
- Yüksek performans: Bağlantı noktası eşleme, diğer PSC modlarıyla aynı hat hızı veri akışı ve düşük gecikmeyi sunar.
- Ölçeklenebilir ve IP açısından verimli: Tüketici VPC'sindeki bir IP adresi, 1.000 üretici sanal makinesine 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şli yük dengeleyici 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 NEG'leri yalnızca PSC bağlantısında kullanılabilir. İstemci sanal makinesi, üretici yük dengeleyici yönlendirme kuralını doğrudan çağırırsa bu kurallar çalışmaz. Bu durum, bu kod laboratuvarındaki üretici hizmetinin test edilme şekline yansır.
- PSC uç noktası ve üretici hizmet grubu farklı VPC'lerde olmalıdır.
4. Codelab topolojisi
Üretici VPC'de, her biri 1000 numaralı bağlantı noktasında ve 2000 numaralı bağlantı noktasında iki web sunucusu çalıştıracak iki sanal makine oluşturulur. Portmap NEG'yi, dahili ağ geçişi yük dengeleyiciyi ve hizmet eklemeyi ayarlamadan önce her hizmeti test ederiz.
Tüketici VPC'sinde bir PSC uç noktası oluşturacak ve istemci sanal makinesinden üretici hizmetine bağlantıyı test edeceğiz.
5. Kurulum ve Gereksinimler
Kendine ait tempoda ortam oluşturma
- 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ğerindeki ücretsiz deneme programına uygundur.
Cloud Shell'i başlatma
Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir olsa da bu kod laboratuvarında bulutta ç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 ihtiyaç duyacağınız 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.
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 çevirisi amacıyla PSC hizmet eki ile ilişkilendirilir. Üretim kullanım alanları için bu alt ağın, tüm bağlı PSC uç noktalarından gelen gelen trafik miktarı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.
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
Aşağıdaki güvenlik duvarı kuralı, PSC alt ağındaki 1000-2000 TCP bağlantı noktalarında ağdaki tüm örneklere trafik akışı sağlar. Ü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ı, 1000-2000 TCP bağlantı noktalarında hizmet alt ağındaki tüm trafiğe izin verir. Bu kural, yapımcı 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 makineleri oluşturma ve yapılandırma
Sanal makine 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 üretici 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 Üretici Hizmeti
Ö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 çıkış
portmap-vm1 1000
Cloud Shell'de
curl [portmap-vm1 IP]:2000
Beklenen çıkış
portmap-vm1 2000
Cloud Shell'de
curl [portmap-vm2 IP]:1000
Beklenen çıkış
portmap-vm2 1000
Cloud Shell'de
curl [portmap-vm2 IP]:2000
Beklenen çıkış
portmap-vm2 2000
test-client-vm'den çıkma
9. Portmap NEG ile Producer 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 bitiş noktası ekleyin. Bu eşlemeyi yapımcı oluşturur ve bu bilgileri tüketicilere iletme yöntemi kendi belirler. 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 dengeleyiciyi 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şimi üzerinden 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. portmap-vm1 ile açık bir oturumunuz olmalıdır. Bunlardan 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 tebrikler.
Ele aldığımız 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şlemeyi kullanarak Private Service Connect üretici hizmeti oluşturun.
- Private Service Connect uç noktası oluşturma
- Private Service Connect uç noktası üzerinden bir üretici hizmetine çağrı yapma