1. Giriş
Otomatik DNS yapılandırmasına sahip Private Service Connect, tüketici Private Service Connect uç noktası IP adresleriyle programlanmış DNS kayıtlarını otomatik olarak oluşturmak için Hizmet Dizini ve Cloud DNS'yi kullanır.
Oluşturacağınız uygulama
Bu codelab'de, Şekil 1'de gösterildiği gibi otomatik DNS'nin kullanımını gösteren kapsamlı bir Private Service Connect mimarisi oluşturacaksınız.
Otomatik DNS aşağıdakiler sayesinde çalışır:
- Üretici hizmet eki, Private Service Connect hizmet ekini oluştururken "– domain-names" işaretini kullanarak sahip olunan bir herkese açık alan adı sağlayarak otomatik DNS oluşturur.
- Tüketici bir uç nokta adı tanımlar.
- Otomatik DNS, tüketici uç noktası adından oluşan bir Hizmet Dizini girişine ek olarak hem goog-psc-default-us-central1 DNS alt bölgesini hem de cosmopup.net DNS adını oluşturur.
Otomatik DNS'nin avantajı, (4) numaralı resimde gösterilmektedir. Burada son kullanıcı, DNS (FQDN stargazer.cosmopup.net) aracılığıyla tüketici uç noktasıyla iletişim kurabilir.
Şekil 1
Neler öğreneceksiniz?
- Dahili HTTP(S) yük dengeleyici oluşturma
- Otomatik DNS ile hizmet eki oluşturma
- Private Service Connect üretici hizmeti oluşturma
- Otomatik DNS'yi kullanarak tüketici uç noktasına erişim
Gerekenler
- Google Cloud projesi
- Sahip olduğunuz herkese açık bir alan
2. Başlamadan önce
Projeyi, codelab'i destekleyecek şekilde güncelleme
Bu Codelab'de, Cloud Shell'de gcloud yapılandırmasının uygulanmasına yardımcı olmak için $variables değişkenleri kullanılır.
Cloud Shell'de aşağıdakileri yapın:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
3. Yapımcı Kurulumu
Üretici VPC'sini oluşturma
Cloud Shell'de aşağıdakileri yapın:
gcloud compute networks create producer-vpc --project=$projectname --subnet-mode=custom
Üretici alt ağlarını oluşturma
Cloud Shell'de aşağıdakileri yapın:
gcloud compute networks subnets create gce-subnet --project=$projectname --range=172.16.20.0/28 --network=producer-vpc --region=us-central1
Cloud Shell'de aşağıdakileri yapın:
gcloud compute networks subnets create load-balancer-subnet --project=$projectname --range=172.16.10.0/28 --network=producer-vpc --region=us-central1
Dahili yük dengeleyici için IP adresi ayırma
Cloud Shell'de aşağıdakileri yapın:
gcloud compute addresses create lb-ip \
--region=us-central1 \
--subnet=load-balancer-subnet \
--purpose=GCE_ENDPOINT
Ayrılan IP adresini görüntüleme
Ayrılan IP adresini görüntülemek için compute addresses describe komutunu kullanın.
gcloud compute addresses describe lb-ip --region=us-central1 | grep address:
Bölgesel proxy alt ağlarını oluşturma
Proxy atama işlemi, yük dengeleyici düzeyinde değil VPC ağı düzeyinde gerçekleşir. Envoy tabanlı yük dengeleyiciler kullandığınız sanal ağın (VPC) her bölgesinde bir yalnızca proxy alt ağı oluşturmanız gerekir. Aynı bölgede ve aynı VPC ağında birden fazla yük dengeleyici dağıtırsanız bu yük dengeleyiciler, yük dengeleme için aynı yalnızca proxy alt ağını paylaşır.
- İstemci, yük dengeleyicinin iletim kuralının IP adresine ve bağlantı noktasına bağlantı kurar.
- Her proxy, ilgili yük dengeleyicinin iletim kuralı tarafından belirtilen IP adresini ve bağlantı noktasını dinler. Proxy'lerden biri istemcinin ağ bağlantısını alır ve sonlandırır.
- Proxy, yük dengeleyicinin URL eşlemesi ve arka uç hizmetleri tarafından belirlenen uygun arka uç sanal makinesiyle bağlantı kurar.
VPC ağınızın otomatik modda veya özel modda olması fark etmeksizin yalnızca proxy alt ağları oluşturmanız gerekir. Yalnızca proxy kullanılan alt ağda en az 64 IP adresi sağlanmalıdır. Bunun karşılık geldiği ön ek uzunluğu /26 veya daha azdır. Önerilen alt ağ boyutu /23'tür (yalnızca proxy adresleri için 512 adres).
Cloud Shell'de aşağıdakileri yapın:
gcloud compute networks subnets create proxy-subnet-us-central \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=us-central1 \
--network=producer-vpc \
--range=172.16.0.0/23
Private Service Connect NAT alt ağlarını oluşturma
Private Service Connect ile kullanmak için bir veya daha fazla özel alt ağ oluşturun. Hizmet yayınlamak için Google Cloud konsolunu kullanıyorsanız alt ağları bu işlem sırasında oluşturabilirsiniz. Alt ağı, hizmetin yük dengeleyicisiyle aynı bölgede oluşturun. Normal bir alt ağı Private Service Connect alt ağına dönüştüremezsiniz.
Cloud Shell'de aşağıdakileri yapın:
gcloud compute networks subnets create psc-nat-subnet \
--project $projectname \
--network producer-vpc \
--region us-central1 \
--range 100.100.10.0/24 \
--purpose PRIVATE_SERVICE_CONNECT
Üretici güvenlik duvarı kurallarını oluşturma
Private Service Connect NAT alt ağı ile yalnızca ILB proxy alt ağı arasında trafiğe izin vermek için güvenlik duvarı kurallarını yapılandırın.
Cloud Shell'de aşağıdakileri yapın:
gcloud compute --project=$projectname firewall-rules create allow-to-ingress-nat-subnet --direction=INGRESS --priority=1000 --network=producer-vpc --action=ALLOW --rules=all --source-ranges=100.100.10.0/24
Google Cloud durum denetimlerinin 80 numaralı TCP bağlantı noktasındaki üretici hizmetine (arka uç hizmeti) ulaşmasına izin vermek için Cloud Shell'de fw-allow-health-check güvenlik duvarı kuralını oluşturun.
gcloud compute firewall-rules create fw-allow-health-check \
--network=producer-vpc \
--action=allow \
--direction=ingress \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--rules=tcp:80
Yük dengeleyicinin TCP bağlantı noktası 80'deki arka uç örnekleriyle iletişim kurmasına izin vermek için yalnızca proxy kullanılan alt ağ için girişe izin veren bir güvenlik duvarı kuralı oluşturun.
gcloud compute firewall-rules create fw-allow-proxy-only-subnet \
--network=producer-vpc \
--action=allow \
--direction=ingress \
--source-ranges=172.16.0.0/23 \
--rules=tcp:80
Cloud Router ve NAT yapılandırması
Sanal makine örneğinin harici IP adresi olmadığından, kod laboratuvarındaki yazılım paketi yükleme işlemi için Cloud NAT kullanılır.
Cloud Shell'de bulut yönlendiriciyi oluşturun.
gcloud compute routers create cloud-router-for-nat --network producer-vpc --region us-central1
Cloud Shell'de NAT ağ geçidini oluşturun.
gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-for-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
Örnek grubu yapılandırması
Aşağıdaki bölümde Compute Engine örneğini ve yönetilmeyen örnek grubunu oluşturacaksınız. Örnek grubu, sonraki adımlarda yük dengeleyici arka uç hizmeti olarak kullanılır.
Cloud Shell'de, üretici hizmetine iletilen bölgesel durum denetimini oluşturun.
gcloud compute instances create app-server-1 \
--project=$projectname \
--machine-type=e2-micro \
--image-family debian-10 \
--no-address \
--image-project debian-cloud \
--zone us-central1-a \
--subnet=gce-subnet \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 restart
echo 'Welcome to App-Server-1 !!' | tee /var/www/html/index.html
EOF"
Cloud Shell'de yönetilmeyen örnek grubunu oluşturun.
gcloud compute instance-groups unmanaged create psc-instance-group --zone=us-central1-a
gcloud compute instance-groups unmanaged set-named-ports psc-instance-group --project=$projectname --zone=us-central1-a --named-ports=http:80
gcloud compute instance-groups unmanaged add-instances psc-instance-group --zone=us-central1-a --instances=app-server-1
Yük dengeleyiciyi yapılandırma
Aşağıdaki adımlarda, daha sonraki bir adımda hizmet eki olarak yayınlanacak olan dahili HTTP yük dengeleyiciyi yapılandıracaksınız.
Cloud Shell'de bölgesel durum denetimini oluşturun.
gcloud compute health-checks create http http-health-check \
--region=us-central1 \
--use-serving-port
Cloud Shell'de arka uç hizmetini oluşturun.
gcloud compute backend-services create l7-ilb-backend-service \
--load-balancing-scheme=INTERNAL_MANAGED \
--protocol=HTTP \
--health-checks=http-health-check \
--health-checks-region=us-central1 \
--region=us-central1
Cloud Shell'de arka uç hizmetine arka uç ekleyin.
gcloud compute backend-services add-backend l7-ilb-backend-service \
--balancing-mode=UTILIZATION \
--instance-group=psc-instance-group \
--instance-group-zone=us-central1-a \
--region=us-central1
Cloud Shell'de, gelen istekleri arka uç hizmetine yönlendirmek için URL eşlemesini oluşturun.
gcloud compute url-maps create l7-ilb-map \
--default-service l7-ilb-backend-service \
--region=us-central1
HTTP hedef proxy'sini oluşturun.
gcloud compute target-http-proxies create l7-ilb-proxy\
--url-map=l7-ilb-map \
--url-map-region=us-central1 \
--region=us-central1
Gelen istekleri proxy'ye yönlendirmek için bir iletim kuralı oluşturun. İletim kuralını oluşturmak için yalnızca proxy alt ağını kullanmayın.
gcloud compute forwarding-rules create l7-ilb-forwarding-rule \
--load-balancing-scheme=INTERNAL_MANAGED \
--network=producer-vpc \
--subnet=load-balancer-subnet \
--address=lb-ip \
--ports=80 \
--region=us-central1 \
--target-http-proxy=l7-ilb-proxy \
--target-http-proxy-region=us-central1
4. Yük dengeleyiciyi doğrulama
Cloud Console'da Ağ Hizmetleri → Yük Dengeleme → Yük Dengeleyiciler'e gidin. Arka uç hizmetine başarılı durum denetimini not edin
"l7-ilb-map" seçeneğini belirlediğinizde ön uç IP adresi gösterilir. Bu adres, önceki bir adımda grep'lediğiniz IP adresiyle eşleşmelidir ve arka uç hizmetini tanımlar.
5. Private Service Connect hizmet ekini oluşturma
Hizmet ekini oluşturma
Cloud Shell'de hizmet ekini oluşturun. Alan adının sonuna "." eklediğinizden emin olun.
gcloud compute service-attachments create published-service --region=us-central1 --producer-forwarding-rule=l7-ilb-forwarding-rule --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=psc-nat-subnet --domain-names=cosmopup.net.
İsteğe bağlı: Paylaşılan VPC kullanıyorsanız hizmet projesinde hizmet ekini oluşturun.
gcloud compute service-attachments create published-service --region=us-central1 --producer-forwarding-rule=l7-ilb-forwarding-rule --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=projects/<hostproject>/regions/us-central1/subnetworks/psc-nat-subnet --domain-names=cosmopup.net.
Yeni oluşturulan hizmet eki için Ağ Hizmetleri → Private Service Connect'e gidin.
published-service seçeneğini belirlediğinizde, tüketicinin Private Service Connect bağlantısı oluşturmak için kullandığı hizmet eki URI'si ve alan adı da dahil olmak üzere daha fazla ayrıntı gösterilir.
Hizmet eki ayrıntıları:
projects/<project name>/regions/us-central1/serviceAttachments/published-service
6. Tüketici Kurulumu
Tüketici API'lerini etkinleştirme
Cloud Shell'de aşağıdakileri yapın:
gcloud services enable dns.googleapis.com
gcloud services enable servicedirectory.googleapis.com
Tüketici VPC ağını oluşturma
Cloud Shell'de aşağıdakileri yapın:
gcloud compute networks create consumer-vpc --project=$projectname --subnet-mode=custom
Tüketici alt ağlarını oluşturma
Cloud Shell'de test örneği için alt ağı oluşturun.
gcloud compute networks subnets create db1-subnet --project=$projectname --range=10.20.0.0/28 --network=consumer-vpc --region=us-central1
Cloud Shell'de, tüketici uç noktası için bir alt ağ oluşturun.
gcloud compute networks subnets create consumer-ep-subnet --project=$projectname --range=10.10.0.0/28 --network=consumer-vpc --region=us-central1
Tüketici uç noktasını (iletme kuralı) oluşturma
Cloud Shell'de, tüketici uç noktası için kullanılacak statik IP adresini oluşturun.
gcloud compute addresses create psc-consumer-ip-1 --region=us-central1 --subnet=consumer-ep-subnet --addresses 10.10.0.10
Tüketici uç noktasını oluşturmak için daha önce oluşturulan hizmet eki URI'sini kullanırız.
Cloud Shell'de tüketici uç noktasını oluşturun.
gcloud compute forwarding-rules create stargazer --region=us-central1 --network=consumer-vpc --address=psc-consumer-ip-1 --target-service-attachment=projects/$projectname/regions/us-central1/serviceAttachments/published-service
7. Tüketicinin VPC ağındaki bağlantıyı doğrulama
Tüketici VPC ağında Ağ Hizmetleri → Private Service Connect → Bağlı Uç Noktaları'na giderek başarılı bir Özel Hizmet Bağlantısı'nı doğrulayın. Oluşturulan Stargazer bağlantısını ve daha önce oluşturduğumuz ilgili IP adresini not edin.
psc-consumer-1 seçildiğinde hizmet eki URI'si de dahil olmak üzere ayrıntılar sağlanır
8. Üretici VPC ağındaki bağlantıyı doğrulama
Üreticinin VPC ağında Ağ Hizmetleri → Private Service Connect → Yayınlanan Hizmet'e giderek başarılı bir özel hizmet bağlantısı olup olmadığını doğrulayın. Yayınlanan hizmet bağlantısında artık 1 yönlendirme kuralı (bağlantı uç noktası) olduğunu unutmayın.
9. Otomatik DNS yapılandırmasını doğrulama
DNS ve Hizmet Dizini yapılandırmasını değerlendirelim.
Cloud DNS yapılandırması
Ağ Hizmetleri → Cloud DNS → Bölgeler'e gidin. goog-psc-default-us-central bölgesi ve cosmopup.net DNS adı otomatik olarak oluşturulur.
DNS ve Hizmet Dizini yapılandırmasını görüntüleme
Alt bölge adını seçmek, Hizmet Dizini'nin Cloud DNS ile nasıl entegre edildiğini görmemizi sağlar.
Hizmet Dizini yapılandırması
Ağ Hizmetleri → Hizmet Dizini'ne gidin.
"stargazer" tüketici uç noktası adını hatırlıyor musunuz? Hizmet dizininde otomatik olarak programlanır. Bu sayede, stargazer.goog-psc-default–us-central1 tam alan adını kullanarak tüketici uç noktasına ulaşabiliriz.
10. Tüketicinin üretici hizmetine erişimini doğrulama
Tüketicinin VPC ağında, stargazer.cosmopup.net tüketici uç noktasına erişerek yayınlanan hizmetin bağlantısını test etmek için bir sanal makine oluşturacağız.
Cloud Shell'de, tüketici VPC'sinde test örneğini oluşturun.
gcloud compute instances create db1 \
--zone=us-central1-a \
--image-family=debian-10 \
--image-project=debian-cloud \
--subnet=db1-subnet \
--no-address
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'de IAP güvenlik duvarı kuralını oluşturun.
gcloud compute firewall-rules create ssh-iap-consumer \
--network consumer-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
Bir curl gerçekleştirerek üretici hizmetine bağlantıyı doğrulamak için Cloud Shell'de IAP'yi kullanarak consumer-vm'ye giriş yapın. Zaman aşımı varsa tekrar deneyin.
gcloud compute ssh db1 --project=$projectname --zone=us-central1-a --tunnel-through-iap
Üretici hizmetine bağlantıyı doğrulayan bir curl çalıştırın. Doğrulandıktan sonra Cloud Shell istemine dönmek için sanal makineden çıkın
Cloud Shell'de özel alanınızla (ör. stargazer.[custom-domain.com]) ilgili bir curl çalıştırın. Aşağıdaki çıkışta, stargazer.cosmopup.net adresine karşı bir curl işlemi gerçekleştirilmektedir.
user@db1:~$ curl -v stargazer.cosmopup.net
* Trying 10.10.0.10...
* TCP_NODELAY set
* Expire in 200 ms for 4 (transfer 0x55d3aa8190f0)
* Connected to stargazer.cosmopup.net (10.10.0.10) port 80 (#0)
> GET / HTTP/1.1
> Host: stargazer.cosmopup.net
> User-Agent: curl/7.64.0
> Accept: */*
>
< HTTP/1.1 200 OK
< date: Thu, 22 Dec 2022 00:16:25 GMT
< server: Apache/2.4.38 (Debian)
< last-modified: Wed, 21 Dec 2022 20:26:32 GMT
< etag: "1b-5f05c5e43a083"
< accept-ranges: bytes
< content-length: 27
< content-type: text/html
< via: 1.1 google
<
Welcome to App-Server-1 !!
Temizleme görevlerini başlatmak için Cloud Shell istemine dönerek sanal makineden çıkın.
11. Temizleme
Cloud Shell'den codelab bileşenlerini silin.
gcloud compute forwarding-rules delete stargazer --region=us-central1 --quiet
gcloud compute instances delete db1 --zone=us-central1-a --quiet
gcloud compute addresses delete psc-consumer-ip-1 --region=us-central1 --quiet
gcloud compute networks subnets delete consumer-ep-subnet db1-subnet --region=us-central1 --quiet
gcloud compute firewall-rules delete ssh-iap-consumer --quiet
gcloud compute networks delete consumer-vpc --quiet
gcloud compute service-attachments delete published-service --region=us-central1 --quiet
gcloud compute forwarding-rules delete l7-ilb-forwarding-rule --region=us-central1 --quiet
gcloud compute target-http-proxies delete l7-ilb-proxy --region=us-central1 --quiet
gcloud compute url-maps delete l7-ilb-map --region=us-central1 --quiet
gcloud compute backend-services delete l7-ilb-backend-service --region=us-central1 --quiet
gcloud compute instance-groups unmanaged delete psc-instance-group --zone=us-central1-a --quiet
gcloud compute instances delete app-server-1 --zone=us-central1-a --quiet
gcloud compute firewall-rules delete allow-to-ingress-nat-subnet fw-allow-health-check fw-allow-proxy-only-subnet --quiet
gcloud compute addresses delete lb-ip --region=us-central1 --quiet
gcloud compute networks subnets delete gce-subnet load-balancer-subnet psc-nat-subnet proxy-subnet-us-central --region=us-central1 --quiet
gcloud compute routers delete cloud-router-for-nat --region=us-central1 --quiet
gcloud compute networks delete producer-vpc --quiet
12. Tebrikler
Tebrikler, otomatik DNS yapılandırması ile bir Private Service Connect uç noktasını başarıyla yapılandırıp doğruladınız.
Üretici altyapısını oluşturdunuz ve herkese açık alan kaydı içeren bir hizmet eki eklediniz. Tüketici VPC ağında, otomatik olarak oluşturulan DNS'yi kullanarak şirket içi hizmete bağlantı sağlayan bir tüketici uç noktası oluşturmayı öğrendiniz.
Cosmopup, codelab'lerin harika olduğunu düşünüyor.
Sırada ne var?
Bu codelab'lerden bazılarına göz atın...
- GKE ile hizmet yayınlamak ve kullanmak için Private Service Connect'i kullanma
- Hizmetleri yayınlamak ve kullanmak için Private Service Connect'i kullanma
- Private Service Connect ve dahili TCP Proxy yük dengeleyici kullanarak karma ağ üzerinden şirket içi hizmetlere bağlanma
Daha fazla bilgi ve videolar
- Private Service Connect'e genel bakış
- Private Service Connect nedir?
- Desteklenen Yük Dengeleyici Türleri