Private Service Connect - Menggunakan Backend PSC untuk Mengakses Layanan Produsen

1. Pengantar

Private Service Connect memungkinkan produsen layanan mengekspos layanan secara pribadi dari satu jaringan VPC ke jaringan VPC lainnya. Konsumen dapat mengakses layanan produsen melalui endpoint PSC atau Backend PSC.

Fokus codelab ini adalah Backend PSC. Backend PSC digunakan bersama dengan load balancer proxy Google Cloud (Aplikasi atau Jaringan). Menggunakan Backend PSC memberikan kontrol sisi konsumen yang lebih terperinci seperti:

  • Kemampuan observasi dan logging yang lebih mendalam
  • Integrasi Cloud Armor
  • URL Khusus
  • Pengelolaan Traffic Lanjutan
  • Sertifikat TLS kustom

Dalam codelab ini, Anda akan mempelajari cara membuat Backend Private Service Connect dengan Load Balancer Aplikasi Eksternal Global untuk mengakses layanan produsen secara pribadi di jaringan lain.

Yang akan Anda pelajari

  • Membuat dan mengonfigurasi Backend PSC yang terkait dengan Load Balancer Aplikasi Eksternal Global
  • Mengonfigurasi layanan web yang dikelola Apache dan mengeksposnya sebagai layanan PSC melalui Lampiran Layanan
  • Membuat sertifikat SSL untuk menghentikan SSL di Load Balancer Aplikasi Internal dan Eksternal
  • Mengonfigurasi zona publik Cloud DNS untuk mengakses layanan PSC

Yang Anda butuhkan

  • Project Google Cloud dengan izin pemilik

2. Lingkungan Pengujian

Lingkungan yang akan Anda buat akan terdiri dari VPC Konsumen dan VPC Produsen. Di VPC Produsen, Anda akan men-deploy grup instance terkelola dari template instance yang mem-build layanan web Apache open source. Anda juga akan men-deploy test-vm untuk memastikan fungsi lokal layanan yang sesuai. Anda akan mengekspos layanan Apache sebagai layanan Produsen PSC melalui Lampiran Layanan.

Di VPC Konsumen, Anda akan men-deploy Load Balancer Aplikasi Eksternal Global dengan layanan Backend PSC yang mengarah ke layanan Apache. Kemudian, Anda akan menyiapkan zona DNS publik untuk mengakses layanan PSC di Internet publik.

31e7497bf3d9035c.png

3. Penyiapan dan Persyaratan

Penyiapan lingkungan mandiri

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • 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.
  1. 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:

55efc1aaa7a4d3ad.png

Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:

7ffe5cbb04455448.png

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.

4. Sebelum memulai

Mengaktifkan API

Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
export project=YOUR-PROJECT-NAME
export region=us-central1
echo $project
echo $region

Mengaktifkan semua layanan yang diperlukan

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

5. Penyiapan VPC Produsen

Membuat Jaringan VPC

Dari Cloud Shell

gcloud compute networks create producer-vpc --subnet-mode custom

Membuat Subnet

Dua subnet tujuan umum akan di-deploy di producer-vpc. Subnet layanan akan digunakan untuk men-deploy VM layanan web Apache serta aturan penerusan load balancer. test-client-subnet akan berada di region yang berbeda dan akan digunakan untuk men-deploy VM guna menguji layanan Apache dengan mengaktifkan Akses Global.

Dari Cloud Shell

gcloud compute networks subnets create service-subnet \
    --network=producer-vpc \
    --range=10.0.0.0/28 \
    --region=$region

Dari Cloud Shell

gcloud compute networks subnets create test-client-subnet \
    --network=producer-vpc \
    --range=10.0.1.0/28 \
    --region=us-east4

Kita juga harus men-deploy subnet khusus proxy untuk digunakan dengan Load Balancer Aplikasi Internal Regional.

Dari Cloud Shell

gcloud compute networks subnets create central-proxy-subnet \
    --network=producer-vpc \
    --range=10.100.101.0/24 \
    --region=$region \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE

