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