Menyiapkan Cloud Run, Cloud Functions, atau App Engine

Halaman ini menunjukkan cara membuat Load Balancer Aplikasi eksternal untuk merutekan permintaan ke backend serverless. Di sini, istilah serverless mengacu pada produk komputasi serverless berikut:

  • App Engine
  • Cloud Run Functions
  • Cloud Run

Integrasi Load Balancer Aplikasi eksternal dengan API Gateway memungkinkan backend serverless Anda memanfaatkan semua fitur yang disediakan oleh Cloud Load Balancing. Untuk mengonfigurasi Load Balancer Aplikasi eksternal guna merutekan traffic ke API Gateway, lihat Mulai menggunakan Load Balancer Aplikasi eksternal untuk API Gateway. Dukungan Load Balancer Aplikasi Eksternal untuk API Gateway tersedia dalam Pratinjau.

NEG serverless memungkinkan Anda menggunakan Google Cloud aplikasi serverless dengan Load Balancer Aplikasi eksternal. Setelah Anda mengonfigurasi load balancer dengan backend NEG serverless, permintaan ke load balancer akan dirutekan ke backend aplikasi serverless.

Untuk mempelajari lebih lanjut NEG serverless, baca ringkasan NEG serverless.

Sebelum memulai

  1. Deploy fungsi App Engine, Cloud Run, atau layanan Cloud Run.
  2. Jika Anda belum melakukannya, instal Google Cloud CLI.
  3. Konfigurasi izin.
  4. Tambahkan resource sertifikat SSL.

Men-deploy App Engine, Cloud Run Functions, atau layanan Cloud Run

Petunjuk di halaman ini mengasumsikan bahwa Anda sudah menjalankan layanan Cloud Run, Cloud Run Functions, atau App Engine.

Untuk contoh di halaman ini, kami telah menggunakan Panduan memulai Python Cloud Run untuk men-deploy layanan Cloud Run di region us-central1. Bagian selanjutnya di halaman ini menunjukkan cara menyiapkan Load Balancer Aplikasi eksternal yang menggunakan backend NEG tanpa server untuk merutekan permintaan ke layanan ini.

Jika Anda belum men-deploy aplikasi serverless, atau jika Anda ingin mencoba NEG serverless dengan aplikasi contoh, gunakan salah satu panduan memulai berikut. Anda dapat membuat aplikasi serverless di region mana pun, tetapi Anda harus menggunakan region yang sama nanti untuk membuat NEG serverless dan load balancer.

Cloud Run

Untuk membuat aplikasi Hello World sederhana, kemas ke dalam image container, lalu deploy image container ke Cloud Run, lihat Mulai Cepat: Membangun dan Men-deploy.

Jika Anda sudah mengupload container contoh ke Container Registry, lihat Panduan memulai: Men-deploy Container Contoh Bawaan.

Cloud Run Functions

Lihat Cloud Run functions: Python Quickstart.

App Engine

Lihat panduan memulai App Engine berikut untuk Python 3:

Menginstal Google Cloud CLI.

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

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

Konfigurasikan izin

Untuk mengikuti panduan ini, Anda perlu membuat NEG tanpa server dan membuat load balancer HTTP(S) eksternal 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

Mencadangkan alamat IP eksternal

Setelah layanan Anda aktif dan berjalan, siapkan alamat IP eksternal statis global yang akan digunakan pelanggan untuk menjangkau load balancer Anda.

Konsol

  1. Di konsol Google Cloud , buka halaman External IP addresses.

    Buka External IP addresses

  2. Klik Reserve external static IP address.

  3. Untuk Name, masukkan example-ip.

  4. Untuk Network service tier, pilih Premium.

  5. Untuk IP version, pilih IPv4.

  6. Untuk Type, pilih Global.

  7. Klik Reserve.

gcloud

gcloud compute addresses create EXAMPLE_IP \
    --network-tier=PREMIUM \
    --ip-version=IPV4 \
    --global

Perhatikan alamat IPv4 yang dicadangkan:

gcloud compute addresses describe EXAMPLE_IP \
    --format="get(address)" \
    --global

Ganti EXAMPLE_IP dengan nama alamat IP.

Membuat resource sertifikat SSL

