1. Pengantar
Private Service Connect memungkinkan produsen layanan menawarkan layanan kepada konsumen layanan. Jaringan VPC produsen layanan dapat mendukung banyak konsumen layanan.
Ada dua jenis endpoint Private Service Connect yang dapat terhubung ke layanan yang dipublikasikan:
- Endpoint Private Service Connect (berdasarkan aturan penerusan)
Dengan jenis endpoint ini, konsumen terhubung ke alamat IP internal yang mereka tentukan. Private Service Connect melakukan penafsiran alamat jaringan (NAT) untuk mengarahkan permintaan ke produsen layanan.
- Endpoint Private Service Connect dengan kontrol layanan HTTP(S) konsumen (berdasarkan load balancer HTTP(S) eksternal global)
Dengan jenis endpoint ini, konsumen terhubung ke alamat IP eksternal. Private Service Connect menggunakan grup endpoint jaringan untuk merutekan permintaan ke produsen layanan.
Penggunaan load balancer HTTP(S) eksternal global sebagai titik penegakan kebijakan memiliki manfaat berikut:
- Anda dapat mengganti nama layanan dan memetakannya ke URL pilihan Anda.
- Anda dapat mengonfigurasi load balancer untuk mencatat semua permintaan ke Cloud Logging.
- Anda dapat menggunakan sertifikat TLS yang dikelola pelanggan. atau dikelola Google.
Dalam codelab ini, Anda akan mempelajari cara membuat Kontrol Layanan HTTP(S) Konsumen endpoint Private Service Connect menggunakan XLB Global untuk mengakses layanan secara pribadi di jaringan lain. Pola PSC ini dapat dilakukan menggunakan satu project atau project terpisah. Untuk tujuan lab ini, kita akan menggunakan satu project dengan dua VPC terpisah.
Yang akan Anda pelajari
- Membuat endpoint Private Service Connect dengan Kontrol Layanan HTTP(S) Konsumen menggunakan XLB Global
- Mengonfigurasi layanan terkelola agar diekspos melalui Lampiran Layanan untuk menerima koneksi XLB L7.
- Buat sertifikat SSL dan konfigurasikan server web Apache untuk menghentikan TLS dan menerima traffic di port 443.
- Buat NEG PSC.
Yang Anda butuhkan
- Project Google Cloud
- Pengetahuan dalam men-deploy instance dan mengonfigurasi komponen jaringan
2. Lingkungan Pengujian
Lingkungan yang akan Anda buat akan terdiri dari Load Balancer HTTP(S) Eksternal dan NEG PSC di VPC konsumen. VPC produsen akan menghosting layanan web Apache sederhana yang dikonfigurasi dengan HTTPS. Anda akan membuat layanan backend dari layanan web Apache dan meneruskan layanan backend tersebut dengan Load Balancer TCP Internal yang dikonfigurasi dengan PSC Service Lampiran.
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.
- Nama project adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API, dan Anda dapat memperbaruinya kapan saja.
- Project ID harus unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis menghasilkan string unik; biasanya Anda tidak peduli dengan kata-katanya. Pada sebagian besar codelab, Anda harus mereferensikan Project ID (dan biasanya diidentifikasi sebagai
PROJECT_ID
). Jadi, jika Anda tidak menyukainya, buat ID acak lain, atau, Anda dapat mencoba sendiri dan melihat apakah tersedia. Kemudian file akan "dibekukan" setelah project dibuat. - Ada nilai ketiga, Nomor Project yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
- Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan API/resource Cloud. Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Untuk menonaktifkan resource agar tidak menimbulkan penagihan di luar tutorial ini, ikuti petunjuk "pembersihan" yang ada di akhir codelab. 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 di lab ini dapat dilakukan hanya dengan browser.
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
Aktifkan semua layanan yang diperlukan
gcloud services enable compute.googleapis.com gcloud services enable servicedirectory.googleapis.com
5. Penyiapan Aturan Firewall, Subnet, dan VPC Produsen
Jaringan VPC
Dari Cloud Shell
gcloud compute networks create producer-vpc --subnet-mode custom
Membuat Subnet
Subnet diperlukan di sisi produsen untuk melakukan Penafsiran Alamat Jaringan (NAT) untuk PSC. Perhatikan bahwa tujuannya adalah PRIVATE_SERVICE_CONNECT. Artinya, subnet ini tidak dapat digunakan untuk men-deploy workload.
Dari Cloud Shell
gcloud compute networks subnets create producer-nat-subnet \ --network=producer-vpc \ --region=$region \ --range=10.100.100.0/24 \ --purpose=PRIVATE_SERVICE_CONNECT
Kita akan men-deploy dua subnet di VPC produsen. VM pertama yang men-deploy layanan produser, dan VM tambahan di region lain untuk men-deploy VM klien guna menguji konektivitas ke layanan melalui Akses Global di Load Balancer Internal TCP.
Dari Cloud Shell
gcloud compute networks subnets create service-subnet \ --network=producer-vpc \ --range=10.0.0.0/24 \ --region=$region
Dari Cloud Shell
gcloud compute networks subnets create client-subnet \ --network=producer-vpc \ --range=10.0.1.0/24 \ --region=us-east4
Membuat Cloud NAT
Cloud NAT diperlukan untuk menginstal paket yang tepat bagi layanan produsen.
Dari Cloud Shell
gcloud compute routers create service-cr \ --region=$region --network=producer-vpc \ --asn=65501
Dari Cloud Shell
gcloud compute routers nats create service-nat-gw \ --router=service-cr \ --router-region=$region \ --nat-custom-subnet-ip-ranges=service-subnet \ --auto-allocate-nat-external-ips
Buat Aturan Firewall
Untuk lab ini, Anda akan menggunakan IAP untuk terhubung ke instance yang Anda buat. Aturan firewall berikut akan memungkinkan Anda terhubung ke instance melalui IAP. Jika memilih untuk tidak menggunakan IAP, lewati langkah ini. Sebagai gantinya, tambahkan alamat IP publik pada instance dan buat aturan firewall yang mengizinkan traffic masuk pada TCP port 22 dari 0.0.0.0/0.
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.
Dari Cloud Shell
gcloud compute firewall-rules create allow-ssh-iap \ --network producer-vpc \ --allow tcp:22 \ --source-ranges=35.235.240.0/20
Traffic klien akan berasal dari load balancer HTTP(S) Eksternal Global. Oleh karena itu, aturan Firewall harus dibuat untuk mengizinkan traffic ini ke server tujuan yang diberi tag yang akan menghosting layanan web kami. Kita juga akan membuka aturan firewall dari client-subnet untuk tujuan pengujian.
Dari Cloud Shell
gcloud compute firewall-rules create allow-xlb-client \ --network=producer-vpc \ --direction=ingress \ --allow=tcp:443 \ --target-tags=psc-service \ --source-ranges=130.211.0.0/22,35.191.0.0/16,10.0.1.0/24
Membuat Layanan Web Apache
Kita akan membuat Apache Web Service sederhana yang menampilkan "PSC Service"
Membuat Template Instance
Dari Cloud Shell
gcloud compute instance-templates create producer-service-template \ --network producer-vpc \ --subnet service-subnet \ --region $region \ --no-address \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --image-family=debian-10 \ --image-project=debian-cloud \ --tags=psc-service \ --metadata startup-script='#! /bin/bash sudo apt-get update apt-get install apache2 -y 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 psc-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=producer-service-template \ --health-check=psc-service-mig-healthcheck
Mengonfigurasi SSL di Server Web Apache
Selanjutnya, kita harus mengkonfigurasi SSL pada setiap server Web Apache. Kita akan melakukannya dengan membuat sertifikat dan menambahkan sertifikat tersebut ke Konfigurasi Apache.
Penghentian SSL harus dikonfigurasi pada layanan backend karena layanan harus di-front oleh load balancer TCP/UDP (L4) internal untuk pola PSC tertentu ini. Load balancer TCP/UDP internal tidak menghentikan SSL di lapisan load balancer.
Mulailah dengan melakukan SSH ke VM pertama di MIG Anda. Zona VM dan nama VM akan dialokasikan secara dinamis per lingkungan. Buka Compute Engine di konsol > Instance VM untuk menemukan nama dan zona instance Anda.
Dari Cloud Shell
gcloud compute ssh --zone "<YOUR_VM_ZONE>" "<YOUR_MIG_VM_1>" --tunnel-through-iap --project $project
Selanjutnya, kita akan membuat sertifikat melalui OpenSSL. Anda akan diminta untuk mengisi informasi tentang Negara, Negara Bagian, Lokalitas, Organisasi, Nama Unit Organisasi, Nama Umum, dan alamat email Anda. Satu-satunya informasi yang perlu Anda isi adalah Common Name, yang harus merupakan FQDN internal pilihan Anda. Untuk tujuan lab ini, Anda harus memilih example.com.
Dari Cloud Shell
sudo openssl genrsa -out private-key-file.pem 2048
Dari Cloud Shell
cat <<'EOF' >config.txt [req] default_bits = 2048 req_extensions = extension_requirements distinguished_name = dn_requirements [extension_requirements] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @sans_list [dn_requirements] countryName = Country Name (2 letter code) stateOrProvinceName = State or Province Name (full name) localityName = Locality Name (eg, city) 0.organizationName = Organization Name (eg, company) organizationalUnitName = Organizational Unit Name (eg, section) commonName = Common Name (e.g. server FQDN or YOUR name) emailAddress = Email Address [sans_list] DNS.1 = example.com EOF
Dari Cloud Shell
sudo openssl req -new -key private-key-file.pem \ -out csr.pem \ -config config.txt
Dari Cloud Shell
sudo openssl x509 -req \ -signkey private-key-file.pem \ -in csr.pem \ -out cert.cert \ -extfile config.txt \ -extensions extension_requirements \ -days 10
Sekarang, mari kita perbarui informasi konfigurasi Apache dengan detail sertifikat baru.
sudo vi /etc/apache2/sites-enabled/default-ssl.conf
Tambahkan baris di bawah ServerAdmin yang bertuliskan
ServerName example.com
Perbarui SSLCertificateFile dan SSLCertificateKeyFile lokasi file cert.cert dan private-key-file.pem di VM Anda. Contohnya ditampilkan di bawah ini. Pastikan untuk memperbarui <profile> dengan nama direktori Anda.
SSLCertificateFile /home/<profile>/cert.cert SSLCertificateKeyFile /home/<profile>/private-key-file.pem
Tutup editor dan mulai ulang Apache.
sudo a2enmod ssl sudo systemctl restart apache2
Keluar dari instance dan ulangi langkah yang sama pada instance lain dalam grup instance terkelola.
6. Membuat Layanan Produsen
Selanjutnya, kita akan membuat komponen load balancer untuk layanan.
Membuat health check load balancer.
Dari Cloud Shell
gcloud compute health-checks create https service-lb-healthcheck \ --port=443 \ --region=$region
Membuat layanan backend.
Dari Cloud Shell
gcloud compute backend-services create psc-backend-service \ --load-balancing-scheme=internal \ --protocol=TCP \ --region=$region \ --health-checks=service-lb-healthcheck \ --health-checks-region=$region gcloud compute backend-services add-backend psc-backend-service \ --region=$region \ --instance-group=psc-service-mig
Membuat Aturan Penerusan. Perhatikan bahwa aturan penerusan harus dikonfigurasi di port 443 dan dengan Akses Global. Diperlukan agar pola PSC ini berfungsi.
Dari Cloud Shell
gcloud compute forwarding-rules create producer-fr \ --region=$region \ --load-balancing-scheme=internal \ --network=producer-vpc \ --subnet=service-subnet \ --address=10.0.0.100 \ --ip-protocol=TCP \ --ports=443 \ --backend-service=psc-backend-service \ --backend-service-region=$region \ --allow-global-access
7. Menguji Layanan
Sebelum membuat Lampiran Layanan, kami akan membuat klien di region yang berbeda untuk menguji Load Balancer yang dikonfigurasi dengan Akses Global, serta layanan Apache yang dikonfigurasi untuk menghentikan TLS.
Dari Cloud Shell
gcloud compute instances create vm-client \ --zone=us-east4-a \ --image-family=debian-10 \ --image-project=debian-cloud \ --subnet=client-subnet \ --no-address
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 lebih dari 443 melalui load balancer.
curl https://example.com:443 -k --connect-to example.com:443:10.0.0.100:443
HASIL TERDUGA
PSC Service
8. Membuat Lampiran Layanan
Dari Cloud Shell
gcloud compute service-attachments create pscservice \ --region=$region \ --producer-forwarding-rule=producer-fr \ --connection-preference=ACCEPT-AUTOMATIC \ --nat-subnets=producer-nat-subnet
Anda harus mencatat URI Lampiran Layanan karena Anda akan membutuhkannya pada langkah berikutnya untuk konfigurasi endpoint. Anda dapat memperolehnya dengan menjalankan perintah berikut di Cloud Shell
Dari Cloud Shell
gcloud compute service-attachments describe pscservice --region $region
Salin URI mulai dari /projects
Contoh: /projects/<YOUR_PROJECT_ID>/ regions/us-central1/serviceLampirans/pscservice
9. VPC Konsumen dan Penyiapan Subnet
Jaringan VPC
Dari Cloud Shell
gcloud compute networks create consumer-vpc --subnet-mode custom
Buat Subnet
Subnet diperlukan di sisi konsumen tempat Private Service Connect Network Endpoint Group (NEG) akan di-deploy.
Dari Cloud Shell
gcloud compute networks subnets create psc-neg-subnet \ --network=consumer-vpc \ --region=$region \ --range=10.100.200.0/24 \ --purpose=private
10. Membuat Endpoint Private Service Connect dan Menguji Koneksi
Kita akan mengikuti proses pembuatan NEG PSC yang akan dikaitkan dengan Lampiran Layanan yang baru saja dibuat, melampirkan NEG PSC ke layanan backend, dan mengaitkan layanan backend dengan aturan penerusan.
Siapkan URI Lampiran Layanan yang telah kita catat di langkah terakhir. Ganti URL di bawah dengan URI Anda.
Dari Cloud Shell
gcloud beta compute network-endpoint-groups create xlb-psc-neg \ --network-endpoint-type=private-service-connect \ --psc-target-service=projects/<PROJECT-ID>/regions/us-central1/serviceAttachments/pscservice \ --region=$region \ --network=consumer-vpc \ --subnet=psc-neg-subnet
Buat alamat IP publik XLB dan ambil alamat IP aktual yang ditetapkan untuk pengujian berikutnya.
Dari Cloud Shell
gcloud compute addresses create xlb-psc-address \ --ip-version=IPv4 --global gcloud compute addresses describe xlb-psc-address --format="get(address)" --global
Selanjutnya, kita akan membuat endpoint PSC, yang dalam hal ini, di Load Balancer Eksternal.
Dari Cloud Shell
gcloud beta compute backend-services create pscneg-backend-service \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --global
Dari Cloud Shell
gcloud beta compute backend-services add-backend pscneg-backend-service \ --network-endpoint-group=xlb-psc-neg \ --network-endpoint-group-region=$region \ --global
Dari Cloud Shell
gcloud beta compute url-maps create xlb-psc-map \ --default-service=pscneg-backend-service \ --global
Dari Cloud Shell
gcloud beta compute target-http-proxies create psc-http-proxy \ --url-map=xlb-psc-map
Dari Cloud Shell
gcloud beta compute forwarding-rules create xlb-psc-fr \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=xlb-psc-address \ --target-http-proxy=psc-http-proxy \ --ports=80 \ --global
Tunggu 5 - 7 menit, lalu masukkan alamat IP yang terkait dengan xlb-psc-address di kolom URL browser Anda.
Jika "Layanan PSC" ditampilkan, Anda telah mengonfigurasi solusi dengan benar.
11. Langkah-langkah pembersihan
Dari satu terminal Cloud Shell, hapus komponen lab
gcloud beta compute forwarding-rules delete xlb-psc-fr --global --quiet gcloud beta compute target-http-proxies delete psc-http-proxy --quiet gcloud beta compute url-maps delete xlb-psc-map --global --quiet gcloud beta compute backend-services delete pscneg-backend-service --global --quiet gcloud compute addresses delete xlb-psc-address --global --quiet gcloud beta compute network-endpoint-groups delete xlb-psc-neg --region $region --quiet gcloud compute networks subnets delete psc-neg-subnet --region $region --quiet gcloud compute networks delete consumer-vpc --quiet gcloud compute service-attachments delete pscservice --region $region --quiet gcloud compute instances delete vm-client --zone=us-east4-a --quiet gcloud compute forwarding-rules delete producer-fr --region $region --quiet gcloud compute backend-services delete psc-backend-service --region $region --quiet gcloud compute health-checks delete service-lb-healthcheck --region $region --quiet gcloud compute instance-groups managed delete psc-service-mig --region $region --quiet gcloud compute health-checks delete psc-service-mig-healthcheck --region $region --quiet gcloud compute instance-templates delete producer-service-template --quiet gcloud compute firewall-rules delete allow-xlb-client --quiet gcloud compute firewall-rules delete allow-ssh-iap --quiet gcloud compute routers nats delete service-nat-gw –router service-cr --region $region --quiet gcloud compute routers delete service-cr --region $region --quiet gcloud compute networks subnets delete client-subnet --quiet gcloud compute networks subnets delete service-subnet --quiet gcloud compute networks subnets delete producer-nat-subnet --quiet gcloud compute networks delete producer-vpc --quiet
12. Selamat!
Selamat, Anda telah menyelesaikan codelab.
Yang telah kita bahas
- Membuat endpoint Private Service Connect dengan Kontrol Layanan HTTP(S) Konsumen menggunakan XLB Global
- Mengonfigurasi layanan terkelola agar diekspos melalui Lampiran Layanan untuk menerima koneksi XLB L7.
- Buat sertifikat SSL dan konfigurasikan server web Apache untuk menghentikan TLS dan menerima traffic di port 443.
- Buat NEG PSC.