1. Pengantar
Dengan Private Service Connect, produsen layanan dapat mengekspos layanan di lingkungan VPC melalui Lampiran Layanan dan mengizinkan konsumen di lingkungan VPC lain untuk mengakses layanan tersebut melalui endpoint Private Service Connect. Terkadang, layanan produsen ini dirancang sebagai cluster VM, dengan setiap VM mengekspos layanan yang sama pada nomor port yang sama. Sebelumnya, desain layanan ini memerlukan beberapa endpoint Private Service Connect untuk di-deploy di sisi konsumen, atau penggunaan penerusan IP di sisi produsen untuk memastikan VM produsen yang benar ditargetkan.
Private Service Connect kini dapat secara native menargetkan tujuan yang benar menggunakan Pemetaan Port. Dalam lab ini, Anda akan mempelajari kasus penggunaan yang memerlukan fitur ini dan cara men-deploy NEG Pemetaan Port ke beban kerja Private Service Connect.
Yang akan Anda pelajari
- Kasus penggunaan Pemetaan Port Private Service Connect
- Manfaat Utama Pemetaan Port PSC
- Persyaratan jaringan
- Buat layanan produsen Private Service Connect menggunakan pemetaan port.
- Membuat endpoint Private Service Connect
- Melakukan panggilan melalui endpoint Private Service Connect ke layanan produsen
Yang Anda butuhkan
- Project Google Cloud dengan izin Pemilik
2. Kasus penggunaan Pemetaan Port Private Service Connect
Fitur Pemetaan Port menggunakan NEG Pemetaan Port (Grup Endpoint Jaringan) yang khusus untuk kasus penggunaan PSC.
Jenis produsen yang paling umum dan dapat memanfaatkan Port Mapping adalah produsen database NoSQL dan produsen Kafka. Namun, setiap produsen yang memerlukan cluster VM yang mengekspos layanan yang sama di port yang sama dengan persyaratan pemetaan VM tertentu dapat menggunakan fitur ini.
Produsen menentukan pemetaan antara port klien dan VM produsen + port tujuan. Kemudian, produsen perlu membagikan informasi ini kepada konsumen. Konsumen menggunakan port yang telah ditentukan sebelumnya untuk mengidentifikasi secara unik VM produsen + port tujuan yang perlu dijangkau. Port yang digunakan oleh konsumen adalah port yang berbeda dengan yang digunakan oleh produsen.
Manfaat utama Pemetaan Port PSC
- Sederhana: Produsen men-deploy komponen PSC dengan pemetaan port, dan konsumen men-deploy endpoint PSC. PSC menangani penafsiran alamat jaringan secara otomatis.
- Hemat biaya: Tidak memerlukan resource PSC tambahan atau siklus CPU VM produsen. Harganya sama dengan jenis deployment PSC lainnya
- Performa tinggi: Pemetaan port menawarkan throughput kecepatan saluran dan latensi rendah yang sama dengan mode PSC lainnya
- Skalabel dan efisien IP: Satu alamat IP dari VPC konsumen dapat mengakses hingga 1.000 VM produsen dan 1.000 pemetaan port
3. Persyaratan jaringan
- Pemetaan Port memerlukan penggunaan Load Balancer Jaringan Passthrough Internal sebagai load balancer produsen.
- Hanya endpoint PSC yang dapat digunakan dengan Pemetaan Port (bukan Backend PSC atau Antarmuka PSC).
- NEG pemetaan port adalah konstruksi regional.
- NEG pemetaan port hanya dapat digunakan di seluruh koneksi PSC. Aturan tersebut tidak akan berfungsi jika VM klien memanggil aturan penerusan load balancer produsen secara langsung. Hal ini tercermin dalam cara layanan produsen diuji dalam codelab ini.
- Endpoint PSC dan stack layanan produsen harus berada di VPC yang berbeda.
4. Topologi codelab
Di VPC produsen, dua VM akan dibuat yang masing-masing akan menjalankan dua server web, satu berjalan di port 1000, dan satu berjalan di port 2000. Kita akan menguji setiap layanan sebelum menyiapkan NEG Portmap, Load Balancer Jaringan Passthrough Internal, dan Lampiran Layanan.
Di VPC konsumen, kita akan menyiapkan endpoint PSC dan menguji konektivitas ke layanan produsen dari VM klien.
5. Penyiapan dan Persyaratan
Penyiapan lingkungan mandiri
- Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.
- Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
- Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (umumnya diidentifikasi sebagai
PROJECT_ID
). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri, dan lihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan tersedia selama durasi project. - Sebagai informasi, ada nilai ketiga, Project Number, yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
- Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini tidak akan memakan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus project-nya. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.
Mulai Cloud Shell
Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.
Dari Google Cloud Console, klik ikon Cloud Shell di toolbar kanan atas:
Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:
Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Semua pekerjaan Anda dalam codelab ini dapat dilakukan di browser. Anda tidak perlu menginstal apa pun.
6. Sebelum memulai
Mengaktifkan API
Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan
gcloud config list project gcloud config set project [YOUR-PROJECT-ID] project=[YOUR-PROJECT-ID] region=us-central1 zone=us-central1-a echo $project echo $region echo $zone
Mengaktifkan semua layanan yang diperlukan
gcloud services enable compute.googleapis.com
7. Membuat Jaringan VPC Produsen
Jaringan VPC
Dari Cloud Shell
gcloud compute networks create producer-vpc --subnet-mode custom
Membuat Subnet
Dari Cloud Shell
gcloud compute networks subnets create producer-service-subnet --network producer-vpc --range 10.0.0.0/24 --region $region --enable-private-ip-google-access gcloud compute networks subnets create psc-nat-subnet --network producer-vpc --range 10.100.100.0/24 --region $region --purpose=PRIVATE_SERVICE_CONNECT
Subnet PSC akan dikaitkan dengan Lampiran Layanan PSC untuk tujuan Penafsiran Alamat Jaringan. Untuk kasus penggunaan produksi, subnet ini harus berukuran sesuai untuk mendukung jumlah traffic masuk dari semua endpoint PSC yang terpasang. Lihat dokumentasi ukuran subnet PSC NAT untuk mengetahui informasi selengkapnya.
Membuat Kebijakan Firewall Jaringan dan Aturan Firewall
Dari Cloud Shell
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
Untuk mengizinkan IAP terhubung ke instance VM Anda, buat aturan firewall yang:
- Berlaku untuk semua instance VM yang ingin Anda akses 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.
Dari Cloud Shell
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
Aturan firewall berikut mengizinkan traffic di port TCP 1000-2000 dari subnet PSC ke semua instance di jaringan. Dalam lingkungan produksi, aturan firewall ini harus dibatasi hanya untuk instance yang terkait dengan layanan produsen tertentu.
Dari Cloud Shell
gcloud compute network-firewall-policies rules create 2000 --action ALLOW --firewall-policy producer-vpc-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 10.100.100.0/24 --layer4-configs tcp:1000-2000 --global-firewall-policy
Aturan firewall berikut mengizinkan semua traffic dalam subnet layanan di port TCP 1000-2000. Aturan ini akan digunakan untuk menguji apakah layanan produsen kami berfungsi dengan semestinya.
Dari Cloud Shell
gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy producer-vpc-policy --description "allow traffic within the service subnet" --direction INGRESS --src-ip-ranges 10.0.0.0/24 --layer4-configs tcp:1000-2000 --global-firewall-policy
Membuat dan Mengonfigurasi VM Produsen
Membuat VM
Dari Cloud Shell
gcloud compute instances create portmap-vm1 --zone=$zone --subnet=producer-service-subnet --no-address gcloud compute instances create portmap-vm2 --zone=$zone --subnet=producer-service-subnet --no-address gcloud compute instances create test-client-vm --zone=$zone --subnet=producer-service-subnet --no-address
Di bagian berikut, mulai server http di port 1000 & 2000 di setiap VM Produsen.
Mengonfigurasi VM
Dari Cloud Shell
gcloud compute ssh --zone $zone "portmap-vm1" --tunnel-through-iap --project $project
Di Cloud Shell dari sesi portmap-vm1
mkdir 1000 cd 1000 echo "portmap-vm1 1000">index.html sudo python3 -m http.server 1000 & cd .. mkdir 2000 cd 2000 echo "portmap-vm1 2000">index.html sudo python3 -m http.server 2000 &
Membuka Jendela Cloud Shell baru
Mulai dengan mereset variabel. Di Cloud Shell
project=[YOUR-PROJECT-ID] region=us-central1 zone=us-central1-a echo $project echo $region echo $zone gcloud compute ssh --zone $zone "portmap-vm2" --tunnel-through-iap --project $project
Di Cloud Shell dari sesi portmap-vm2
mkdir 1000 cd 1000 echo "portmap-vm2 1000">index.html sudo python3 -m http.server 1000 & cd .. mkdir 2000 cd 2000 echo "portmap-vm2 2000">index.html sudo python3 -m http.server 2000 &
8. Layanan Produsen Pengujian
Pertama, kita perlu mendapatkan alamat IP instance portmap. Catat kedua alamat IP ini.
Membuka Jendela Cloud Shell baru
Mulai dengan mereset variabel. Di Cloud Shell
project=[YOUR-PROJECT-ID] region=us-central1 zone=us-central1-a echo $project echo $region echo $zone gcloud compute instances describe portmap-vm1 \ --format='get(networkInterfaces[0].networkIP)' --zone $zone gcloud compute instances describe portmap-vm2\ --format='get(networkInterfaces[0].networkIP)' --zone $zone
Login ke instance pengujian. Di Cloud Shell
gcloud compute ssh --zone $zone "test-client-vm" --tunnel-through-iap --project $project curl [portmap-vm1 IP]:1000
Output yang diharapkan
portmap-vm1 1000
Di Cloud Shell
curl [portmap-vm1 IP]:2000
Output yang diharapkan
portmap-vm1 2000
Di Cloud Shell
curl [portmap-vm2 IP]:1000
Output yang diharapkan
portmap-vm2 1000
Di Cloud Shell
curl [portmap-vm2 IP]:2000
Output yang diharapkan
portmap-vm2 2000
Keluar dari test-client-vm
9. Membuat Layanan Produsen dengan NEG Portmap
Membuat Komponen Load Balancer
Dari Cloud Shell
gcloud compute network-endpoint-groups create portmap-neg --region=$region --network=producer-vpc --subnet=producer-service-subnet --network-endpoint-type=GCE_VM_IP_PORTMAP
Tambahkan endpoint ke NEG Portmap untuk membuat pemetaan dari port klien ke port produsen. Produsen membuat pemetaan ini dan akan memiliki metodenya sendiri untuk menyampaikan informasi ini kepada konsumen. Pemetaan port tertentu tidak dibagikan melalui PSC.
Di Cloud Shell
gcloud compute network-endpoint-groups update portmap-neg --region=$region --add-endpoint=client-destination-port=1001,instance=projects/$project/zones/$zone/instances/portmap-vm1,port=1000 --add-endpoint=client-destination-port=1002,instance=projects/$project/zones/$zone/instances/portmap-vm1,port=2000 --add-endpoint=client-destination-port=1003,instance=projects/$project/zones/$zone/instances/portmap-vm2,port=1000 --add-endpoint=client-destination-port=1004,instance=projects/$project/zones/$zone/instances/portmap-vm2,port=2000
Selesaikan pembuatan load balancer.
Di Cloud Shell
gcloud compute backend-services create portmap-bes --load-balancing-scheme=internal --region=$region --network=producer-vpc gcloud compute backend-services add-backend portmap-bes --network-endpoint-group=portmap-neg --network-endpoint-group-region=$region gcloud compute forwarding-rules create portmap-fr --load-balancing-scheme=INTERNAL --network=producer-vpc --subnet=producer-service-subnet --ports=ALL --region=$region --backend-service=portmap-bes
Buat Lampiran Layanan
Dari Cloud Shell
gcloud compute service-attachments create portmap-service-attachment --region=$region --producer-forwarding-rule=portmap-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=psc-nat-subnet
Selanjutnya, ambil dan catat URI Lampiran Layanan untuk mengonfigurasi endpoint PSC di lingkungan konsumen.
Di Cloud Shell
gcloud compute service-attachments describe portmap-service-attachment --region=$region
Contoh Output yang Diharapkan
connectionPreference: ACCEPT_AUTOMATIC creationTimestamp: '2024-07-19T10:02:29.432-07:00' description: '' enableProxyProtocol: false fingerprint: LI8D6JNQsLA= id: '6207474793859982026' kind: compute#serviceAttachment name: portmap-service-attachment natSubnets: - https://www.googleapis.com/compute/v1/projects/$project/regions/$zone/subnetworks/psc-nat-subnet pscServiceAttachmentId: high: '94288091358954472' low: '6207474793859982026' reconcileConnections: false region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/portmap-service-attachment targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/portmap-fr
10. Membuat jaringan VPC Konsumen
Jaringan VPC
Dari Cloud Shell
gcloud compute networks create consumer-vpc --subnet-mode custom
Buat Subnet
Dari Cloud Shell
gcloud compute networks subnets create consumer-client-subnet --network consumer-vpc --range=10.0.0.0/24 --region $region --enable-private-ip-google-access
Membuat Kebijakan Firewall Jaringan dan Aturan Firewall
Dari Cloud Shell
gcloud compute network-firewall-policies create consumer-vpc-policy --global gcloud compute network-firewall-policies associations create --firewall-policy consumer-vpc-policy --network consumer-vpc --name network-consumer-vpc --global-firewall-policy gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy consumer-vpc-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22 --global-firewall-policy
Hanya SSH dari akses IAP yang diperlukan untuk jaringan konsumen.
11. Membuat VM, Endpoint PSC, dan Menguji Konektivitas
Pada tahap ini, seharusnya ada tiga jendela Cloud Shell yang terbuka. Anda harus memiliki sesi terbuka dengan portmap-vm1. Salah satunya harus memiliki sesi terbuka dengan portmap-vm2, dan salah satunya harus merupakan sesi yang berfungsi.
Membuat Test VM
Dari Cloud Shell
gcloud compute instances create consumer-client-vm --zone $zone --subnet=consumer-client-subnet --no-address
Membuat Endpoint PSC
Dari Cloud Shell
gcloud compute addresses create psc-endpoint-ip --region=$region --subnet=consumer-client-subnet --addresses 10.0.0.10 gcloud compute forwarding-rules create psc-portmap-endpoint --region=$region --network=consumer-vpc --address=psc-endpoint-ip --target-service-attachment=[SERVICE ATTACHMENT URI]
Menguji Konektivitas
Dari Cloud Shell
gcloud compute ssh --zone $zone "consumer-client-vm" --tunnel-through-iap --project $project curl 10.0.0.10:1001
Output yang Diinginkan
portmap-vm1 1000
Dari Cloud Shell
curl 10.0.0.10:1002
Output yang Diinginkan
portmap-vm1 2000
Dari Cloud Shell
curl 10.0.0.10:1003
Output yang Diinginkan
portmap-vm2 1000
Dari Cloud Shell
curl 10.0.0.10:1004
Output yang Diinginkan
portmap-vm2 2000
12. Langkah-langkah pembersihan
Keluar dari instance VM (semua jendela)
exit
Menghapus komponen lab dari satu terminal Cloud Shell
gcloud compute forwarding-rules delete psc-portmap-endpoint --region=$region -q gcloud compute addresses delete psc-endpoint-ip --region=$region -q gcloud compute instances delete consumer-client-vm --zone=$zone -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy=consumer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=consumer-vpc-policy --name=network-consumer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete consumer-vpc-policy --global -q gcloud compute networks subnets delete consumer-client-subnet --region=$region -q gcloud compute networks delete consumer-vpc -q gcloud compute service-attachments delete portmap-service-attachment --region=$region -q gcloud compute forwarding-rules delete portmap-fr --region=$region -q gcloud compute backend-services delete portmap-bes --region=$region -q gcloud compute network-endpoint-groups delete portmap-neg --region=$region -q gcloud compute instances delete test-client-vm --zone=$zone -q gcloud compute instances delete portmap-vm2 --zone=$zone -q gcloud compute instances delete portmap-vm1 --zone=$zone -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 networks subnets delete psc-nat-subnet --region $region -q gcloud compute networks subnets delete producer-service-subnet --region $region -q gcloud compute networks delete producer-vpc -q
13. Selamat!
Selamat, Anda telah menyelesaikan codelab.
Yang telah kita bahas
- Kasus penggunaan Pemetaan Port Private Service Connect
- Manfaat Utama Pemetaan Port PSC
- Persyaratan jaringan
- Buat layanan produsen Private Service Connect menggunakan pemetaan port.
- Membuat endpoint Private Service Connect
- Melakukan panggilan melalui endpoint Private Service Connect ke layanan produsen