Untuk membuat load balancer HTTPS, Anda harus menambahkan resource sertifikat SSL ke front end load balancer. Buat resource sertifikat SSL menggunakan sertifikat SSL yang dikelola Google atau sertifikat SSL yang dikelola sendiri.

  • Sertifikat yang dikelola Google. Sebaiknya gunakan sertifikat yang dikelola Google karena Google Cloud memperoleh, mengelola, dan memperpanjang sertifikat ini secara otomatis. Untuk membuat sertifikat yang dikelola Google, Anda harus memiliki domain dan data DNS untuk domain tersebut agar sertifikat dapat disediakan.

    Selain itu, Anda perlu memperbarui data A DNS domain agar mengarah ke alamat IP load balancer yang dibuat di langkah sebelumnya. Jika Anda memiliki beberapa domain dalam sertifikat yang dikelola Google, Anda harus memperbarui data DNS untuk semua domain dan subdomain agar mengarah ke alamat IP load balancer Anda. Untuk petunjuk mendetail, lihat Menggunakan sertifikat yang dikelola Google.

  • Sertifikat yang ditandatangani sendiri. Jika tidak ingin menyiapkan domain saat ini, Anda dapat menggunakan sertifikat SSL yang ditandatangani sendiri untuk pengujian.

Contoh ini mengasumsikan bahwa Anda telah membuat resource sertifikat SSL.

Jika ingin menguji proses ini tanpa membuat resource sertifikat SSL (atau domain seperti yang diwajibkan oleh sertifikat yang dikelola Google), Anda tetap dapat menggunakan petunjuk di halaman ini untuk menyiapkan load balancer HTTP.

Membuat load balancer

Dalam diagram berikut, load balancer menggunakan backend NEG serverless untuk mengarahkan permintaan ke layanan Cloud Run serverless. Untuk contoh ini, kita telah menggunakan panduan memulai Python Cloud Run untuk men-deploy layanan Cloud Run.

Arsitektur Load Balancer Aplikasi eksternal untuk aplikasi Cloud Run.
Arsitektur Load Balancer Aplikasi eksternal untuk aplikasi Cloud Run (klik untuk memperbesar).

Karena health check tidak didukung untuk layanan backend dengan backend NEG serverless, Anda tidak perlu membuat aturan firewall yang mengizinkan health check jika load balancer hanya memiliki backend NEG serverless.

Konsol

Mulai 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 global workloads, lalu klik Next.
  6. Untuk Load balancer generation, pilih Classic Application Load Balancer, lalu klik Next.
  7. Klik Configure.

Konfigurasi dasar

  1. Untuk nama load balancer, masukkan serverless-lb.
  2. Biarkan jendela tetap terbuka untuk melanjutkan.

Konfigurasi frontend

  1. Klik Frontend configuration.
  2. Untuk Name, masukkan nama.
  3. Untuk membuat load balancer HTTPS, Anda harus memiliki sertifikat SSL (gcloud compute ssl-certificates list).

    Sebaiknya gunakan sertifikat yang dikelola Google seperti yang dijelaskan sebelumnya.

  4. Untuk mengonfigurasi Load Balancer Aplikasi eksternal, isi kolom sebagai berikut.

    Pastikan opsi berikut dikonfigurasi dengan nilai ini:

    Properti Nilai (masukkan nilai atau pilih opsi yang ditentukan)
    Protokol HTTPS
    Network Service Tier Premium
    IP version IPv4
    Alamat IP example-ip
    Port 443
    Sertifikat Pilih sertifikat SSL yang ada atau buat sertifikat baru.

    Untuk membuat load balancer HTTPS, Anda harus memiliki resource sertifikat SSL untuk digunakan di proxy HTTPS. Anda dapat membuat resource sertifikat SSL menggunakan sertifikat SSL yang dikelola Google atau sertifikat SSL yang dikelola sendiri.
    Untuk membuat sertifikat yang dikelola Google, Anda harus memiliki domain. Data A domain harus di-resolve ke alamat IP load balancer yang Anda buat sebelumnya dalam prosedur ini. Sebaiknya gunakan sertifikat yang dikelola Google karena Google Cloud memperoleh, mengelola, dan memperpanjang sertifikat ini secara otomatis. Google Cloud Jika tidak memiliki domain, Anda dapat menggunakan sertifikat SSL yang ditandatangani sendiri untuk pengujian.
    Opsional: Aktifkan Pengalihan HTTP ke HTTPS Gunakan kotak centang ini untuk mengaktifkan pengalihan HTTP ke HTTPS.

    Dengan mencentang kotak ini, load balancer HTTP parsial tambahan akan dibuat yang menggunakan alamat IP yang sama dengan load balancer HTTPS Anda dan mengalihkan permintaan HTTP ke frontend HTTPS load balancer Anda.

    Kotak centang ini hanya dapat dipilih jika protokol HTTPS dipilih dan alamat IP yang dicadangkan digunakan.

  5. Klik Selesai.

Konfigurasi backend

  1. Klik Backend configuration.
  2. Di daftar Backend services & backend buckets, klik Create a backend service.
  3. Untuk Name, masukkan nama.
  4. Di Backend type, pilih Serverless network endpoint group.
  5. Jangan ubah Protocol. Parameter ini diabaikan.
  6. Di bagian Backends, untuk New backend, pilih Create Serverless network endpoint group.
  7. Untuk Name, masukkan nama.
  8. Klik Buat.
  9. Di bagian New backend, klik Done.
  10. Pilih Aktifkan Cloud CDN.
  11. Opsional: Ubah setelan mode cache dan TTL.
  12. Klik Buat.

