Dokumen ini menunjukkan cara men-deploy Load Balancer Aplikasi internal regional dengan Cloud Run. Untuk menyiapkannya, gunakan backend NEGless Server untuk load balancer.
Sebelum mencoba prosedur ini, pastikan Anda sudah memahami topik berikut:
NEG Tanpa Server memungkinkan Anda menggunakan layanan Cloud Run dengan load balancer. Setelah Anda mengonfigurasi load balancer dengan backend NEG serverless, permintaan ke load balancer akan dirutekan ke backend Cloud Run.
Sebelum memulai
Instal Google Cloud SDK
Instal alat Google Cloud CLI. Lihat ringkasan gcloud untuk mengetahui informasi konseptual dan penginstalan tentang alat ini.
Jika Anda belum pernah menjalankan gcloud CLI, jalankan gcloud init
terlebih dahulu untuk menginisialisasi direktori gcloud
Anda.
Men-deploy layanan Cloud Run
Petunjuk di halaman ini mengasumsikan bahwa Anda sudah menjalankan layanan Cloud Run.
Pada contoh di halaman ini, Anda dapat menggunakan panduan memulai Cloud Run untuk men-deploy layanan Cloud Run.
NEG serverless, load balancer, dan VM klien apa pun harus berada di region yang sama dengan layanan Cloud Run.Untuk mencegah akses ke layanan Cloud Run dari Internet, batasi traffic masuk ke internal
. Traffic dari Load Balancer Aplikasi internal dianggap sebagai traffic internal.
gcloud run deploy CLOUD_RUN_SERVICE_NAME \ --platform=managed \ --allow-unauthenticated \ --ingress=internal \ --region=REGION \ --image=IMAGE_URL
Catat nama layanan yang Anda buat. Bagian selanjutnya dari halaman ini akan menunjukkan cara menyiapkan load balancer yang mengarahkan permintaan ke layanan ini.
Konfigurasikan izin
Untuk mengikuti panduan ini, Anda harus membuat NEG serverless dan membuat load balancer dalam sebuah project. Anda harus menjadi pemilik atau editor project, atau Anda harus memiliki peran IAM Compute Engine berikut:
Tugas | Peran yang diperlukan |
---|---|
Membuat komponen jaringan dan load balancer | Admin Jaringan |
Membuat dan mengubah NEG | Compute Instance Admin |
Membuat dan mengubah sertifikat SSL | Security Admin |
Mengonfigurasi jaringan dan subnet
Untuk mengonfigurasi jaringan dan subnetnya, Anda perlu melakukan tugas berikut:
- Membuat subnet dan jaringan VPC.
- Buat subnet khusus proxy.
Membuat jaringan VPC
Buat jaringan VPC mode kustom, lalu subnet yang Anda inginkan dalam sebuah region.
Konsol
Di Konsol Google Cloud, buka halaman jaringan VPC.
Klik Create VPC network.
Untuk Name, masukkan
lb-network
.Untuk Mode pembuatan subnet, klik Kustom.
Di bagian New subnet tentukan parameter konfigurasi berikut untuk subnet:
- Untuk Name, masukkan
lb-subnet
. - Pilih Region.
- Untuk Rentang alamat IP, masukkan
10.1.2.0/24
. - Klik Done.
- Untuk Name, masukkan
Klik Create.
gcloud
Buat jaringan VPC kustom dengan menggunakan perintah
gcloud compute networks create
:gcloud compute networks create lb-network --subnet-mode=custom
Buat subnet di jaringan
lb-network
. Contoh ini menggunakan rentang alamat IP10.1.2.0/24
untuk subnet. Anda dapat mengonfigurasi rentang subnet yang valid.gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=REGION
Membuat subnet khusus proxy
Buat subnet khusus proxy untuk semua load balancer berbasis Envoy regional di region tertentu pada jaringan lb-network
.
Konsol
Di Konsol Google Cloud, buka halaman jaringan VPC.
Klik nama jaringan VPC Bersama yang ingin Anda tambahi subnet khusus proxy.
Klik Tambahkan subnet.
Di kolom Name, masukkan
proxy-only-subnet
.Pilih Region.
Tetapkan Destination ke Regional Managed Proxy.
Masukkan rentang alamat IP sebagai
10.129.0.0/23
.Klik Tambahkan.
gcloud
Buat subnet khusus proxy dengan menggunakan perintah
gcloud compute networks subnets create
.Contoh ini menggunakan rentang alamat IP
10.129.0.0/23
untuk subnet khusus proxy. Anda dapat mengonfigurasi rentang subnet yang valid.gcloud compute networks subnets create proxy-only-subnet \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=REGION \ --network=lb-network \ --range=10.129.0.0/23
Membuat load balancer
Dalam diagram berikut, load balancer menggunakan backend NEG serverless untuk mengarahkan permintaan ke layanan Cloud Run serverless.
Traffic yang menuju dari load balancer ke backend NEG serverless menggunakan rute khusus yang ditentukan di luar VPC Anda yang tidak tunduk pada aturan firewall. Oleh karena itu, jika load balancer hanya memiliki backend NEG serverless, Anda tidak perlu membuat aturan firewall untuk mengizinkan traffic dari subnet khusus proxy ke backend serverless.
Konsol
Memulai konfigurasi Anda
Di Konsol Google Cloud, buka halaman Load balancing.
- Klik Create load balancer.
- Untuk Type of load balancer, pilih Application Load Balancer (HTTP/HTTPS) lalu klik Next.
- Untuk Terhadap publik atau internal, pilih Internal, lalu klik Berikutnya.
- Untuk Cross-region or single region deployment, pilih Best for regional working, lalu klik Next.
- Klik Konfigurasikan.
Konfigurasi dasar
- Untuk nama load balancer, masukkan
serverless-lb
. - Pilih Network sebagai
lb_network
. - Biarkan jendela tetap terbuka untuk melanjutkan.
Mengonfigurasi frontend
- Sebelum melanjutkan, pastikan Anda memiliki sertifikat SSL.
- Klik Frontend configuration.
- Masukkan Nama.
- Untuk mengonfigurasi Load Balancer Aplikasi internal, isi kolom sebagai berikut.
- Di bagian Protocol, pilih HTTPS.
- Di bagian Subnetwork, pilih subnetwork.
- Di bagian IP version, pilih IPv4.
- Di bagian IP address, pilih Ephemeral.
- Di bagian Port, pilih
443
. Di bagian Certificate, pilih sertifikat SSL yang ada atau buat sertifikat baru.
Contoh berikut menunjukkan cara membuat sertifikat SSL Compute Engine:
- Klik Buat sertifikat baru.
- Di kolom Name, masukkan nama.
- Di kolom yang sesuai, upload file berformat PEM:
- Certificate
- Private key
- Klik Create.
- Opsional: Untuk membuat load balancer HTTP, lakukan hal berikut:
- Di bagian Protocol, pilih HTTP.
- Di bagian Subnetwork, pilih subnetwork.
- Di bagian IP version, pilih IPv4.
- Di bagian IP address, pilih Ephemeral.
- Di bagian Port, pilih
80
. - Klik Done.
Jika ingin menguji proses ini tanpa menyiapkan resource sertifikat SSL, Anda dapat menyiapkan load balancer HTTP.
Mengonfigurasi layanan backend
- Klik Backend configuration.
- Di menu drop-down Create or select backend services, tahan kursor ke Backend services, lalu pilih Create a backend service.
- Di jendela Create a backend service, masukkan Name.
- Di bagian Backend type, pilih Serverless network endpoint group.
- Jangan ubah Protocol. Parameter ini diabaikan.
- Di bagian Backends > New backend, pilih Create serverless network endpoint group.
- Di jendela Create serverless network endpoint group, masukkan Name.
- Di bagian Region, region load balancer ditampilkan.
- Dari kolom Serverless network endpoint group type, pilih Cloud Run. Cloud Run adalah satu-satunya jenis yang didukung.
- Pilih Pilih nama layanan.
- Dari menu drop-down Service, pilih layanan Cloud Run yang ingin Anda buatkan load balancer.
- Klik Done.
- Klik Create.
- Di jendela Create backend service, klik Create.
Mengonfigurasi aturan pemilihan rute
Aturan pemilihan rute menentukan cara traffic Anda diarahkan. Anda dapat mengarahkan traffic ke layanan backend atau layanan Kubernetes. Semua traffic yang tidak cocok secara eksplisit dengan pencocok host dan jalur akan dikirim ke layanan default.
- Klik Simple host and path rule.
- Pilih layanan backend dari menu drop-down Backend.
Meninjau konfigurasi
- Klik Review and finalize.
- Tinjau nilai untuk Backend, Aturan Host dan Path, serta Frontend.
- Opsional: Klik Equivalent Code untuk melihat permintaan REST API yang akan digunakan untuk membuat load balancer.
- Klik Create. Tunggu load balancer dibuat.
- Klik nama load balancer (serverless-lb).
- Catat alamat IP load balancer untuk tugas berikutnya.
gcloud
- Buat NEG serverless untuk layanan Cloud Run Anda:
gcloud compute network-endpoint-groups create SERVERLESS_NEG_NAME \ --region=REGION \ --network-endpoint-type=serverless \ --cloud-run-service=CLOUD_RUN_SERVICE_NAME
- Membuat layanan backend regional. Tetapkan
--protocol
ke HTTP. Parameter ini diabaikan, tetapi diperlukan karena--protocol
secara default disetel ke TCP.gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP \ --region=REGION
- Tambahkan NEG serverless sebagai backend ke layanan backend:
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --region=REGION \ --network-endpoint-group=SERVERLESS_NEG_NAME \ --network-endpoint-group-region=REGION
- Buat peta URL regional untuk mengarahkan permintaan masuk ke layanan backend:
gcloud compute url-maps create URL_MAP_NAME \ --default-service=BACKEND_SERVICE_NAME \ --region=REGION
Contoh peta URL ini hanya menargetkan satu layanan backend yang mewakili satu aplikasi serverless, sehingga Anda tidak perlu menyiapkan aturan host atau pencocok jalur. - Opsional: Lakukan langkah ini jika Anda menggunakan HTTPS antara klien dan load balancer. Langkah ini tidak diperlukan untuk load balancer HTTP.
Anda dapat membuat sertifikat Compute Engine atau Certificate Manager. Gunakan salah satu metode berikut untuk membuat sertifikat menggunakan Certificate Manager:
- Sertifikat regional yang dikelola sendiri. Untuk mengetahui informasi tentang cara membuat dan menggunakan sertifikat yang dikelola sendiri secara regional, lihat men-deploy sertifikat yang dikelola sendiri secara regional. Peta sertifikat tidak didukung.
Sertifikat regional yang dikelola Google. Peta sertifikat tidak didukung.
Jenis sertifikat regional yang dikelola Google berikut didukung oleh Certificate Manager:
- Sertifikat regional yang dikelola Google dengan otorisasi DNS per project. Untuk informasi selengkapnya, lihat Men-deploy sertifikat regional yang dikelola Google.
- Sertifikat regional yang dikelola Google (pribadi) dengan Certificate Authority Service. Untuk informasi selengkapnya, lihat Men-deploy sertifikat regional yang dikelola Google dengan CA Service.
Setelah Anda membuat sertifikat, lampirkan sertifikat tersebut langsung ke proxy target.
Untuk membuat resource sertifikat SSL yang dikelola sendiri secara regional:gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --certificate CRT_FILE_PATH \ --private-key KEY_FILE_PATH \ --region=REGION
- Buat proxy target regional untuk merutekan permintaan ke peta URL.
Untuk load balancer HTTP, buat proxy target HTTP:gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \ --url-map=URL_MAP_NAME \ --region=REGION
Untuk load balancer HTTPS, buat proxy target HTTPS. Proxy adalah bagian dari load balancer yang menyimpan sertifikat SSL untuk Load Balancing HTTPS, sehingga Anda juga memuat sertifikat pada langkah ini.gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --ssl-certificates=SSL_CERTIFICATE_NAME \ --url-map=URL_MAP_NAME \ --region=REGION
- Buat aturan penerusan untuk mengarahkan permintaan masuk ke proxy.
Jangan gunakan subnet khusus proxy untuk alamat IP aturan penerusan. Anda dapat mengonfigurasi semua alamat IP yang valid dari subnet (
lb-subnet
).
Untuk load balancer HTTP:gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=lb-subnet \ --address=IP_ADDRESS \ --target-http-proxy=TARGET_HTTP_PROXY_NAME \ --target-http-proxy-region=REGION \ --region=REGION \ --ports=80
Untuk load balancer HTTPS:gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=lb-subnet \ --address=IP_ADDRESS \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --target-https-proxy-region=REGION \ --region=REGION \ --ports=443
Menguji load balancer
Setelah mengonfigurasi load balancer, Anda dapat mulai mengirim traffic ke alamat IP load balancer.
Membuat VM klien
Contoh ini membuat VM klien (vm-client
) di region yang sama dengan load balancer. Klien digunakan untuk memvalidasi konfigurasi load balancer
dan menunjukkan perilaku yang diharapkan.
gcloud
VM klien dapat berada di zona mana pun dalam REGION yang sama dengan load balancer, dan dapat menggunakan subnet apa pun dalam jaringan VPC yang sama.
gcloud compute instances create vm-client \ --image-family=debian-10 \ --image-project=debian-cloud \ --tags=allow-ssh \ --network=lb-network \ --subnet=lb-subnet \ --zone=ZONE
Konfigurasikan aturan firewall
Contoh ini memerlukan aturan firewall berikut untuk VM klien pengujian:
fw-allow-ssh
. Aturan ingress, yang berlaku untuk VM klien pengujian,
yang mengizinkan konektivitas SSH yang masuk pada port TCP 22
dari
alamat apa pun. Anda dapat memilih rentang alamat IP sumber yang lebih ketat untuk aturan ini. Misalnya, Anda dapat menentukan hanya rentang alamat IP di sistem tempat Anda memulai sesi SSH. Contoh ini menggunakan tag target allow-ssh
.
Konsol
- Pada konsol Google Cloud, buka halaman Kebijakan Firewall.
Buka kebijakan Firewall - Klik Create firewall rule untuk membuat aturan guna mengizinkan koneksi
SSH masuk:
- Name:
allow-ssh
- Jaringan:
lb-network
- Arah traffic: Ingress
- Tindakan jika kecocokan: Izinkan
- Targets: Tag target yang ditentukan
- Tag target:
allow-ssh
- Filter sumber: Rentang IPv4
- Rentang IPv4 sumber:
0.0.0.0/0
- Protokol dan port:
- Pilih Specified protocols and ports.
- Pilih kotak centang TCP, lalu masukkan
22
untuk nomor port.
- Name:
- Klik Create.
gcloud
Buat aturan firewall
fw-allow-ssh
untuk mengizinkan konektivitas SSH ke VM dengan tag jaringanallow-ssh
. Saat Anda menghapussource-ranges
, Google Cloud akan menafsirkan aturan sebagai sumber apa pun.gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
Mengirim traffic ke load balancer
Mungkin perlu waktu beberapa menit sampai konfigurasi load balancer diterapkan setelah Anda pertama kali men-deploy-nya.
Menghubungkan ke instance klien melalui SSH.
gcloud compute ssh vm-client \ --zone=ZONE
Pastikan load balancer menayangkan halaman beranda layanan Cloud Run seperti yang diharapkan.
Untuk pengujian HTTP, jalankan:
curl IP_ADDRESS
Untuk pengujian HTTPS, jalankan:
curl -k -s 'https://TEST_DOMAIN_URL:443' --connect-to TEST_DOMAIN_URL:443:IP_ADDRESS:443
Ganti TEST_DOMAIN_URL dengan domain yang terkait dengan aplikasi Anda. Contoh,
test.example.com
.Flag
-k
menyebabkan curl melewati validasi sertifikat.
Opsi konfigurasi tambahan
Bagian ini memperluas contoh konfigurasi untuk memberikan opsi konfigurasi alternatif dan tambahan. Semua tugas bersifat opsional. Anda dapat melakukannya dalam urutan apa pun.
Menggunakan mask URL
Saat membuat NEG serverless, daripada memilih layanan Cloud Run tertentu, Anda dapat menggunakan URL mask untuk mengarah ke beberapa layanan yang dilayani di domain yang sama. Masker URL adalah template skema URL. NEG serverless menggunakan template ini untuk mengekstrak nama layanan dari URL permintaan masuk dan memetakan permintaan ke layanan yang sesuai.
Masker URL sangat berguna jika layanan Anda dipetakan ke domain kustom, bukan ke alamat default yang disediakan Google Cloud untuk layanan yang di-deploy. Masker URL memungkinkan Anda menargetkan beberapa layanan dan versi dengan satu aturan meskipun aplikasi Anda menggunakan pola URL kustom.
Jika Anda belum melakukannya, pastikan Anda membaca Ringkasan NEG Tanpa Server: URL Mask.
Membuat mask URL
Untuk membuat mask URL bagi load balancer, mulailah dengan URL layanan
Anda. Contoh ini menggunakan contoh aplikasi serverless yang berjalan di https://example.com/login
. Ini adalah URL tempat layanan login
aplikasi
disajikan.
- Hapus
http
atauhttps
dari URL. Anda memilikiexample.com/login
. - Ganti nama layanan dengan placeholder untuk URL mask.
- Cloud Run: Ganti nama layanan Cloud Run dengan placeholder
<service>
. Jika layanan Cloud Run memiliki tag yang terkait dengannya, ganti nama tag dengan placeholder<tag>
. Dalam contoh ini, mask URL yang Anda miliki adalahexample.com/<service>
.
- Cloud Run: Ganti nama layanan Cloud Run dengan placeholder
Opsional: Jika nama layanan dapat diekstrak dari bagian jalur URL, domain tersebut dapat dihilangkan. Bagian jalur mask URL dibedakan dengan karakter garis miring pertama (
/
). Jika tidak ada garis miring (/
) dalam mask URL, mask akan dianggap mewakili host saja. Oleh karena itu, untuk contoh ini, mask URL dapat dikurangi menjadi/<service>
.Demikian pula, jika
<service>
dapat diekstrak dari bagian host URL, Anda dapat menghilangkan jalur sepenuhnya dari mask URL.Anda juga dapat menghilangkan komponen host atau subdomain yang muncul sebelum placeholder pertama dan komponen jalur apa pun yang muncul setelah placeholder terakhir. Dalam kasus tersebut, placeholder mencatat informasi yang diperlukan untuk komponen.
Berikut adalah beberapa contoh lain yang menunjukkan aturan tersebut:
Tabel ini mengasumsikan bahwa Anda memiliki domain kustom bernama example.com
dan semua layanan Cloud Run Anda sedang dipetakan ke domain ini.
Layanan, Nama tag | URL domain kustom Cloud Run | Masker URL |
---|---|---|
layanan: login | https://login-home.example.com/web | <layanan>-home.example.com |
layanan: login | https://example.com/login/web | example.com/<service> atau /<service> |
service: login, tag: uji | https://test.login.example.com/web | <tag>.<layanan>.example.com |
service: login, tag: uji | https://example.com/home/login/test | example.com/home/<service>/<tag> atau /home/<service>/<tag> |
service: login, tag: uji | https://test.example.com/home/login/web | <tag>.example.com/home/<layanan> |
Membuat NEG serverless dengan mask URL
Konsol
Untuk load balancer baru, Anda dapat menggunakan proses menyeluruh yang sama seperti yang dijelaskan sebelumnya dalam dokumen ini. Saat mengonfigurasi layanan backend, masukkan mask URL, bukan memilih layanan tertentu.
Jika sudah memiliki load balancer, Anda dapat mengedit konfigurasi backend dan mengarahkan NEG serverless ke URL mask, bukan layanan tertentu.
Untuk menambahkan NEG serverless berbasis mask URL ke layanan backend yang ada, lakukan hal berikut:
- Di Konsol Google Cloud, buka halaman Load balancing.
Buka Load balancing - Klik nama load balancer yang memiliki layanan backend yang ingin diedit.
- Di halaman Load balancer details, klik Edit.
- Di halaman Edit global external Application Load Balancer, klik Backend configuration.
- Di halaman Backend configuration, klik Edit untuk layanan backend yang ingin diubah.
- Klik Add backend.
- Pilih Create Serverless network endpoint group.
- Untuk Name, masukkan
helloworld-serverless-neg
. - Di bagian Region, region load balancer ditampilkan.
- Pada bagian Serverless network endpoint group type, Cloud Run adalah satu-satunya jenis grup endpoint jaringan yang didukung.
- Pilih Gunakan Masker URL.
- Masukkan mask URL. Untuk informasi tentang cara membuat mask URL, lihat Membuat mask URL.
- Klik Create.
- Di New backend, klik Done.
- Klik Perbarui.
gcloud
Untuk membuat NEG serverless dengan contoh URL mask
example.com/<service>
:
gcloud compute network-endpoint-groups create SERVERLESS_NEG_MASK_NAME \ --region=REGION \ --network-endpoint-type=serverless \ --cloud-run-url-mask="example.com/<service>"
Menghapus NEG serverless
Grup endpoint jaringan tidak dapat dihapus jika dipasang ke layanan backend. Sebelum Anda menghapus NEG, pastikan NEG dilepas dari layanan backend.
Konsol
- Untuk memastikan NEG serverless yang ingin Anda hapus tidak digunakan oleh layanan backend mana pun, buka tab Backend services di halaman Load balancing components.
Buka layanan Backend - Jika NEG serverless sedang digunakan, lakukan hal berikut:
- Klik nama layanan backend yang menggunakan NEG serverless.
- Klik Edit.
- Dari daftar Backend, klik untuk menghapus backend NEG serverless dari layanan backend.
- Klik Save.
- Buka halaman Grup endpoint jaringan di Konsol Google Cloud.
Buka Grup endpoint jaringan - Pilih kotak centang untuk NEG serverless yang ingin Anda hapus.
- Klik Delete.
- Klik Delete lagi untuk mengonfirmasi.
gcloud
Untuk menghapus NEG serverless dari layanan backend, Anda harus menentukan region tempat NEG dibuat.
gcloud compute backend-services remove-backend BACKEND_SERVICE_NAME \ --network-endpoint-group=SERVERLESS_NEG_NAME \ --network-endpoint-group-region=REGION \ --region=REGION
Untuk menghapus NEG serverless:
gcloud compute network-endpoint-groups delete SERVERLESS_NEG_NAME \ --region=REGION
Langkah selanjutnya
- Men-deploy Load Balancer Aplikasi internal regional dengan Cloud Run menggunakan Terraform
- Membersihkan penyiapan load balancing
- Akses VPC Bersama
- Logging dan pemantauan Load Balancer Aplikasi internal regional
- Memecahkan masalah terkait Load Balancer Aplikasi internal regional