Hizmet Üreticileri için Private Service Connect Bağlantı Noktası Eşleme

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

ad37cfc003475b7c.png

Ü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

  1. 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.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • 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.
  1. 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:

55efc1aaa7a4d3ad.png

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:

7ffe5cbb04455448.png

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