Aturan perutean

Aturan perutean menentukan cara pengarahan traffic Anda. Untuk mengonfigurasi pemilihan rute, Anda akan menyiapkan aturan host dan pencocok jalur, yang merupakan komponen konfigurasi peta URL Load Balancer Aplikasi eksternal.

  1. Klik Host and path rules.

  2. Pertahankan host dan jalur default. Untuk contoh ini, semua permintaan akan ditujukan ke layanan backend yang dibuat pada langkah sebelumnya.

Meninjau konfigurasi

  1. Klik Review and finalize.
  2. Tinjau semua setelan.
  3. Opsional: Klik Equivalent Code untuk melihat permintaan REST API yang akan digunakan untuk membuat load balancer.
  4. Klik Buat.
  5. Tunggu load balancer dibuat.
  6. Klik nama load balancer (serverless-lb).
  7. Catat alamat IP load balancer untuk tugas berikutnya. Fitur ini disebut sebagai IP_ADDRESS.

gcloud

  1. Buat NEG tanpa server untuk aplikasi tanpa server Anda. Untuk opsi lainnya, lihat panduan referensi gcloud untuk gcloud compute network-endpoint-groups create.
  2. Buat layanan backend.
       gcloud compute backend-services create BACKEND_SERVICE_NAME \
           --load-balancing-scheme=LOAD_BALANCING_SCHEME \
           --global \
           --enable-cdn \
           --cache-mode=CACHE_MODE \
           --custom-response-header='Cache-Status: {cdn_cache_status}' \
           --custom-response-header='Cache-ID: {cdn_cache_id}'
       

    Tetapkan mode cache dengan mengganti CACHE_MODE dengan salah satu dari berikut ini:

    • CACHE_All_STATIC (default): Otomatis menyimpan dalam cache konten statis.
    • USE_ORIGIN_HEADERS: Mewajibkan asal untuk menetapkan header valid caching untuk menyimpan konten dalam cache.
    • FORCE_CACHE_ALL: Meng-cache semua konten, mengabaikan semua private, no-store, atau no-cache dalam header respons Cache-Control.

    Untuk mengetahui informasi tentang direktif cache yang dipahami Cloud CDN dan konten yang tidak di-cache oleh Cloud CDN, lihat Konten yang dapat di-cache dan Konten yang tidak dapat di-cache.

  3. Tambahkan NEG tanpa server sebagai backend ke layanan backend:
       gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
           --global \
           --network-endpoint-group=SERVERLESS_NEG_NAME \
           --network-endpoint-group-region=us-central1
       
  4. Buat peta URL untuk mengarahkan permintaan masuk ke layanan backend:
       gcloud compute url-maps create URL_MAP_NAME \
           --default-service BACKEND_SERVICE_NAME
       

    Peta URL contoh ini hanya menargetkan satu layanan backend yang merepresentasikan satu aplikasi serverless, jadi kita tidak perlu menyiapkan aturan host atau pencocok jalur. Jika memiliki lebih dari satu layanan backend, Anda dapat menggunakan aturan host untuk mengarahkan permintaan ke layanan yang berbeda berdasarkan nama host, dan Anda dapat menyiapkan pencocok jalur untuk mengarahkan permintaan ke layanan yang berbeda berdasarkan jalur permintaan.

  5. Untuk membuat load balancer HTTPS, Anda harus memiliki resource sertifikat SSLuntuk digunakan di proxy target HTTPS. Anda dapat membuat resource sertifikat SSL menggunakan sertifikat SSL yang dikelola Google atau sertifikat SSL yang dikelola sendiri. Sebaiknya gunakan sertifikat yang dikelola Google karena Google Cloud memperoleh, mengelola, dan memperpanjang sertifikat ini secara otomatis. Google Cloud

    Untuk membuat sertifikat yang dikelola Google, Anda harus memiliki domain. Jika tidak memiliki domain, Anda dapat menggunakan sertifikat SSL yang ditandatangani sendiri untuk pengujian.

    Untuk membuat resource sertifikat SSL yang dikelola Google:
       gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
           --domains DOMAIN
       
    Untuk membuat resource sertifikat SSL yang dikelola sendiri:
       gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
           --certificate CRT_FILE_PATH \
           --private-key KEY_FILE_PATH
       
  6. Buat proxy HTTP(S) target untuk mengarahkan permintaan ke peta URL Anda.

    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
       
  7. Buat aturan penerusan untuk mengarahkan permintaan masuk ke proxy.

    Untuk load balancer HTTPS:

       gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
           --load-balancing-scheme=EXTERNAL \
           --network-tier=PREMIUM \
           --address=EXAMPLE_IP \
           --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
           --global \
           --ports=443
       

