Private Service Connect dengan konfigurasi DNS otomatis

1. Pengantar

Private Service Connect dengan konfigurasi DNS otomatis menggunakan Direktori Layanan dan Cloud DNS untuk otomatis membuat data DNS yang diprogram dengan alamat IP endpoint Private Service Connect konsumen.

Yang akan Anda bangun

Dalam codelab ini, Anda akan membangun arsitektur Private Service Connect komprehensif yang mengilustrasikan penggunaan DNS otomatis seperti yang diilustrasikan pada Gambar 1.

DNS otomatis dimungkinkan oleh hal berikut:

  1. Lampiran layanan produsen berasal dari DNS otomatis dengan menyediakan domain Publik yang dimiliki dengan ‘– nama-domain' saat membuat lampiran layanan Private Service Connect.
  2. Konsumen menentukan nama endpoint.
  3. DNS otomatis membuat cosmopup.net DNS Zone goog-psc-default-us-central1 dan DNS name, selain entri Direktori Layanan yang terdiri dari nama endpoint konsumen.

Manfaat DNS otomatis diilustrasikan pada (4) di mana pengguna akhir dapat berkomunikasi dengan endpoint konsumen melalui DNS, FQDN stargazer.cosmopup.net.

Gambar 1

5e26a358454d1336.pngS

Yang akan Anda pelajari

  • Cara membuat load balancer HTTP(S) internal
  • Cara membuat lampiran layanan dengan DNS otomatis
  • Cara membuat layanan Private Service Connect Producer
  • Cara mengakses endpoint konsumen menggunakan DNS otomatis

Yang Anda butuhkan

  • Project Google Cloud
  • Domain publik yang Anda miliki

2. Sebelum memulai

Mengupdate project agar mendukung codelab

Codelab ini menggunakan $variables untuk membantu implementasi konfigurasi gcloud di Cloud Shell.

Di dalam Cloud Shell, lakukan hal berikut:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

3. Penyiapan Produsen

Membuat VPC produsen

Di dalam Cloud Shell, lakukan hal berikut:

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

Membuat subnet produser

Di dalam Cloud Shell, lakukan hal berikut:

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

Di dalam Cloud Shell, lakukan hal berikut:

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

Mencadangkan alamat IP untuk load balancer internal

Di dalam Cloud Shell, lakukan hal berikut:

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

Melihat alamat IP yang dialokasikan

Gunakan komputasi alamat deskripsi untuk melihat alamat IP yang dialokasikan

gcloud compute addresses describe lb-ip  --region=us-central1 | grep address:

Membuat subnet proxy regional

Alokasi proxy berada di tingkat jaringan VPC, bukan tingkat load balancer. Anda harus membuat satu subnet khusus proxy di setiap region jaringan virtual (VPC) tempat Anda menggunakan load balancer berbasis Envoy. Jika Anda men-deploy beberapa load balancer di region dan jaringan VPC yang sama, load balancer tersebut akan menggunakan subnet khusus proxy yang sama untuk load balancing.

  1. Klien membuat koneksi ke alamat IP dan port dari aturan penerusan load balancer.
  2. Setiap proxy memproses alamat IP dan port yang ditentukan oleh aturan penerusan load balancer yang sesuai. Salah satu {i>proxy<i} menerima dan menghentikan koneksi jaringan klien.
  3. Proxy ini membuat koneksi ke VM backend yang sesuai yang ditentukan oleh peta URL dan layanan backend load balancer.

Anda harus membuat subnet khusus proxy, terlepas dari apakah jaringan VPC Anda adalah mode otomatis atau mode kustom. Subnet khusus proxy harus menyediakan 64 alamat IP atau lebih. Ini sesuai dengan panjang awalan /26 atau lebih pendek. Ukuran subnet yang direkomendasikan adalah /23 (512 alamat khusus proxy).

Di dalam Cloud Shell, lakukan hal berikut:

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

Membuat subnet NAT Private Service Connect

Buat satu atau beberapa subnet khusus untuk digunakan dengan Private Service Connect. Jika menggunakan konsol Google Cloud untuk memublikasikan layanan, Anda dapat membuat subnet selama prosedur tersebut. Buat subnet di region yang sama dengan load balancer layanan. Anda tidak dapat mengonversi subnet reguler menjadi subnet Private Service Connect.

Di dalam Cloud Shell, lakukan hal berikut:

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

Membuat aturan firewall produsen

Konfigurasikan aturan firewall untuk mengizinkan traffic antara subnet NAT Private Service Connect dan subnet khusus proxy ILB.