Saat layanan PSC di-deploy, setiap layanan unik memerlukan subnet NAT PSC yang sesuai untuk dikaitkan dengan Lampiran Layanan. Subnet ini harus berukuran sesuai, bergantung pada jumlah endpoint yang diharapkan terhubung.

Dari Cloud Shell

gcloud compute networks subnets create psc-nat-subnet \
    --network=producer-vpc \
    --region=$region \
    --range=10.100.100.0/24 \
    --purpose=PRIVATE_SERVICE_CONNECT

Membuat Cloud NAT

Cloud NAT diperlukan untuk menginstal paket yang sesuai untuk layanan produsen kami.

Dari Cloud Shell

gcloud compute routers create central-cr \
    --network=producer-vpc \
    --region=$region

Dari Cloud Shell

gcloud compute routers nats create central-nat \
    --router=central-cr \
    --region=$region \
    --nat-all-subnet-ip-ranges \
    --auto-allocate-nat-external-ips

Membuat Kebijakan dan Aturan Firewall Jaringan

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

Dua aturan firewall tambahan akan diperlukan untuk mengizinkan traffic masuk ke backend load balancer yang bersumber dari subnet khusus proxy load balancer (2000), serta aturan untuk mengizinkan health check load balancer di instance backend (2001).

Dari Cloud Shell

gcloud compute network-firewall-policies rules create 2000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow traffic from load balancer proxy subnet" \
    --direction INGRESS \
    --src-ip-ranges 10.100.101.0/24 \
    --layer4-configs tcp:443 \
    --global-firewall-policy


gcloud compute network-firewall-policies rules create 2001 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow load balancer health checks" \
    --direction INGRESS \
    --src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \
    --layer4-configs tcp:443 \
    --global-firewall-policy

6. Membuat Layanan Web Apache

Kita akan membuat Layanan Web Apache sederhana yang menampilkan "PSC Service".

Membuat Template Instance

Dari Cloud Shell

gcloud compute instance-templates create apache-service-template \
    --network producer-vpc \
    --subnet service-subnet \
    --region $region \
    --no-address \
    --metadata startup-script='#! /bin/bash
    sudo apt-get update
    apt-get install apache2 -y
    a2enmod ssl
    sudo a2ensite default-ssl
    echo "PSC Service" | \
    tee /var/www/html/index.html
    systemctl restart apache2'

Membuat Health Check untuk MIG

Dari Cloud Shell

gcloud compute health-checks create https service-mig-healthcheck \
    --port=443 \
    --global

Membuat Grup Instance Terkelola

Dari Cloud Shell

gcloud compute instance-groups managed create psc-service-mig \
    --region $region \
    --size=2 \
    --template=apache-service-template \
    --health-check=service-mig-healthcheck

gcloud compute instance-groups managed set-named-ports psc-service-mig \
    --named-ports=https:443 \
    --region=$region

7. Membuat Sertifikat yang Ditandatangani Sendiri

Selesaikan Langkah 1 petunjuk di sini untuk membuat sertifikat yang ditandatangani sendiri. Anda dapat menjalankan semua perintah di Cloud Shell. Kembali ke tempat ini setelah Langkah 1 selesai. NAMA UMUM ANDA HARUS DIKONFIGURASI DENGAN EXAMPLE.COM.

Buat resource sertifikat untuk dikaitkan dengan load balancer Anda. Ganti parameter sertifikat dan kunci pribadi dengan nama file spesifik Anda.

Dari Cloud Shell

gcloud compute ssl-certificates create producer-service-cert \
    --certificate=<your-producer-certfile.cert> \
    --private-key=<your-producer-keyfile.pem> \
    --region=$region

8. Membuat Load Balancer Aplikasi Regional Internal

Selanjutnya, kita akan membuat komponen load balancer untuk layanan. Kami menggunakan Load Balancer Aplikasi Regional Internal, tetapi Anda memiliki opsi untuk menggunakan load balancer internal Google Cloud. Ikuti dokumentasi load balancer yang sesuai untuk penanganan TLS.