Menghubungkan domain ke load balancer

Setelah load balancer dibuat, catat alamat IP yang terkait dengan load balancer, misalnya, 30.90.80.100. Untuk mengarahkan domain ke load balancer, buat data A menggunakan layanan pendaftaran domain. Jika Anda menambahkan beberapa domain ke sertifikat SSL, Anda harus menambahkan data A untuk setiap domain, yang semuanya mengarah ke alamat IP load balancer. Misalnya, untuk membuat data A bagi www.example.com dan example.com, gunakan string berikut:

NAME                  TYPE     DATA
www                   A        30.90.80.100
@                     A        30.90.80.100

Jika Anda menggunakan Cloud DNS sebagai penyedia DNS, lihat Menambahkan, mengubah, dan menghapus data.

Menguji load balancer

Setelah mengonfigurasi load balancer, Anda dapat mulai mengirimkan traffic ke alamat IP load balancer. Jika mengonfigurasi domain, Anda juga dapat mengirim traffic ke nama domain tersebut. Namun, propagasi DNS memerlukan waktu untuk selesai, jadi Anda dapat memulai dengan menggunakan alamat IP untuk pengujian.

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

    Buka Load balancing

  2. Klik load balancer yang baru saja dibuat.

  3. Catat alamat IP load balancer internal.

  4. 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 helloworld.
    Jika tidak berhasil dan Anda menggunakan sertifikat yang dikelola Google, pastikan status resource sertifikat Anda adalah AKTIF. Untuk mengetahui informasi selengkapnya, lihat Status resource sertifikat SSL yang dikelola Google.
    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.

  5. Untuk memverifikasi respons cache, gunakan curl dari command line komputer lokal Anda. Ganti IP_ADDRESS dengan alamat IPv4 load balancer.

    Jika Anda menggunakan sertifikat yang dikelola Google, uji domain yang mengarah ke alamat IP load balancer. Contoh:

    curl -v -o/dev/null https://IP_ADDRESS
    

    Jika menggunakan sertifikat yang ditandatangani sendiri, Anda juga harus menentukan flag -k. Contoh:

    curl -v -o/dev/null -k -s 'https://DOMAIN:443' --connect-to DOMAIN:443:IP_ADDRESS:443
    

    Opsi curl -k memungkinkan curl berfungsi jika Anda memiliki sertifikat yang ditandatangani sendiri. Anda hanya boleh menggunakan parameter -k untuk menguji situs Anda sendiri. Dalam keadaan normal, sertifikat yang valid adalah langkah keamanan yang penting dan peringatan sertifikat tidak boleh diabaikan.

    Output harus berisi header kustom Cache-ID dan Cache-Status yang telah Anda konfigurasi untuk menunjukkan apakah respons ditayangkan dari cache:

    HTTP/2 200
    cache-status: hit
    cache-id: SEA-b9fa975e
    

    Output berisi header respons yang menunjukkan bahwa ada hit cache, yang berarti aset statis di aplikasi serverless disalurkan kepada pengguna dari cache tepi Cloud CDN.

    Header cache-status menampilkan nilai disabled untuk respons yang tidak di-cache di Cloud CDN. Untuk respons yang di-cache, nilai header cache-status adalah hit, miss, atau revalidated.

Menonaktifkan Cloud CDN

Konsol

Menonaktifkan Cloud CDN untuk satu layanan backend

  1. Di konsol Google Cloud , buka halaman Cloud CDN.

    Buka Cloud CDN

  2. Di sisi kanan baris asal, klik Menu lalu pilih Edit.

  3. Hapus centang pada kotak layanan backend yang ingin Anda hentikan penggunaan Cloud CDN-nya.

  4. Klik Perbarui.

Menghapus Cloud CDN untuk semua layanan backend untuk suatu origin

  1. Di konsol Google Cloud , buka halaman Cloud CDN.

    Buka Cloud CDN

  2. Di sisi kanan baris asal, klik Menu lalu pilih Hapus.

  3. Untuk mengonfirmasi, klik Hapus.

gcloud

gcloud compute backend-services update BACKEND_SERVICE_NAME 
--no-enable-cdn

Menonaktifkan Cloud CDN tidak akan membatalkan atau menghapus cache. Jika Anda menonaktifkan Cloud CDN lalu mengaktifkannya kembali, sebagian besar atau semua konten yang di-cache mungkin masih di-cache. Untuk mencegah konten digunakan oleh cache, Anda harus membatalkan validasi konten tersebut.

Langkah berikutnya