Di dalam Cloud Shell, lakukan hal berikut:

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

Di dalam Cloud Shell, buat aturan firewall fw-allow-health-check untuk mengizinkan health check Google Cloud menjangkau layanan produser (layanan backend) di port TCP 80.

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

Buat aturan firewall izinkan masuk untuk subnet khusus proxy agar load balancer dapat berkomunikasi dengan instance backend di port TCP 80.

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

Konfigurasi Cloud Router dan NAT

Cloud NAT digunakan di codelab untuk penginstalan paket software karena instance VM tidak memiliki alamat IP eksternal.

Di dalam Cloud Shell, buat router cloud.

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

Di dalam Cloud Shell, buat gateway NAT.

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

Konfigurasi grup instance

Di bagian berikut, Anda akan membuat instance Compute Engine & grup instance yang tidak dikelola. Pada langkah-langkah berikutnya, grup instance akan digunakan sebagai layanan backend load balancer.

Di dalam Cloud Shell, buat health check regional yang diteruskan ke layanan produsen.

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"

Di dalam Cloud Shell, buat grup instance yang tidak dikelola.

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

Mengonfigurasi load balancer

Pada langkah berikut, Anda akan mengonfigurasi load balancer HTTP internal yang akan dipublikasikan sebagai lampiran layanan pada langkah berikutnya

Di dalam Cloud Shell, buat health check regional.

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

Di dalam Cloud Shell, buat layanan backend.

 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

Di dalam Cloud Shell, tambahkan backend ke layanan backend.

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

Di dalam Cloud Shell, buat peta URL untuk mengarahkan permintaan masuk ke layanan backend.

gcloud compute url-maps create l7-ilb-map \
    --default-service l7-ilb-backend-service \
    --region=us-central1

Membuat proxy target HTTP.

gcloud compute target-http-proxies create l7-ilb-proxy\
    --url-map=l7-ilb-map \
    --url-map-region=us-central1 \
    --region=us-central1

Buat aturan penerusan untuk mengarahkan permintaan yang masuk ke proxy. Jangan gunakan subnet khusus proxy untuk membuat aturan penerusan.

 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. Memvalidasi load balancer

Dari Cloud Console, buka Network Services → Load Balancing → Load Balancer. Mencatat health check yang berhasil ke layanan backend

881567cc11627009.png

Memilih 'l7-ilb-map' akan menghasilkan alamat IP frontend, yang akan cocok dengan alamat IP yang Anda pelajari di langkah sebelumnya, dan mengidentifikasi Layanan backend.

bab89b0a7b4f95e9.png

5. Membuat lampiran layanan Private Service Connect

Membuat lampiran layanan

Di dalam Cloud Shell, buat lampiran layanan. Pastikan untuk menambahkan ‘.' di akhir nama domain.

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.

Opsional: Jika menggunakan VPC bersama, buat lampiran layanan di project layanan.

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.

Buka Network Services → Private Service Connect untuk melihat lampiran layanan yang baru dibuat

d27fee9073dbbe2.png

Memilih published-service akan memberikan detail yang lebih lengkap, termasuk URI lampiran layanan yang digunakan oleh konsumen untuk membuat Koneksi Layanan Pribadi & nama domain.

503df63730c62df2.pngS

Detail lampiran layanan:

projects/<project name>/region/us-central1/serviceLampirans/publication-service

6. Penyiapan Konsumen

Mengaktifkan API konsumen

Di dalam Cloud, Shell melakukan hal berikut:

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

Membuat jaringan VPC konsumen

Di dalam Cloud Shell, lakukan hal berikut:

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

Membuat subnet konsumen

Di dalam Cloud Shell, buat subnet untuk instance pengujian.

gcloud compute networks subnets create db1-subnet --project=$projectname --range=10.20.0.0/28 --network=consumer-vpc --region=us-central1

Di dalam Cloud Shell, buat subnet untuk endpoint konsumen.

gcloud compute networks subnets create consumer-ep-subnet --project=$projectname --range=10.10.0.0/28 --network=consumer-vpc --region=us-central1

Membuat endpoint konsumen (aturan penerusan)

Di dalam Cloud Shell, buat Alamat IP statis yang akan digunakan untuk endpoint konsumen.

gcloud compute addresses create psc-consumer-ip-1 --region=us-central1 --subnet=consumer-ep-subnet --addresses 10.10.0.10

Kita menggunakan URI lampiran layanan yang dibuat sebelumnya untuk membuat endpoint konsumen.

