Menyiapkan Load Balancer Aplikasi internal regional dengan Cloud Run

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

  1. Instal Google Cloud CLI.
  2. Men-deploy layanan Cloud Run.
  3. Mengonfigurasi izin.

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.

Catatan: Anda tidak dapat menggunakan Konsol Google Cloud untuk menyiapkan Load Balancer Aplikasi internal dengan backend NEG serverless.

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

  1. Di Konsol Google Cloud, buka halaman jaringan VPC.

    Buka VPC networks

  2. Klik Create VPC network.

  3. Untuk Name, masukkan lb-network.

  4. Untuk Mode pembuatan subnet, klik Kustom.

  5. Di bagian New subnet tentukan parameter konfigurasi berikut untuk subnet:

    1. Untuk Name, masukkan lb-subnet.
    2. Pilih Region.
    3. Untuk Rentang alamat IP, masukkan 10.1.2.0/24.
    4. Klik Done.
  6. Klik Create.

gcloud

  1. Buat jaringan VPC kustom dengan menggunakan perintah gcloud compute networks create:

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Buat subnet di jaringan lb-network. Contoh ini menggunakan rentang alamat IP 10.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

  1. Di Konsol Google Cloud, buka halaman jaringan VPC.

    Buka VPC networks

  2. Klik nama jaringan VPC Bersama yang ingin Anda tambahi subnet khusus proxy.

  3. Klik Tambahkan subnet.

  4. Di kolom Name, masukkan proxy-only-subnet.

  5. Pilih Region.

  6. Tetapkan Destination ke Regional Managed Proxy.

  7. Masukkan rentang alamat IP sebagai 10.129.0.0/23.

  8. Klik Tambahkan.

gcloud

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

Arsitektur load balancing HTTP(S) internal untuk aplikasi Cloud Run.
Arsitektur load balancing HTTP(S) internal untuk aplikasi Cloud Run.

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

  1. Di Konsol Google Cloud, buka halaman Load balancing.

    Buka Load balancing

  2. Klik Create load balancer.
  3. Untuk Type of load balancer, pilih Application Load Balancer (HTTP/HTTPS) lalu klik Next.
  4. Untuk Terhadap publik atau internal, pilih Internal, lalu klik Berikutnya.
  5. Untuk Cross-region or single region deployment, pilih Best for regional working, lalu klik Next.
  6. Klik Konfigurasikan.

Konfigurasi dasar

  1. Untuk nama load balancer, masukkan serverless-lb.
  2. Pilih Network sebagai lb_network.
  3. Biarkan jendela tetap terbuka untuk melanjutkan.

Mengonfigurasi frontend

  1. Sebelum melanjutkan, pastikan Anda memiliki sertifikat SSL.
  2. Klik Frontend configuration.
  3. Masukkan Nama.
  4. Untuk mengonfigurasi Load Balancer Aplikasi internal, isi kolom sebagai berikut.
    1. Di bagian Protocol, pilih HTTPS.
    2. Di bagian Subnetwork, pilih subnetwork.
    3. Di bagian IP version, pilih IPv4.
    4. Di bagian IP address, pilih Ephemeral.
    5. Di bagian Port, pilih 443.
    6. Di bagian Certificate, pilih sertifikat SSL yang ada atau buat sertifikat baru.

      Contoh berikut menunjukkan cara membuat sertifikat SSL Compute Engine:

    7. Klik Buat sertifikat baru.
      1. Di kolom Name, masukkan nama.
      2. Di kolom yang sesuai, upload file berformat PEM:
        • Certificate
        • Private key
      3. Klik Create.

    Jika ingin menguji proses ini tanpa menyiapkan resource sertifikat SSL, Anda dapat menyiapkan load balancer HTTP.

  5. Opsional: Untuk membuat load balancer HTTP, lakukan hal berikut:
    1. Di bagian Protocol, pilih HTTP.
    2. Di bagian Subnetwork, pilih subnetwork.
    3. Di bagian IP version, pilih IPv4.
    4. Di bagian IP address, pilih Ephemeral.
    5. Di bagian Port, pilih 80.
  6. Klik Done.

