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:
- Lampiran layanan produsen berasal dari DNS otomatis dengan menyediakan domain Publik yang dimiliki dengan ‘– nama-domain' saat membuat lampiran layanan Private Service Connect.
- Konsumen menentukan nama endpoint.
- 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
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.
- Klien membuat koneksi ke alamat IP dan port dari aturan penerusan load balancer.
- 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.
- 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
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.
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
Memilih published-service akan memberikan detail yang lebih lengkap, termasuk URI lampiran layanan yang digunakan oleh konsumen untuk membuat Koneksi Layanan Pribadi & nama domain.
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. Catat koneksi stargazer yang sudah dibuat dan Alamat IP yang sesuai yang telah kita buat sebelumnya.
Saat memilih psc-consumer-1, detail akan disediakan, termasuk URI lampiran layanan
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).
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.
Melihat konfigurasi Direktori Layanan dan DNS
Dengan memilih nama zona, kita dapat melihat integrasi Direktori Layanan dengan Cloud DNS.
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
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!!
Apa selanjutnya?
Lihat beberapa codelab ini...
- Menggunakan Private Service Connect untuk memublikasikan dan menggunakan layanan dengan GKE
- Menggunakan Private Service Connect untuk memublikasikan dan menggunakan layanan
- Menghubungkan ke layanan lokal melalui Jaringan Hybrid menggunakan Private Service Connect dan load balancer Proxy TCP internal
Bacaan lebih lanjut & Video
- Ringkasan Private Service Connect
- Apa itu Private Service Connect?
- Jenis Load Balancer yang Didukung