Otomatik DNS yapılandırması ile Private Service Connect

1. Giriş

Otomatik DNS yapılandırmalı Private Service Connect, tüketici Private Service Connect uç nokta IP adresleriyle programlanmış DNS kayıtlarını otomatik olarak oluşturmak için Hizmet Dizini ve Cloud DNS'yi kullanır.

Oluşturacaklarınız

Bu codelab'de, Şekil 1'de gösterildiği gibi otomatik DNS kullanımını gösteren kapsamlı bir Private Service Connect mimarisi oluşturacaksınız.

Otomatik DNS aşağıdaki yöntemlerle etkinleştirilir:

  1. Producer hizmet eki, sahip olunan bir Kamu alanına "– alan adları" sağlanarak otomatik DNS oluşturur işaretini kullanın.
  2. Tüketici bir uç nokta adı tanımlar.
  3. Otomatik DNS, tüketici uç nokta adından oluşan bir Hizmet Dizini girişine ek olarak, hem bir DNS Alt Bölgesi (goog-psc-default-us-central1 hem de DNS adı cosmopup.net) oluşturur.

Otomatik DNS'nin avantajı, (4) numaralı bölümde son kullanıcının DNS, FQDN stargazer.cosmopup.net üzerinden tüketici uç noktasıyla iletişim kurabileceği şekilde gösterilmektedir.

1. Şekil

5e26a358454d1336.png

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 kullanarak tüketici uç noktasına erişme

Gerekenler

  • Google Cloud Projesi
  • Sahibi olduğunuz, herkese açık bir alan

2. Başlamadan önce

Codelab'i desteklemek için projeyi güncelleme

Bu Codelab, Cloud Shell'de gcloud yapılandırması uygulamasına yardımcı olmak için $variables kullanır.

Cloud Shell'in içinde aşağıdaki işlemleri gerçekleştirin:

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'in içinde aşağıdaki işlemleri gerçekleştirin:

gcloud compute networks create producer-vpc --project=$projectname --subnet-mode=custom

Üretici alt ağlarını oluşturma

Cloud Shell'in içinde aşağıdaki işlemleri gerçekleştirin:

gcloud compute networks subnets create gce-subnet --project=$projectname --range=172.16.20.0/28 --network=producer-vpc --region=us-central1

Cloud Shell'in içinde aşağıdaki işlemleri gerçekleştirin:

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'in içinde aşağıdaki işlemleri gerçekleştirin:

gcloud compute addresses create lb-ip \
    --region=us-central1 \
    --subnet=load-balancer-subnet \
    --purpose=GCE_ENDPOINT

Ayrılan IP adresini görüntüleme

Tahsis edilen 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ı oluşturma

Proxy tahsisi, yük dengeleyici düzeyinde değil, VPC ağı düzeyinde yapılır. Envoy tabanlı yük dengeleyicileri 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 bunlar, yük dengeleme için aynı yalnızca proxy alt ağını paylaşır.

  1. Bir istemci, yük dengeleyicinin iletim kuralının IP adresine ve bağlantı noktasına bağlantı kurar.
  2. 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.
  3. Proxy; yük dengeleyicinin URL eşlemesi ve arka uç hizmetleri tarafından belirlenen uygun arka uç sanal makinesiyle bir bağlantı oluşturur.

VPC ağınızın otomatik veya özel mod olmasından bağımsız olarak yalnızca proxy alt ağları oluşturmanız gerekir. Yalnızca proxy alt ağı, 64 veya daha fazla IP adresi sağlamalıdır. Bu, /26 veya daha kısa bir önek uzunluğuna karşılık gelir. Önerilen alt ağ boyutu /23'tür (512 yalnızca proxy adresi).

Cloud Shell'in içinde aşağıdaki işlemleri gerçekleştirin:

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 kullanılacak bir veya daha fazla özel alt ağ oluşturun. Bir hizmet yayınlamak için Google Cloud konsolunu kullanıyorsanız bu prosedür sırasında alt ağları 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'in içinde aşağıdaki işlemleri gerçekleştirin:

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'si alt ağı arasındaki trafiğe izin vermek için güvenlik duvarı kurallarını yapılandırın.

Cloud Shell'in içinde aşağıdaki işlemleri gerçekleştirin:

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 TCP bağlantı noktası 80 üzerindeki ü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'de arka uç örnekleriyle iletişim kurmasını sağlamak amacıyla, yalnızca proxy alt ağı için bir girişe izin verme 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 bir IP adresi olmadığından, codelab'de yazılım paketi kurulumu için Cloud NAT kullanılır.

Cloud Shell'in içinde bulut yönlendiricisini oluşturun.

gcloud compute routers create cloud-router-for-nat --network producer-vpc --region us-central1

Cloud Shell'in içinde 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 oluşturup yönetilmeyen örnek grubudur. Sonraki adımlarda örnek grubu yük dengeleyici arka uç hizmeti olarak kullanılacaktı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'in içinde 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, sonraki bir adımda hizmet eki olarak yayınlanacak dahili HTTP yük dengeleyiciyi yapılandıracaksınız.

Cloud Shell'in içinde bölgesel durum denetimini oluşturun.

gcloud compute health-checks create http http-health-check \
    --region=us-central1 \
    --use-serving-port

Cloud Shell'in içinde 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'in içinde 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'in içinde, gelen istekleri arka uç hizmetine yönlendirmek için URL eşlemesi 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'dan Ağ Hizmetleri → Yük Dengeleme → Yük Dengeleyiciler'e gidin. Arka uç hizmetinin başarılı durum denetimini not edin

881567cc11627009.png