Buat alamat IP internal yang akan digunakan untuk aturan penerusan load balancer dan catat IP yang akan digunakan nanti saat Anda melakukan panggilan pengujian ke layanan.

Dari Cloud Shell

gcloud compute addresses create apache-service-ip \
 --region=$region \
 --subnet=service-subnet

gcloud compute addresses describe apache-service-ip \
   --format="get(address)" \
   --region=$region

Buat health check load balancer.

Dari Cloud Shell

gcloud compute health-checks create https lb-apache-service-hc \
    --region=$region \
    --port-name=https

Buat layanan backend.

Dari Cloud Shell

gcloud compute backend-services create apache-bes\
  --load-balancing-scheme=INTERNAL_MANAGED \
  --protocol=HTTPS \
  --port-name=https \
  --health-checks=lb-apache-service-hc \
  --health-checks-region=$region \
  --region=$region


gcloud compute backend-services add-backend apache-bes \
  --balancing-mode=UTILIZATION \
  --instance-group=psc-service-mig \
  --region=$region

Buat Peta URL.

Dari Cloud Shell

gcloud compute url-maps create producer-url-map \
  --default-service=apache-bes \
  --region=$region

Buat proxy HTTPS target.

Dari Cloud Shell

gcloud compute target-https-proxies create https-proxy \
  --url-map=producer-url-map \
  --region=$region \
  --ssl-certificates=producer-service-cert

Buat Aturan Penerusan.

Dari Cloud Shell

gcloud compute forwarding-rules create apache-fr \
  --load-balancing-scheme=INTERNAL_MANAGED \
  --network=producer-vpc \
  --subnet=service-subnet \
  --address=apache-service-ip \
  --ports=443 \
  --region=$region \
  --target-https-proxy=https-proxy \
  --target-https-proxy-region=$region \
  --allow-global-access

9. Membuat VM Pengujian dan Menguji Layanan Secara Lokal

Sebelum membuat Lampiran Layanan, kita akan membuat VM klien pengujian di region yang berbeda untuk menguji apakah load balancer dikonfigurasi dengan benar menggunakan Akses Global dan TLS.

Dari Cloud Shell

gcloud compute instances create vm-client \
    --zone=us-east4-a \
    --subnet=test-client-subnet \
    --no-address

Tunggu sekitar satu menit hingga penyediaan selesai, lalu lakukan SSH ke instance.

Dari Cloud Shell

gcloud compute ssh \
    --zone "us-east4-a" "vm-client" \
    --tunnel-through-iap \
    --project $project

Uji Layanan Apache dengan menghubungkan melalui 443 melalui load balancer. Alamat IP internal adalah alamat yang Anda cadangkan dan catat sebelumnya.

curl https://example.com:443 -k --connect-to example.com:443:<YOUR-INTERNAL-IP>:443

HASIL YANG DIHARAPKAN

PSC Service

Keluar dari VM.

Dari vm-client

exit

10. Membuat Lampiran Layanan

Untuk contoh ini, kita mengonfigurasi Lampiran Layanan agar hanya mengizinkan koneksi PSC dari project ini. Ini dapat dikonfigurasi untuk menerima satu atau beberapa project atau jaringan tertentu, tetapi tidak keduanya. Kami telah menetapkan batas koneksi maksimum menjadi 5 koneksi. Setiap project atau jaringan harus memiliki batas yang ditetapkan.

Dari Cloud Shell

gcloud compute service-attachments create apache-service-attachment \
    --region=$region \
    --producer-forwarding-rule=apache-fr \
    --connection-preference=ACCEPT_MANUAL \
    --consumer-accept-list=$project=5 \
    --nat-subnets=psc-nat-subnet

