1. Giriş
Private Service Connect, hizmet üreticilerin bir VPC ağındaki hizmetleri başka bir VPC ağında özel olarak göstermesini sağlar. Tüketiciler, PSC uç noktaları veya PSC arka uçları aracılığıyla üretici hizmetlerine 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ı kullanmak, tüketici tarafında daha ayrıntılı denetimler sağlar. Örneğin:
- 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 gizli olarak erişmek için Global Harici Uygulama Yük Dengelemesi ile Private Service Connect arka ucu oluşturmayı öğreneceksiniz.
Neler öğreneceksiniz?
- Global harici uygulama yük dengeleyiciyle ilişkili bir PSC arka ucu oluşturun ve yapılandırın
- Apache yönetilen web hizmetini yapılandırın ve bir hizmet eki aracılığıyla PSC hizmeti olarak gösterin
- Dahili ve harici uygulama yük dengeleyicilerinde SSL'yi sonlandırmak için SSL sertifikaları oluşturma
- PSC hizmetine erişmek için Cloud DNS herkese açık bir bölgesi yapılandırma
Gerekenler
- Sahibi izinlerine sahip bir Google Cloud projesi
2. Test Ortamı
Oluşturacağınız ortam, bir Tüketici VPC'sinden ve Üretici VPC'sinden oluşacaktır. Üretici VPC'de, açık kaynak Apache web hizmeti oluşturan bir örnek şablonundan yönetilen örnek grubu dağıtacaksınız. Ayrıca, hizmetin yerel olarak düzgün şekilde çalıştığından emin olmak için bir test sanal makinesi de dağıtırsı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 Dengelemesi dağıtırsınız. Ardından, herkese açık internetteki PSC hizmetine erişmek için herkese açık bir DNS alt bölgesi oluşturursunuz.
3. 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ğerlerin üçü 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ğerinde ü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.
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 Kurulumu
VPC Ağı Oluşturma
Cloud Shell'den
gcloud compute networks create producer-vpc --subnet-mode custom
Alt ağ oluşturma
Üretici-vpc'ye iki genel amaçlı alt ağ dağıtılır. service-subnet, Apache web hizmeti sanal makinelerinin yanı sıra yük dengeleyici iletim kuralını dağıtmak için kullanılır. test-client-subnet farklı bir bölgede olacak ve Apache hizmetini küresel erişim etkinken test etmek için bir sanal makine dağıtmak amacıyla kullanılacaktır.
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
Bölgesel Dahili Uygulama Yük Dengeleyici ile 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 ilgili bir PSC NAT alt ağının olması gerekir. Bu alt ağ, beklenen bağlı uç nokta sayısına bağlı olarak uygun şekilde boyutlandırılmalı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 gerekir.
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ğı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
Yük dengeleyicinin yalnızca proxy alt ağındaki (2000) kaynaktan gelen yük dengeleyici arka uçlarına giriş trafiğine izin vermek için iki ek güvenlik duvarı kuralı ve arka uç örneklerindeki (2001) yük dengeleyici durum denetimlerine izin vermek için bir kural 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österen 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 İmzalı 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 dönün. GENEL ADINIZIN EXAMPLE.COM İLE YAPILANDIRILMASI GEREKİR.
Yük dengeleyicinizle ilişkilendirecek 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. Dahili Bölgesel Uygulama Yük Dengeleyici'yi Oluşturma
Ardından, hizmet için yük dengeleyici bileşenlerini oluşturacağız. Dahili bölgesel uygulama yük dengeleyiciyi kullanıyoruz ancak dilerseniz herhangi bir Google Cloud dahili yük dengeleyiciyi kullanabilirsiniz. TLS işleme için uygun yük dengeleyici dokümanlarını inceleyin.
Yük dengeleyicinizin iletim kuralı için kullanılacak dahili IP adresini oluşturun ve daha sonra hizmete test çağrısı yaptığınızda kullanılacak IP adresini 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
Yönlendirme 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 amaçlı bir sanal makine oluşturun ve hizmeti yerel olarak test edin
Hizmet Eki'ni oluşturmadan önce, yük dengeleyicinin Global Erişim ve TLS ile doğru şekilde yapılandırıldığını test etmek için farklı bir bölgede bir test istemci sanal makinesi oluşturacağız.
Cloud Shell'den
gcloud compute instances create vm-client \ --zone=us-east4-a \ --subnet=test-client-subnet \ --no-address
Hazırlamanın tamamlanması için yaklaşık bir dakika bekleyin ve ardından örneğe SSH ile bağlanın.
Cloud Shell'den
gcloud compute ssh \ --zone "us-east4-a" "vm-client" \ --tunnel-through-iap \ --project $project
Yük dengeleyici üzerinden 443 üzerinden bağlanarak Apache hizmetini test edin. Dahili IP adresi, daha önce ayırdığınız ve not ettiğiniz 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'ten
exit
10. Hizmet Eki'ni 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 edemez. 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 eki URI'sini (selfLink) not etmeniz gerekir. Cloud Shell'de aşağıdakileri çalıştırarak bu değeri elde edebilirsiniz.
Cloud Shell'den
gcloud compute service-attachments describe apache-service-attachment \ --region $region
projects ile başlayan URI'yi kopyalayın
Örnek: projeler/$proje/bölgeler/$bölge/hizmetEkleri/apache-hizmet-eki
11. Tüketici VPC Kurulumu
VPC Ağı Oluşturma
Cloud Shell'den
gcloud compute networks create consumer-vpc --subnet-mode custom
Alt Ağ Oluştur
Tüketici tarafında, Private Service Connect ağ uç noktası grubunun (NEG) dağıtılacağı 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'yi 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üketicinin Kendi İmzasını Attığı 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 dönün. Kendi herkese açık DNS bölgemize sahip olmak yerine nip.io adlı açık kaynak herkese açık bir joker karakter DNS hizmeti kullanacağız. PSC hizmetinizin herkese açık URL'sinde, yeni yapılandırdığınız harici IP adresi kullanılır. HERKESE AÇIK ADINIZIN <YOUR-EXTERNAL-IP.nip.io> İLE YAPILANDIRILMASI GEREKİYOR
Harici yük dengeleyicinizle ilişkilendirilecek 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şturulan hizmet ekimizi işaret eden bir PSC NEG içeren küresel harici uygulama yük dengeleyicisi oluşturacağız.
Son adımda not aldığımız Hizmet Eki URI'sini hazır bulundurun. Aşağıdaki psc-target-service ifadesini 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
Yönlendirme 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ızdan veya masaüstü terminalinizden https://<HARİCİ-IP'NİZ>.nip.io adresini girerek de 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 tebrikler.
Ele aldığımız konular
- Global harici uygulama yük dengeleyiciyle ilişkili bir PSC arka ucu oluşturun ve yapılandırın
- Apache yönetilen web hizmetini yapılandırın ve bir hizmet eki aracılığıyla PSC hizmeti olarak gösterin
- 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 herkese açık bir bölgesi yapılandırma