1. Giriş
Private Service Connect, hizmet üreticilerinin hizmetleri bir VPC ağından diğerine özel olarak kullanıma sunmasını sağlar. Tüketiciler, üretici hizmetlerine PSC uç noktaları veya PSC arka uçları aracılığıyla erişebilir.
Bu codelab'in odak noktası PSC arka uçlarıdır. PSC arka uçları, Google Cloud proxy yük dengeleyicileriyle (uygulama veya ağ) birlikte kullanılır. PSC arka uçlarını kullanmak, aşağıdakiler gibi tüketici tarafında daha ayrıntılı kontroller sağlar:
- Daha ayrıntılı gözlemlenebilirlik ve günlük kaydı
- Cloud Armor Entegrasyonu
- Özel URL'ler
- Gelişmiş trafik yönetimi
- Özel TLS sertifikaları
Bu codelab'de, başka bir ağdaki bir üretici hizmetine özel olarak erişmek için Global External Application Load Balancer ile Private Service Connect arka ucu oluşturmayı öğreneceksiniz.
Neler öğreneceksiniz?
- Global harici uygulama yük dengeleyicisiyle ilişkili bir PSC arka ucu oluşturma ve yapılandırma
- Apache tarafından yönetilen bir web hizmeti yapılandırın ve bunu bir hizmet eki aracılığıyla PSC hizmeti olarak kullanıma sunun.
- Dahili ve harici uygulama yük dengeleyicilerde SSL'yi sonlandırmak için SSL sertifikaları oluşturma
- PSC hizmetine erişmek için Cloud DNS genel bölgesi yapılandırma
Gerekenler
- Sahip izinlerine sahip bir Google Cloud projesi
2. Test Ortamı
Oluşturacağınız ortam, bir tüketici VPC'si ve bir üretici VPC'sinden oluşur. Üretici VPC'sinde, açık kaynaklı bir Apache web hizmeti oluşturan bir örnek şablonundan yönetilen örnek grubu dağıtacaksınız. Ayrıca, hizmetin yerel işlevselliğinin düzgün şekilde çalıştığından emin olmak için bir test VM'si de dağıtacaksınız. Apache hizmetini, bir hizmet eki aracılığıyla PSC üretici hizmeti olarak kullanıma sunarsınız.
Tüketici VPC'sinde, Apache hizmetini işaret eden bir PSC arka uç hizmetiyle global harici uygulama yük dengeleyicisi dağıtacaksınız. Ardından, genel internette PSC hizmetine erişmek için herkese açık bir DNS bölgesi oluşturursunuz.

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 proje kimliğinizin ayarlandığından emin olun.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] export project=YOUR-PROJECT-NAME export region=us-central1 echo $project echo $region
Gerekli tüm hizmetleri etkinleştirin
gcloud services enable compute.googleapis.com gcloud services enable servicedirectory.googleapis.com gcloud services enable dns.googleapis.com
5. Üretici VPC'si Kurulumu
VPC ağı oluşturma
Cloud Shell'den
gcloud compute networks create producer-vpc --subnet-mode custom
Alt ağ oluşturma
Üretici VPC'sinde iki genel amaçlı alt ağ dağıtılır. Hizmet alt ağı, Apache web hizmeti VM'lerini ve yük dengeleyici iletme kuralını dağıtmak için kullanılır. test-client-subnet, farklı bir bölgede olacak ve Apache hizmetini genel erişim etkinleştirilmiş şekilde test etmek için bir sanal makine dağıtmak üzere kullanılacak.
Cloud Shell'den
gcloud compute networks subnets create service-subnet \
--network=producer-vpc \
--range=10.0.0.0/28 \
--region=$region
Cloud Shell'den
gcloud compute networks subnets create test-client-subnet \
--network=producer-vpc \
--range=10.0.1.0/28 \
--region=us-east4
Ayrıca, bölgesel dahili uygulama yük dengeleyicisiyle kullanılacak yalnızca proxy alt ağı da dağıtmamız gerekir.
Cloud Shell'den
gcloud compute networks subnets create central-proxy-subnet \
--network=producer-vpc \
--range=10.100.101.0/24 \
--region=$region \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE
Bir PSC hizmeti dağıtıldığında, her benzersiz hizmetin Hizmet Eki ile ilişkilendirilmesi için karşılık gelen bir PSC NAT alt ağına ihtiyacı vardır. Bu alt ağ, beklenen bağlı uç nokta sayısına göre uygun boyutta olmalıdır.
Cloud Shell'den
gcloud compute networks subnets create psc-nat-subnet \
--network=producer-vpc \
--region=$region \
--range=10.100.100.0/24 \
--purpose=PRIVATE_SERVICE_CONNECT
Cloud NAT oluşturma
Üretici hizmetlerimiz için uygun paketlerin yüklenmesi amacıyla Cloud NAT gereklidir.
Cloud Shell'den
gcloud compute routers create central-cr \
--network=producer-vpc \
--region=$region
Cloud Shell'den
gcloud compute routers nats create central-nat \
--router=central-cr \
--region=$region \
--nat-all-subnet-ip-ranges \
--auto-allocate-nat-external-ips
Ağ Güvenlik Duvarı Politikası ve 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
Yalnızca yük dengeleyici proxy'si alt ağından (2000) gelen giriş trafiğinin yük dengeleyici arka uçlarına ulaşmasına izin vermek için iki ek güvenlik duvarı kuralı ve arka uç örneklerinde yük dengeleyici durum denetimlerine izin vermek için bir kural (2001) gerekir.
Cloud Shell'den
gcloud compute network-firewall-policies rules create 2000 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "allow traffic from load balancer proxy subnet" \
--direction INGRESS \
--src-ip-ranges 10.100.101.0/24 \
--layer4-configs tcp:443 \
--global-firewall-policy
gcloud compute network-firewall-policies rules create 2001 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "allow load balancer health checks" \
--direction INGRESS \
--src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \
--layer4-configs tcp:443 \
--global-firewall-policy
6. Apache Web Hizmeti Oluşturma
"PSC Hizmeti"ni görüntüleyen basit bir Apache Web Hizmeti oluşturacağız.
Örnek Şablonu Oluşturma
Cloud Shell'den
gcloud compute instance-templates create apache-service-template \
--network producer-vpc \
--subnet service-subnet \
--region $region \
--no-address \
--metadata startup-script='#! /bin/bash
sudo apt-get update
apt-get install apache2 -y
a2enmod ssl
sudo a2ensite default-ssl
echo "PSC Service" | \
tee /var/www/html/index.html
systemctl restart apache2'
MIG için durum denetimi oluşturma
Cloud Shell'den
gcloud compute health-checks create https service-mig-healthcheck \
--port=443 \
--global
Yönetilen örnek grubu oluşturma
Cloud Shell'den
gcloud compute instance-groups managed create psc-service-mig \
--region $region \
--size=2 \
--template=apache-service-template \
--health-check=service-mig-healthcheck
gcloud compute instance-groups managed set-named-ports psc-service-mig \
--named-ports=https:443 \
--region=$region
7. Kendinden imzalı sertifika oluşturma
Kendinden imzalı sertifika oluşturmak için buradaki talimatların 1. adımını tamamlayın. Tüm komutları Cloud Shell'de çalıştırabilirsiniz. 1. adım tamamlandığında buraya geri dönün. ORTAK ADINIZ EXAMPLE.COM İLE YAPILANDIRILMALIDIR.
Yük dengeleyicinizle ilişkilendirmek için bir sertifika kaynağı oluşturun. Sertifika ve özel anahtar parametrelerini kendi dosya adlarınızla değiştirin.
Cloud Shell'den
gcloud compute ssl-certificates create producer-service-cert \
--certificate=<your-producer-certfile.cert> \
--private-key=<your-producer-keyfile.pem> \
--region=$region
8. Bölgesel dahili uygulama yük dengeleyicisini oluşturma
Ardından, hizmet için yük dengeleme bileşenlerini oluşturacağız. Dahili bölgesel uygulama yük dengeleyicisini kullanıyoruz ancak herhangi bir Google Cloud dahili yük dengeleyicisini kullanabilirsiniz. TLS işleme için uygun yük dengeleyici belgelerini inceleyin.
Yük dengeleyicinizin yönlendirme kuralı için kullanılacak dahili IP adresini oluşturun ve hizmete test çağrısı yaptığınızda daha sonra kullanılacak IP'yi not edin.
Cloud Shell'den
gcloud compute addresses create apache-service-ip \ --region=$region \ --subnet=service-subnet gcloud compute addresses describe apache-service-ip \ --format="get(address)" \ --region=$region
Yük dengeleyici durum denetimini oluşturun.
Cloud Shell'den
gcloud compute health-checks create https lb-apache-service-hc \
--region=$region \
--port-name=https
Arka uç hizmetini oluşturun.
Cloud Shell'den
gcloud compute backend-services create apache-bes\ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTPS \ --port-name=https \ --health-checks=lb-apache-service-hc \ --health-checks-region=$region \ --region=$region gcloud compute backend-services add-backend apache-bes \ --balancing-mode=UTILIZATION \ --instance-group=psc-service-mig \ --region=$region
URL eşlemesini oluşturun.
Cloud Shell'den
gcloud compute url-maps create producer-url-map \ --default-service=apache-bes \ --region=$region
Hedef HTTPS proxy'lerini oluşturun.
Cloud Shell'den
gcloud compute target-https-proxies create https-proxy \ --url-map=producer-url-map \ --region=$region \ --ssl-certificates=producer-service-cert
İletim kuralını oluşturun.
Cloud Shell'den
gcloud compute forwarding-rules create apache-fr \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=producer-vpc \ --subnet=service-subnet \ --address=apache-service-ip \ --ports=443 \ --region=$region \ --target-https-proxy=https-proxy \ --target-https-proxy-region=$region \ --allow-global-access
9. Test Sanal Makinesi Oluşturma ve Hizmeti Yerel Olarak Test Etme
Hizmet ekini oluşturmadan önce, yük dengeleyicinin küresel erişim ve TLS ile doğru şekilde yapılandırıldığını test etmek için farklı bir bölgede bir test istemcisi VM'si oluşturacağız.
Cloud Shell'den
gcloud compute instances create vm-client \
--zone=us-east4-a \
--subnet=test-client-subnet \
--no-address
Temel hazırlık işleminin tamamlanması için yaklaşık bir dakika bekleyin ve ardından örnekte SSH uygulayın.
Cloud Shell'den
gcloud compute ssh \
--zone "us-east4-a" "vm-client" \
--tunnel-through-iap \
--project $project
Yük dengeleyici üzerinden 443 numaralı bağlantı noktasıyla bağlanarak Apache hizmetini test edin. Dahili IP adresi, daha önce ayırdığınız ve not aldığınız adrestir.
curl https://example.com:443 -k --connect-to example.com:443:<YOUR-INTERNAL-IP>:443
BEKLENEN SONUÇ
PSC Service
Sanal makineden çıkın.
vm-client'tan
exit
10. Hizmet ekini oluşturma
Bu örnekte, hizmet ekimizi yalnızca bu projeden gelen PSC bağlantılarına izin verecek şekilde yapılandırıyoruz. Bu, bir veya daha fazla belirli projeyi ya da ağı kabul edecek şekilde yapılandırılabilir ancak ikisini birden kabul edecek şekilde yapılandırılamaz. Maksimum bağlantı sınırımızı 5 bağlantı olarak belirledik. Her proje veya ağ için bir sınır belirlenmelidir.
Cloud Shell'den
gcloud compute service-attachments create apache-service-attachment \
--region=$region \
--producer-forwarding-rule=apache-fr \
--connection-preference=ACCEPT_MANUAL \
--consumer-accept-list=$project=5 \
--nat-subnets=psc-nat-subnet
PSC arka uç yapılandırması için bir sonraki adımda ihtiyacınız olacağından Hizmet Ekleme URI'sini (selfLink) not etmeniz gerekir. Bu kimliği Cloud Shell'de aşağıdaki komutu çalıştırarak edinebilirsiniz.
Cloud Shell'den
gcloud compute service-attachments describe apache-service-attachment \
--region $region
projects ile başlayan URI'yi kopyalayın.
Örnek: projects/$project/regions/$region/serviceAttachments/apache-service-attachment
11. Tüketici VPC'si Kurulumu
VPC ağı oluşturma
Cloud Shell'den
gcloud compute networks create consumer-vpc --subnet-mode custom
Alt Ağ Oluştur
Private Service Connect ağ uç noktası grubunun (NEG) dağıtılacağı tüketici tarafında bir alt ağ gerekir.
Cloud Shell'den
gcloud compute networks subnets create consumer-subnet \
--network=consumer-vpc \
--region=$region \
--range=10.0.0.0/28
12. Harici IP ayırma ve tüketici tarafında kendinden imzalı sertifika oluşturma
Harici IP
Daha sonra yük dengeleyici iletim kuralımız için kullanılacak harici statik IP adresini oluşturun ve IP adresini bir Cloud Shell değişkeninde yakalayın.
Cloud Shell'den
gcloud compute addresses create external-psc-ip \
--network-tier=PREMIUM \
--ip-version=IPV4 \
--global
export externalip=$(gcloud compute addresses describe external-psc-ip \
--format="get(address)" \
--global)
echo $externalip
Tüketici tarafından imzalanmış sertifika
Kendinden imzalı sertifika oluşturmak için buradaki talimatların 1. adımını ikinci kez tamamlayın. Tüm komutları Cloud Shell'de çalıştırabilirsiniz. 1. adım tamamlandığında buraya geri dönün. Kendi herkese açık DNS bölgemizi kullanmak yerine nip.io adlı açık kaynaklı bir herkese açık joker karakter DNS hizmeti kullanacağız. PSC hizmetinizin herkese açık URL'si, az önce yapılandırdığınız harici IP adresini kullanır. ORTAK ADINIZ <YOUR-EXTERNAL-IP.nip.io> İLE YAPILANDIRILMALIDIR
Harici yük dengeleyicinizle ilişkilendirmek için bir sertifika kaynağı oluşturun. Sertifika ve özel anahtar parametrelerini kendi dosya adlarınızla değiştirin.
Cloud Shell'den
gcloud compute ssl-certificates create consumer-service-cert \
--certificate=<your-consumer-certfile.cert> \
--private-key=<your-consumer-keyfile.pem> \
--global
13. Yük dengeleyici bileşenlerini oluşturma
Arka uç hizmeti olarak yeni oluşturduğumuz hizmet ekine işaret eden bir PSC NEG ile global harici uygulama yük dengeleyicisi oluşturacağız.
Son adımda not aldığımız hizmet ekleme URI'sini hazır bulundurun. Aşağıdaki psc-target-service değerini URI'nizle değiştirin.
Cloud Shell'den
gcloud compute network-endpoint-groups create apache-psc-neg \ --network-endpoint-type=private-service-connect \ --psc-target-service=projects/$project/regions/$region/serviceAttachments/apache-service-attachment \ --region=$region \ --network=consumer-vpc \ --subnet=consumer-subnet
Arka uç hizmetini oluşturun.
Cloud Shell'den
gcloud compute backend-services create apache-pscneg-bes \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=HTTPS \
--global
gcloud compute backend-services add-backend apache-pscneg-bes \
--network-endpoint-group=apache-psc-neg \
--network-endpoint-group-region=$region \
--global
URL eşlemesini oluşturma
Cloud Shell'den
gcloud compute url-maps create consumer-url-map \
--default-service=apache-pscneg-bes \
--global
Hedef HTTPS proxy'lerini oluşturun.
Cloud Shell'den
gcloud compute target-https-proxies create psc-https-proxy \
--url-map=consumer-url-map \
--ssl-certificates=consumer-service-cert
İletim kuralını oluşturma
Cloud Shell'den
gcloud compute forwarding-rules create external-fr \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=external-psc-ip \ --global \ --target-https-proxy=psc-https-proxy \ --ports=443
14. Herkese açık DNS alt bölgesi oluşturma
Cloud Shell'den
gcloud dns managed-zones create "psc-service" \
--dns-name=$externalip.nip.io. \
--description="public dns for psc service" \
--visibility=public
Cloud Shell'den
gcloud dns record-sets transaction start \ --zone="psc-service" gcloud dns record-sets transaction add $externalip \ --name=$externalip.nip.io \ --ttl=300 \ --type=A \ --zone="psc-service" gcloud dns record-sets transaction execute \ --zone="psc-service"
15. Tüketici PSC bağlantısını test etme
Herkese açık DNS'nin yayılması için test etmeden önce 7-10 dakika bekleyin.
Cloud Shell'den
curl https://$externalip.nip.io -k
Ayrıca tarayıcınıza veya masaüstü terminalinize https://<YOUR-EXTERNAL-IP>.nip.io adresini girerek de tarayıcınızdan test yapabilirsiniz.
BEKLENEN SONUÇ
PSC Service
16. Temizleme adımları
Tek bir Cloud Shell terminalinden laboratuvar bileşenlerini silme
gcloud dns record-sets delete $externalip.nip.io --zone="psc-service" --type=A -q gcloud dns managed-zones delete "psc-service" -q gcloud compute forwarding-rules delete external-fr --global -q gcloud compute target-https-proxies delete psc-https-proxy -q gcloud compute url-maps delete consumer-url-map --global -q gcloud compute backend-services delete apache-pscneg-bes --global -q gcloud compute network-endpoint-groups delete apache-psc-neg --region=$region -q gcloud compute ssl-certificates delete consumer-service-cert --global -q gcloud compute addresses delete external-psc-ip --global -q gcloud compute networks subnets delete consumer-subnet --region $region -q gcloud compute networks delete consumer-vpc -q gcloud compute instances delete vm-client --zone=us-east4-a -q gcloud compute service-attachments delete apache-service-attachment --region $region -q gcloud compute forwarding-rules delete apache-fr --region $region -q gcloud compute target-https-proxies delete https-proxy --region $region -q gcloud compute url-maps delete producer-url-map --region $region -q gcloud compute backend-services delete apache-bes --region $region -q gcloud compute health-checks delete lb-apache-service-hc --region $region -q gcloud compute addresses delete apache-service-ip --region $region -q gcloud compute ssl-certificates delete producer-service-cert --region $region -q gcloud compute instance-groups managed delete psc-service-mig --region $region -q gcloud compute health-checks delete service-mig-healthcheck --global -q gcloud compute instance-templates delete apache-service-template -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 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 psc-nat-subnet --region $region -q gcloud compute networks subnets delete service-subnet --region $region -q gcloud compute networks subnets delete test-client-subnet --region us-east4 -q gcloud compute networks subnets delete central-proxy-subnet --region $region -q gcloud compute networks delete producer-vpc -q
17. Tebrikler!
Codelab'i tamamladığınız için tebrik ederiz.
İşlediğimiz konular
- Global harici uygulama yük dengeleyicisiyle ilişkili bir PSC arka ucu oluşturma ve yapılandırma
- Apache tarafından yönetilen bir web hizmeti yapılandırın ve bunu bir hizmet eki aracılığıyla PSC hizmeti olarak kullanıma sunun.
- Dahili ve harici uygulama yük dengeleyicilerde SSL'yi sonlandırmak için SSL sertifikaları oluşturma
- PSC hizmetine erişmek için Cloud DNS genel bölgesi yapılandırma