Anda harus mencatat URI Lampiran Layanan (selfLink) karena Anda akan membutuhkannya di langkah berikutnya untuk konfigurasi Backend PSC. Anda bisa mendapatkannya dengan menjalankan perintah berikut di Cloud Shell.

Dari Cloud Shell

gcloud compute service-attachments describe apache-service-attachment \
    --region $region

Salin URI yang dimulai dari projects

Contoh: projects/$project/regions/$region/serviceAttachments/apache-service-attachment

11. Penyiapan VPC Konsumen

Membuat Jaringan VPC

Dari Cloud Shell

gcloud compute networks create consumer-vpc --subnet-mode custom

Buat Subnet

Subnet diperlukan di sisi konsumen tempat Grup Endpoint Jaringan (NEG) Private Service Connect akan di-deploy.

Dari Cloud Shell

gcloud compute networks subnets create consumer-subnet \
    --network=consumer-vpc \
    --region=$region \
    --range=10.0.0.0/28

12. Mencadangkan IP Eksternal dan Membuat Sertifikat yang Ditandatangani Sendiri Sisi Konsumen

External IP

Buat alamat IP statis eksternal yang akan digunakan nanti untuk aturan penerusan load balancer dan catat alamat IP di variabel Cloud Shell.

Dari Cloud Shell

gcloud compute addresses create external-psc-ip \
    --network-tier=PREMIUM \
    --ip-version=IPV4 \
    --global

export externalip=$(gcloud compute addresses describe external-psc-ip \
    --format="get(address)" \
    --global)

echo $externalip

Sertifikat Tanda Tangan Sendiri Konsumen

Untuk kedua kalinya, selesaikan Langkah 1 dari petunjuk di sini untuk membuat sertifikat yang ditandatangani sendiri. Anda dapat menjalankan semua perintah di Cloud Shell. Kembali ke tempat ini setelah Langkah 1 selesai. Kita akan menggunakan layanan DNS karakter pengganti publik open source yang disebut nip.io, bukan memiliki zona DNS publik kita sendiri. URL publik layanan PSC Anda akan menggunakan alamat IP eksternal yang baru saja Anda konfigurasi. NAMA UMUM ANDA HARUS DIKONFIGURASI DENGAN <YOUR-EXTERNAL-IP.nip.io>

Buat resource sertifikat untuk dikaitkan dengan load balancer eksternal Anda. Ganti parameter sertifikat dan kunci pribadi dengan nama file spesifik Anda.

Dari Cloud Shell

gcloud compute ssl-certificates create consumer-service-cert \
    --certificate=<your-consumer-certfile.cert> \
    --private-key=<your-consumer-keyfile.pem> \
    --global

13. Membuat Komponen Load Balancer

Kita akan membuat Load Balancer Aplikasi Eksternal Global dengan NEG PSC yang mengarah ke Lampiran Layanan yang baru dibuat sebagai Layanan Backend.

Siapkan URI Lampiran Layanan yang kita catat di langkah terakhir. Ganti psc-target-service di bawah dengan URI Anda.

Dari Cloud Shell

gcloud compute network-endpoint-groups create apache-psc-neg \
--network-endpoint-type=private-service-connect \
--psc-target-service=projects/$project/regions/$region/serviceAttachments/apache-service-attachment \
--region=$region \
--network=consumer-vpc \
--subnet=consumer-subnet

Buat Layanan Backend.

Dari Cloud Shell

gcloud compute backend-services create apache-pscneg-bes \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTPS \
    --global

gcloud compute backend-services add-backend apache-pscneg-bes \
    --network-endpoint-group=apache-psc-neg \
    --network-endpoint-group-region=$region \
    --global

Membuat Peta URL

Dari Cloud Shell

gcloud compute url-maps create consumer-url-map \
    --default-service=apache-pscneg-bes \
    --global

Buat proxy HTTPS target.

Dari Cloud Shell

gcloud compute target-https-proxies create psc-https-proxy \
    --url-map=consumer-url-map \
    --ssl-certificates=consumer-service-cert

Membuat Aturan Penerusan

