Menyiapkan Load Balancer Aplikasi eksternal regional dengan Cloud Run

Halaman ini menunjukkan cara men-deploy Load Balancer Aplikasi eksternal regional dengan backend Cloud Run. Untuk menyiapkannya, Anda menggunakan backend NEG serverless untuk load balancer.

Sebelum mencoba prosedur ini, pastikan Anda memahami topik berikut:

Panduan ini menunjukkan cara mengonfigurasi Load Balancer Aplikasi yang mem-proxy permintaan ke backend NEG tanpa server.

NEGless 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. Deploy layanan Cloud Run.
  3. Mengonfigurasi izin.

Menginstal Google Cloud SDK

Instal alat Google Cloud CLI. Lihat ringkasan gcloud untuk mengetahui informasi konseptual dan penginstalan tentang alat ini.

Jika Anda belum menjalankan gcloud CLI sebelumnya, jalankan gcloud init terlebih dahulu untuk melakukan inisialisasi direktori gcloud.

Men-deploy layanan Cloud Run

Petunjuk di halaman ini mengasumsikan bahwa Anda sudah memiliki layanan Cloud Run yang berjalan.

Untuk contoh di halaman ini, Anda dapat menggunakan salah satu panduan memulai Cloud Run untuk men-deploy layanan Cloud Run.

NEG serverless dan load balancer harus berada di region yang sama dengan layanan Cloud Run. Anda dapat memblokir permintaan eksternal yang dikirim langsung ke URL default layanan Cloud Run dengan membatasi traffic masuk ke internal and cloud load balancing. Contoh:

gcloud run deploy CLOUD_RUN_SERVICE_NAME \
    --platform=managed \
    --allow-unauthenticated \
    --ingress=internal-and-cloud-load-balancing \
    --region=REGION \
    --image=IMAGE_URL

Catat nama layanan yang Anda buat. Bagian selanjutnya di halaman ini menunjukkan cara menyiapkan load balancer yang merutekan permintaan ke layanan ini.

Konfigurasikan izin

Untuk mengikuti panduan ini, Anda perlu membuat NEG tanpa server dan membuat load balancer dalam sebuah project. Anda harus menjadi pemilik atau editor project, atau memiliki peran dan izin 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 akan melakukan tugas berikut:

  • Buat jaringan VPC dan subnet.
  • Buat subnet khusus proxy.

Membuat jaringan VPC

Buat jaringan VPC mode kustom, lalu subnet yang Anda inginkan dalam suatu 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 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 jaringan VPC

  2. Klik nama jaringan VPC Bersama tempat Anda ingin menambahkan subnet khusus proxy.

  3. Klik Tambahkan subnet.

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

  5. Pilih Region.

  6. Tetapkan Tujuan ke Proxy yang Dikelola Berdasarkan Wilayah.

  7. Masukkan rentang alamat IP sebagai 10.129.0.0/23.

  8. Klik Tambahkan.

gcloud

  1. Buat subnet khusus proxy 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 tanpa server untuk mengarahkan permintaan ke layanan Cloud Run tanpa server.

Traffic yang berasal dari load balancer ke backend NEG serverless menggunakan rute khusus yang ditentukan di luar VPC Anda dan 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.

Arsitektur load balancing HTTP(S) eksternal regional untuk aplikasi Cloud Run.
Arsitektur load balancing HTTP(S) eksternal regional untuk aplikasi Cloud Run (klik untuk memperbesar).

Konsol

Memulai konfigurasi

  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 Public facing or internal, pilih Public facing (external), lalu klik Next.
  5. Untuk Global or single region deployment, pilih Best for regional workloads, 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 eksternal regional, isi kolom sebagai berikut.
    1. Di bagian Protocol, pilih HTTPS.
    2. Di bagian Network service tier, pilih Standard.
    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 tindakan berikut:
    1. Di bagian Protocol, pilih HTTP.
    2. Di bagian Network service tier, pilih Standard.
    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 di atas 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 Protokol. 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 akan 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 buat load balancer-nya.
    6. Klik Done.
    7. Klik Create.
  7. Di jendela Create backend service, klik Create.

Mengonfigurasi aturan pemilihan rute

Aturan perutean 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, Host and Path rules, dan 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. Cadangkan alamat IP eksternal statis untuk load balancer.
        gcloud compute addresses create IP_ADDRESS_NAME  \
            --region=REGION \
            --network-tier=STANDARD
        
  2. Buat NEG tanpa server 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
        
  3. Buat layanan backend regional. Tetapkan --protocol ke HTTP. Parameter ini diabaikan, tetapi diperlukan karena --protocol secara default ditetapkan ke TCP.
        gcloud compute backend-services create BACKEND_SERVICE_NAME \
            --load-balancing-scheme=EXTERNAL_MANAGED \
            --protocol=HTTP \
            --region=REGION
        
  4. Tambahkan NEG tanpa server 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
        
  5. 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.
  6. 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 Pengelola Sertifikat:

    • Sertifikat yang dikelola sendiri secara regional. Untuk 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 Pengelola Sertifikat:

    • Setelah membuat sertifikat, lampirkan sertifikat langsung ke proxy target.

      Untuk membuat resource sertifikat SSL regional yang dikelola sendiri:
          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 ini merupakan 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. Untuk load balancer HTTP:
          gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \
              --load-balancing-scheme=EXTERNAL_MANAGED \
              --network-tier=STANDARD \
              --network=lb-network \
              --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=EXTERNAL_MANAGED \
              --network-tier=STANDARD \
              --network=lb-network \
              --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 mengirimkan traffic ke alamat IP load balancer.

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

    Buka Load balancing

  2. Klik load balancer yang baru saja Anda buat.

  3. Catat alamat IP load balancer internal.

  4. Untuk load balancer HTTP, Anda dapat menguji load balancer menggunakan browser web dengan membuka http://IP_ADDRESS. Ganti IP_ADDRESS dengan alamat IP load balancer. Anda akan diarahkan ke halaman beranda layanan Cloud Run.

  5. Untuk load balancer HTTPS, Anda dapat menguji load balancer menggunakan browser web dengan membuka https://IP_ADDRESS. Ganti IP_ADDRESS dengan alamat IP load balancer. Anda akan diarahkan ke halaman beranda layanan Cloud Run.
    Jika Anda menggunakan sertifikat yang ditandatangani sendiri untuk pengujian, browser akan menampilkan peringatan. Anda harus secara eksplisit memerintahkan browser untuk menerima sertifikat yang ditandatangani sendiri. Klik peringatan untuk melihat halaman sebenarnya.

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 masker URL