"l7-ilb-map" seçildiğinde ön uç IP adresi elde edilir. Bu adres, önceki adımda belirlediğiniz IP adresiyle eşleşmelidir ve arka uç Hizmeti'ni tanımlar.

bab89b0a7b4f95e9.png

5. Private Service Connect hizmet eki oluşturma

Hizmet eki oluşturma

Cloud Shell'in içinde hizmet eki oluşturun. Etikete "." yer alır.

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 bir VPC kullanıyorsanız hizmet ekini hizmet projesinde 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 ekini görüntülemek için Ağ Hizmetleri → Private Service Connect sayfasına gidin

d27fee9073dbbe2.png

published-service'i seçmek, tüketicinin Özel Hizmet Bağlantısı oluşturmak için kullandığı hizmet eki URI'si de dahil olmak üzere daha fazla ayrıntı sağlar. alan adı.

503df63730c62df2.png

Hizmet eki ayrıntıları:

projeler/<proje adı>/bölgeler/us-central1/serviceAttachs/publish-service

6. Tüketici Kurulumu

Tüketici API'lerini etkinleştirme

Shell, Cloud'un içinde şu işlemleri gerçekleştirir:

gcloud services enable dns.googleapis.com
gcloud services enable servicedirectory.googleapis.com

Tüketici VPC ağı oluşturma

Cloud Shell'in içinde aşağıdaki işlemleri gerçekleştirin:

gcloud compute networks create consumer-vpc --project=$projectname --subnet-mode=custom

Tüketici alt ağlarını oluşturma

Cloud Shell'in içinde 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'in içinde 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ı oluşturma (iletim kuralı)

Cloud Shell'de, tüketici uç noktası için kullanılacak statik IP Adresi'ni 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'in içinde tüketici uç noktası 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ğından Network Services → Private Service Connect→ Connected Endpoints (Ağ Hizmetleri → Private Service Connect→ Bağlı Uç Noktalar) bölümüne giderek başarılı bir Özel Hizmet Bağlantısı bulunduğunu doğrulayın. Oluşturulan yıldız izleme bağlantısını ve daha önce oluşturduğumuz ilgili IP adresini not edin.

c60812433c3e1676.png

psc-consumer-1 seçildiğinde hizmet eki URI'si de dahil olmak üzere ayrıntılar sağlanır

14d3e3b1e0aee3c2.png

8. Üreticinin VPC ağındaki bağlantıyı doğrulama

Üreticinin VPC ağından Ağ Hizmetleri → Private Service Connect→Yayınlanan Hizmet'e giderek başarılı bir Özel Hizmet Bağlantısı bulunduğunu doğrulayın. Yayınlanan hizmet bağlantısının artık 1 iletim kuralı (bağlantı uç noktası) gösterdiğini unutmayın.

911dbd7421bcfd3a.png

9. Otomatik DNS yapılandırmasını doğrulayın

DNS ve Hizmet Dizini yapılandırmasını değerlendirelim.

Cloud DNS yapılandırması

Ağ Hizmetleri → Cloud DNS → Alt bölgeler'e gidin. goog-psc-default-us-central ve DNS adı cosmopup.net. otomatik olarak oluşturulur.

4395e7b33fc42faa.png

DNS ve Hizmet Dizini yapılandırmasını görüntüleme

Alt bölge adını seçtiğinizde, Hizmet Dizini'nin Cloud DNS ile nasıl entegre edildiğini görebiliriz.

e4fe44d945b20451.png

Hizmet Dizini yapılandırması

Ağ Hizmetleri → Hizmet Dizini'ne gidin

Tüketici uç noktası adını "stargazer" hatırlıyor musunuz? Hizmet Dizini'nde otomatik olarak programlanarak FQDN stargazer.goog-psc-default–us-central1 yöntemini kullanarak tüketici uç noktasına ulaşmamızı sağlar.

602deab65b5ac315.png

10. Üretici hizmetine tüketici erişimini doğrulama

Tüketicinin VPC ağından, 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'in içinde, 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ğıdaki şartları yerine getiren bir güvenlik duvarı kuralı oluşturun:

  • IAP kullanarak erişilmesini istediğiniz tüm sanal makine örnekleri için geçerlidir.
  • 35.235.240.0/20 IP aralığından giriş trafiğine izin verir. Bu aralık, IAP'nin TCP yönlendirme için kullandığı tüm IP adreslerini içerir.

Cloud Shell'in içinde 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

Curl gerçekleştirerek üretici hizmetiyle olan bağlantıyı doğrulamak için Cloud Shell'de IAP kullanarak tüketici sanal makinesinde oturum açın. Zaman aşımı varsa yeniden deneyin.

gcloud compute ssh db1 --project=$projectname --zone=us-central1-a --tunnel-through-iap

Üretici hizmetiyle bağlantıyı doğrulayan bir curl işlemi gerçekleştirin. Cloud Shell istemine geri dönen sanal makineden doğrulandıktan sonra

Cloud Shell'in içinde, özel alanınıza (ör. stargazer.[custom-domain.com]) dayalı bir curl işlemi yapın. Aşağıdaki çıktıda, stargazer.cosmopup.net alanına karşı bir curl işlemi gerçekleştirilir

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 !!

Temizlik görevlerini başlatmak için Cloud Shell istemine geri dönen 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ıyla 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ıya olanak tanıyan bir tüketici uç noktası oluşturmayı öğrendiniz.

Cosmopup, codelab'lerin muhteşem olduğunu düşünüyor!!

8c2a10eb841f7b01.jpeg

Sırada ne var?

Bu codelab'lerden bazılarına göz atın...

Daha fazla bilgi ve Videolar

Referans belgeler