Mengonfigurasi layanan backend

  1. Klik Backend configuration.
  2. Di menu drop-down Create or select backend services, tahan kursor ke Backend services, lalu pilih Create a backend service.
  3. Di jendela Create a backend service, masukkan Name.
  4. Di bagian Backend type, pilih Serverless network endpoint group.
  5. Jangan ubah Protocol. Parameter ini diabaikan.
  6. Di bagian Backends > New backend, pilih Create serverless network endpoint group.
    1. Di jendela Create serverless network endpoint group, masukkan Name.
    2. Di bagian Region, region load balancer ditampilkan.
    3. Dari kolom Serverless network endpoint group type, pilih Cloud Run. Cloud Run adalah satu-satunya jenis yang didukung.
    4. Pilih Pilih nama layanan.
    5. Dari menu drop-down Service, pilih layanan Cloud Run yang ingin Anda buatkan load balancer.
    6. Klik Done.
    7. Klik Create.
  7. 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.

  1. Klik Simple host and path rule.
  2. Pilih layanan backend dari menu drop-down Backend.

Meninjau konfigurasi

  1. Klik Review and finalize.
  2. Tinjau nilai untuk Backend, Aturan Host dan Path, serta Frontend.
  3. Opsional: Klik Equivalent Code untuk melihat permintaan REST API yang akan digunakan untuk membuat load balancer.
  4. Klik Create. Tunggu load balancer dibuat.
  5. Klik nama load balancer (serverless-lb).
  6. Catat alamat IP load balancer untuk tugas berikutnya.

gcloud

  1. 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
        
  2. 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
        
  3. 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
        
  4. 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.
  5. 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:

    • 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

  1. Pada konsol Google Cloud, buka halaman Kebijakan Firewall.
    Buka kebijakan Firewall
  2. 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.
  3. Klik Create.

gcloud

  1. Buat aturan firewall fw-allow-ssh untuk mengizinkan konektivitas SSH ke VM dengan tag jaringan allow-ssh. Saat Anda menghapus source-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.

  1. Hapus http atau https dari URL. Anda memiliki example.com/login.
  2. 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 adalah example.com/<service>.
  3. 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:

  1. Di Konsol Google Cloud, buka halaman Load balancing.
    Buka Load balancing
  2. Klik nama load balancer yang memiliki layanan backend yang ingin diedit.
  3. Di halaman Load balancer details, klik Edit.
  4. Di halaman Edit global external Application Load Balancer, klik Backend configuration.
  5. Di halaman Backend configuration, klik Edit untuk layanan backend yang ingin diubah.
  6. Klik Add backend.
  7. Pilih Create Serverless network endpoint group.
    1. Untuk Name, masukkan helloworld-serverless-neg.
    2. Di bagian Region, region load balancer ditampilkan.
    3. Pada bagian Serverless network endpoint group type, Cloud Run adalah satu-satunya jenis grup endpoint jaringan yang didukung.
      1. Pilih Gunakan Masker URL.
      2. Masukkan mask URL. Untuk informasi tentang cara membuat mask URL, lihat Membuat mask URL.
      3. Klik Create.

  8. Di New backend, klik Done.
  9. 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

  1. 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
  2. Jika NEG serverless sedang digunakan, lakukan hal berikut:
    1. Klik nama layanan backend yang menggunakan NEG serverless.
    2. Klik Edit.
    3. Dari daftar Backend, klik untuk menghapus backend NEG serverless dari layanan backend.
    4. Klik Save.

  3. Buka halaman Grup endpoint jaringan di Konsol Google Cloud.
    Buka Grup endpoint jaringan
  4. Pilih kotak centang untuk NEG serverless yang ingin Anda hapus.
  5. Klik Delete.
  6. 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