Saat membuat NEG tanpa server, Anda dapat menggunakan masker URL untuk mengarah ke beberapa layanan yang ditayangkan di domain yang sama, bukan memilih layanan Cloud Run tertentu. Masker URL adalah template skema URL Anda. NEG tanpa server menggunakan template ini untuk mengekstrak nama layanan dari URL permintaan yang 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 NEGS Serverless: Masker URL.

Membuat masker URL

Untuk membuat mask URL untuk load balancer, mulailah dengan URL layanan Anda. Contoh ini menggunakan aplikasi serverless contoh yang berjalan di https://example.com/login. Ini adalah URL tempat layanan login aplikasi ditayangkan.

  1. Hapus http atau https dari URL. Anda memiliki example.com/login.
  2. Ganti nama layanan dengan placeholder untuk mask URL.
    • 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, masker URL yang Anda miliki adalah example.com/<service>.
  3. Opsional: Jika nama layanan dapat diekstrak dari bagian jalur URL, domain dapat dihilangkan. Bagian jalur dari mask URL dibedakan oleh karakter garis miring (/) pertama. Jika garis miring (/) tidak ada dalam mask URL, mask tersebut dipahami hanya mewakili host. Oleh karena itu, untuk contoh ini, mask URL dapat dikurangi menjadi /<service>.

    Demikian pula, jika <service> dapat diekstrak dari bagian host URL, Anda dapat menghapus jalur sepenuhnya dari mask URL.

    Anda juga dapat menghapus komponen host atau subdomain yang muncul sebelum placeholder pertama serta komponen jalur yang muncul setelah placeholder terakhir. Dalam kasus tersebut, placeholder akan mengambil informasi yang diperlukan untuk komponen.

Berikut beberapa contoh lainnya yang menunjukkan aturan ini:

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
service: login https://login-home.example.com/web <service>-home.example.com
service: login https://example.com/login/web example.com/<service> atau /<service>
service: login, tag: test https://test.login.example.com/web <tag>.<service>.example.com
service: login, tag: test https://example.com/home/login/test example.com/home/<service>/<tag> atau /home/<service>/<tag>
service: login, tag: test https://test.example.com/home/login/web <tag>.example.com/home/<service>

Membuat NEG tanpa server dengan masker 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 masker URL, bukan layanan tertentu.

Untuk menambahkan NEG tanpa server berbasis mask URL ke layanan backend yang ada, lakukan tindakan berikut:

  1. Di konsol Google Cloud, buka halaman Load balancing.
    Buka Load balancing
  2. Klik nama load balancer yang memiliki layanan backend yang ingin Anda edit.
  3. Di halaman Detail load balancer, 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 Anda ubah.
  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 akan ditampilkan.
    3. Di bagian Serverless network endpoint group type, Cloud Run adalah satu-satunya jenis grup endpoint jaringan yang didukung.
      1. Pilih Gunakan Masker URL.
      2. Masukkan masker URL. Untuk mengetahui informasi tentang cara membuat mask URL, lihat Membuat mask URL.
      3. Klik Create.

  8. Di Backend baru, klik Selesai.
  9. Klik Perbarui.

gcloud

Untuk membuat NEG tanpa server dengan contoh masker URL 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 dilampirkan ke layanan backend. Sebelum Anda menghapus NEG, pastikan NEG tersebut dilepaskan dari layanan backend.

Konsol

  1. Untuk memastikan NEG tanpa server yang ingin Anda hapus tidak digunakan oleh layanan backend apa pun, buka tab Layanan backend di halaman Komponen load balancing.
    Buka Layanan backend
  2. Jika NEG serverless sedang digunakan, lakukan hal berikut:
    1. Klik nama layanan backend yang menggunakan NEG tanpa server.
    2. Klik Edit.
    3. Dari daftar Backends, klik untuk menghapus backend NEG tanpa server dari layanan backend.
    4. Klik Simpan.

  3. Buka halaman Network endpoint group di konsol Google Cloud.
    Buka Network endpoint group
  4. Centang kotak untuk NEG serverless yang ingin Anda hapus.
  5. Klik Hapus.
  6. Klik Delete lagi untuk mengonfirmasi.

gcloud

Untuk menghapus NEG tanpa server 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 tanpa server:

gcloud compute network-endpoint-groups delete SERVERLESS_NEG_NAME \
    --region=REGION

Langkah selanjutnya