Dari Cloud Shell

gcloud compute forwarding-rules create external-fr \
  --load-balancing-scheme=EXTERNAL_MANAGED \
  --network-tier=PREMIUM \
  --address=external-psc-ip \
  --global \
  --target-https-proxy=psc-https-proxy \
  --ports=443

14. Membuat Zona DNS Publik

Dari Cloud Shell

gcloud dns managed-zones create "psc-service" \
    --dns-name=$externalip.nip.io. \
    --description="public dns for psc service" \
    --visibility=public

Dari Cloud Shell

gcloud dns record-sets transaction start \
   --zone="psc-service"

gcloud dns record-sets transaction add $externalip \
   --name=$externalip.nip.io \
   --ttl=300 \
   --type=A \
   --zone="psc-service"

gcloud dns record-sets transaction execute \
   --zone="psc-service"

15. Menguji Koneksi PSC Konsumen

Tunggu 7 hingga 10 menit sebelum melakukan pengujian agar DNS publik diterapkan.

Dari Cloud Shell

curl https://$externalip.nip.io -k

Anda juga dapat menguji dari browser dengan memasukkan https://<YOUR-EXTERNAL-IP>.nip.io ke browser atau terminal desktop.

HASIL YANG DIHARAPKAN

PSC Service

16. Langkah-langkah pembersihan

Menghapus komponen lab dari satu terminal Cloud Shell

gcloud dns record-sets delete $externalip.nip.io --zone="psc-service" --type=A -q

gcloud dns managed-zones delete "psc-service" -q

gcloud compute forwarding-rules delete external-fr --global -q 

gcloud compute target-https-proxies delete psc-https-proxy -q

gcloud compute url-maps delete consumer-url-map --global -q

gcloud compute backend-services delete apache-pscneg-bes --global -q

gcloud compute network-endpoint-groups delete apache-psc-neg --region=$region -q

gcloud compute ssl-certificates delete consumer-service-cert --global -q

gcloud compute addresses delete external-psc-ip --global -q

gcloud compute networks subnets delete consumer-subnet --region $region -q

gcloud compute networks delete consumer-vpc -q

gcloud compute instances delete vm-client --zone=us-east4-a -q

gcloud compute service-attachments delete apache-service-attachment --region $region -q

gcloud compute forwarding-rules delete apache-fr --region $region -q

gcloud compute target-https-proxies delete https-proxy --region $region -q

gcloud compute url-maps delete producer-url-map --region $region -q

gcloud compute backend-services delete apache-bes --region $region -q

gcloud compute health-checks delete lb-apache-service-hc --region $region -q

gcloud compute addresses delete apache-service-ip --region $region -q

gcloud compute ssl-certificates delete producer-service-cert --region $region -q

gcloud compute instance-groups managed delete psc-service-mig --region $region -q

gcloud compute health-checks delete service-mig-healthcheck --global -q

gcloud compute instance-templates delete apache-service-template -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 routers nats delete central-nat --router=central-cr --region $region -q

gcloud compute routers delete central-cr --region $region -q

gcloud compute networks subnets delete psc-nat-subnet --region $region -q

gcloud compute networks subnets delete service-subnet --region $region -q

gcloud compute networks subnets delete test-client-subnet --region us-east4 -q 

gcloud compute networks subnets delete central-proxy-subnet --region $region -q

gcloud compute networks delete producer-vpc -q

17. Selamat!

Selamat, Anda telah menyelesaikan codelab.

Yang telah kita bahas

  • Membuat dan mengonfigurasi Backend PSC yang terkait dengan Load Balancer Aplikasi Eksternal Global
  • Mengonfigurasi layanan web yang dikelola Apache dan mengeksposnya sebagai layanan PSC melalui Lampiran Layanan
  • Membuat sertifikat SSL untuk menghentikan SSL di Load Balancer Aplikasi Internal dan Eksternal
  • Mengonfigurasi zona publik Cloud DNS untuk mengakses layanan PSC