Di dalam Cloud Shell, buat endpoint konsumen.

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. Memvalidasi koneksi di jaringan VPC konsumen

Dari jaringan VPC konsumen, pastikan Koneksi Layanan Pribadi berhasil dengan membuka Layanan Jaringan → Private Service Connect → Endpoint Terhubung. Perhatikan koneksi stargazer yang sudah dibuat dan Alamat IP terkait yang telah kita buat sebelumnya.

c60812433c3e1676.png

Saat memilih psc-consumer-1, detail akan disediakan, termasuk URI lampiran layanan

14d3e3b1e0aee3c2.pngS

8. Memvalidasi koneksi di jaringan VPC produsen

Dari jaringan VPC produsen, verifikasi Koneksi Layanan Pribadi yang berhasil dengan membuka Layanan Jaringan → Private Service Connect → Layanan yang Dipublikasikan. Perhatikan bahwa koneksi layanan yang dipublikasikan kini menunjukkan 1 aturan penerusan (endpoint koneksi).

911dbd7421bcfd3a.pngS

9. Memvalidasi konfigurasi DNS otomatis

Mari kita evaluasi konfigurasi DNS dan Direktori Layanan.

Konfigurasi Cloud DNS

Buka Network Services → Cloud DNS → Zones. Zona goog-psc-default-us-central & nama DNS cosmopup.net. dibuat secara otomatis.

4395e7b33fc42faa.pngS

Melihat konfigurasi Direktori Layanan dan DNS

Dengan memilih nama zona, kita dapat melihat integrasi Direktori Layanan dengan Cloud DNS.

e4fe44d945b20451.png

Konfigurasi Direktori Layanan

Buka Layanan Jaringan → Direktori Layanan

Ingat kembali nama endpoint konsumen ‘stargazer'? Alat ini diprogram secara otomatis di Direktori Layanan sehingga memungkinkan kami mencapai endpoint konsumen dengan menggunakan FQDN stargazer.goog-psc-default–us-central1

602deab65b5ac315.pngS

10. Memvalidasi akses konsumen ke layanan produsen

Dari jaringan VPC konsumen, kita akan membuat VM untuk menguji konektivitas layanan yang dipublikasikan dengan mengakses endpoint konsumen stargazer.cosmopup.net

Di dalam Cloud Shell, buat instance pengujian di vpc konsumen.

gcloud compute instances create db1 \
    --zone=us-central1-a \
    --image-family=debian-10 \
    --image-project=debian-cloud \
    --subnet=db1-subnet \
    --no-address

Agar IAP dapat terhubung ke instance VM Anda, buat aturan firewall yang:

  • Berlaku untuk semua instance VM yang Anda inginkan agar dapat diakses dengan menggunakan IAP.
  • Mengizinkan traffic masuk dari rentang IP 35.235.240.0/20. Rentang ini berisi semua alamat IP yang digunakan IAP untuk penerusan TCP.

Di dalam Cloud Shell, buat aturan firewall IAP.

gcloud compute firewall-rules create ssh-iap-consumer \
    --network consumer-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

Login ke vm konsumen menggunakan IAP di Cloud Shell untuk memvalidasi konektivitas ke layanan produsen dengan melakukan curl. Coba lagi jika waktu tunggu habis.

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

Lakukan curl yang memvalidasi konektivitas ke layanan produsen. Setelah divalidasi, keluar dari VM, kembali ke perintah Cloud Shell

Di dalam Cloud Shell, lakukan curl terhadap domain kustom Anda, misalnya stargazer.[custom-domain.com]. Pada output di bawah ini, curl dilakukan pada stargazer.cosmopup.net

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

Keluar dari perintah VM yang kembali ke Cloud Shell untuk memulai tugas pembersihan

11. Pembersihan

Hapus komponen codelab dari Cloud Shell.

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

Selamat, Anda telah berhasil mengonfigurasi dan memvalidasi endpoint Private Service Connect dengan konfigurasi DNS otomatis.

Anda membuat infrastruktur produsen, dan menambahkan lampiran layanan dengan pendaftaran domain publik. Anda telah mempelajari cara membuat endpoint konsumen di jaringan VPC konsumen yang memungkinkan konektivitas ke layanan lokal menggunakan DNS yang dibuat otomatis.

Cosmopup menganggap codelab tersebut luar biasa!!

8c2a10eb841f7b01.jpeg

Apa selanjutnya?

Lihat beberapa codelab ini...

Bacaan lebih lanjut & Video

Dokumen referensi