Memulai Load Balancing HTTP(S) untuk Gateway API

Tutorial ini menunjukkan cara membuat Load Balancer Eksternal HTTP(S) Google Cloud untuk merutekan permintaan ke Gateway API. Proses konfigurasinya mengikuti langkah yang sama seperti yang digunakan untuk mengonfigurasi integrasi Cloud Load Balancing dengan produk serverless lainnya, seperti Cloud Run, Cloud Functions, dan App Engine.

Meskipun tidak diperlukan agar Gateway API dapat berfungsi, load balancer memungkinkan gateway Anda untuk memanfaatkan beberapa manfaat Cloud Load Balancing. Misalnya, menggunakan Cloud Load Balancing dengan Gateway API memungkinkan Anda untuk:

  • Gunakan domain kustom.
  • Memanfaatkan Google Cloud Armor sebagai layanan keamanan jaringan.
  • Kelola load balancing yang efisien di berbagai gateway di beberapa lokasi.
  • Terapkan pengelolaan traffic lanjutan.

Sebelum memulai

  1. Jika Anda belum melakukannya, download dan instal Google Cloud CLI.

    Mendownload gcloud CLI

  2. Update komponen gcloud:

    gcloud components update
  3. Ikuti Panduan Memulai Gateway API untuk men-deploy layanan Cloud Run dan membuat gateway yang mengarah ke layanan tersebut.

  4. Mengonfigurasi izin.

  5. Tambahkan resource sertifikat SSL.

Men-deploy layanan Cloud Run dan instance Gateway API

Dalam tutorial ini, Anda akan men-deploy layanan "hello-world" ke Cloud Run, membuat gateway yang dirutekan ke layanan Cloud Run, dan mengonfigurasi load balancer HTTP(S) untuk merutekan permintaan ke domain kustom.

Meskipun tutorial ini menggunakan Cloud Run sebagai layanan backend untuk API Gateway, langkah-langkah ini juga berlaku untuk layanan backend yang saat ini didukung oleh API Gateway.

Setelah berhasil menyelesaikan panduan memulai Gateway API, Anda akan memiliki URL gateway yang di-deploy yang mengarah ke layanan Cloud Run.

Konfigurasikan izin

Dalam tutorial ini, Anda akan membuat grup endpoint jaringan (NEG) serverless dan membuat load balancer HTTP(S) eksternal di project Cloud. Tindakan ini memerlukan peran pemilik atau editor project, atau 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

Membuat resource sertifikat SSL

Untuk membuat load balancer HTTP(S), resource sertifikat SSL harus ditambahkan 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 mendapatkan, 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. Jika belum memiliki domain, Anda bisa mendapatkannya dari Google Domains. Selain itu, Anda harus memperbarui data A DNS domain agar mengarah ke alamat IP load balancer yang dibuat pada langkah berikutnya. 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.

Tutorial ini mengasumsikan bahwa Anda telah membuat resource sertifikat SSL.

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

Membuat load balancer HTTP(S)

  1. Buat NEG serverless untuk Gateway API.

    Grup endpoint jaringan (NEG) menentukan grup endpoint backend untuk load balancer. NEG serverless adalah backend yang mengarah ke layanan seperti Gateway API, seperti yang ditunjukkan pada gambar di bawah:

    diagram neg serverless sebagai backend untuk gateway multi-region

    Untuk membuat NEG serverless bagi gateway Anda, jalankan perintah berikut, dengan kondisi:

    • SERVERLESS_NEG_NAME adalah nama NEG serverless yang akan dibuat.
    • GATEWAY_ID menentukan nama gateway.
    • REGION_ID adalah region deployment untuk NEG tanpa server (ini harus cocok dengan region gateway).
    gcloud beta compute network-endpoint-groups create SERVERLESS_NEG_NAME \
      --region=REGION_ID \
      --network-endpoint-type=serverless \
      --serverless-deployment-platform=apigateway.googleapis.com \
      --serverless-deployment-resource=GATEWAY_ID

    Contoh:

    gcloud beta compute network-endpoint-groups create api-gateway-serverless-neg \
      --region=us-central1 \
      --network-endpoint-type=serverless \
      --serverless-deployment-platform=apigateway.googleapis.com \
      --serverless-deployment-resource=my-gateway
  2. Buat layanan backend untuk menentukan cara Cloud Load Balancing mendistribusikan traffic.

    Konfigurasi layanan backend berisi kumpulan nilai, seperti protokol yang digunakan untuk terhubung ke backend, berbagai setelan distribusi dan sesi, health check, dan waktu tunggu, seperti yang ditampilkan dalam gambar di bawah:

    diagram neg serverless sebagai backend untuk layanan backend

    Untuk membuat layanan backend, jalankan perintah berikut:

    gcloud compute backend-services create BACKEND_SERVICE_NAME --global

    dengan BACKEND_SERVICE_NAME adalah nama layanan backend baru Anda.

    Contoh:

    gcloud compute backend-services create api-gateway-backend-service --global

    Untuk menambahkan NEG serverless sebagai backend ke layanan backend, jalankan perintah berikut, dengan kondisi:

    • BACKEND_SERVICE_NAME adalah nama layanan backend Anda.
    • SERVERLESS_NEG_NAME adalah nama NEG serverless yang dibuat di langkah sebelumnya.
    • REGION_ID adalah region deployment untuk NEG tanpa server (ini harus cocok dengan region gateway).
    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
      --global \
      --network-endpoint-group=SERVERLESS_NEG_NAME \
      --network-endpoint-group-region=REGION_ID

    Contoh:

    gcloud compute backend-services add-backend api-gateway-backend-service \
      --global \
      --network-endpoint-group=api-gateway-serverless-neg \
      --network-endpoint-group-region=us-central1
  3. Buat peta URL untuk merutekan permintaan yang masuk ke layanan backend, seperti yang ditampilkan dalam gambar di bawah ini:

    diagram peta URL ke layanan backend

    Untuk membuat peta URL, jalankan perintah berikut, dengan kondisi:

    • URL_MAP_NAME adalah nama peta URL yang akan dibuat.
    • BACKEND_SERVICE_NAME adalah nama layanan backend Anda.
    gcloud compute url-maps create URL_MAP_NAME \
      --default-service BACKEND_SERVICE_NAME

    Contoh:

    gcloud compute url-maps create api-gateway-url-map \
      --default-service api-gateway-backend-service

    Contoh peta URL ini hanya menargetkan satu layanan backend yang mewakili satu gateway, sehingga aturan host atau pencocok jalur tidak diperlukan. Jika memiliki lebih dari satu layanan backend, Anda dapat menggunakan aturan host untuk mengarahkan permintaan ke layanan yang berbeda berdasarkan nama host. Gunakan pencocok jalur untuk mengarahkan permintaan ke berbagai layanan berdasarkan jalur permintaan.

    Contoh:

    gcloud compute url-maps add-path-matcher api-gateway-url-map \
      --path-matcher-name=my-pm2  \
      --default-service=my-host-default-backend \
      --path-rules="/video=video-service,/video/*=video-service" \
      --new-hosts my-hosts.com
    gcloud compute url-maps add-host-rule api-gateway-url-map \
      --hosts=my-app-domain \
      --path-matcher-name=my-app-path-matcher

    Untuk mempelajari aturan host dan pencocok jalur lebih lanjut, lihat dokumentasi Peta URL.

  4. Buat sertifikat SSL untuk proxy target Anda, seperti yang ditampilkan dalam gambar di bawah ini:

    diagram sertifikat ssl untuk proxy target

    Untuk membuat load balancer HTTP(S), resource sertifikat SSL diperlukan untuk proxy target HTTP(S). Anda dapat membuat resource sertifikat SSL menggunakan sertifikat SSL yang dikelola Google atau sertifikat SSL yang dikelola sendiri. Sebaiknya gunakan sertifikat yang dikelola Google. Jika Anda menguji proses ini tanpa resource sertifikat SSL dan ingin menyiapkan load balancer HTTP, Anda dapat melewati langkah ini.

    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
  5. Buat proxy HTTP(S) target untuk merutekan permintaan ke peta URL Anda, seperti yang ditunjukkan pada gambar di bawah:

    diagram proxy http ke peta URL

    Untuk membuat proxy target, gunakan perintah berikut, dengan kondisi:

    • TARGET_HTTPS_PROXY_NAME adalah nama proxy HTTP(S) target yang akan dibuat.
    • URL_MAP_NAME adalah nama peta URL yang dibuat pada langkah sebelumnya.
    • Opsional: SSL_CERT_NAME adalah nama sertifikat SSL yang dibuat.
    gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
      --ssl-certificates=SSL_CERT_NAME \
      --url-map=URL_MAP_NAME

    Contoh:

    gcloud compute target-https-proxies create api-gateway-https-proxy \
      --ssl-certificates=hello-cert \
      --url-map=api-gateway-url-map

    Seperti disebutkan di atas, Anda dapat membuat load balancer HTTP tanpa membuat resource sertifikat SSL. Untuk melakukannya, gunakan perintah berikut:

    gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \
          --url-map=URL_MAP_NAME

    Contoh:

    gcloud compute target-http-proxies create api-gateway-http-proxy \
      --url-map=api-gateway-url-map

    Perintah selanjutnya untuk proxy HTTP harus dimodifikasi guna mengakomodasi tanda --target-http-proxy dan TARGET_HTTP_PROXY_NAME untuk proxy HTTP(S) pasangannya.

  6. Buat aturan penerusan untuk mengarahkan permintaan yang masuk ke proxy, seperti yang ditampilkan dalam gambar di bawah ini:

    diagram aturan penerusan ke proxy http

    Gunakan perintah berikut untuk membuat aturan penerusan, dengan kondisi:

    • HTTPS_FORWARDING_RULE_NAME adalah nama aturan yang akan dibuat.
    • TARGET_HTTPS_PROXY_NAME adalah nama proxy target HTTP(S).
    gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
      --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
      --global \
      --ports=443

    Contoh:

    gcloud compute forwarding-rules create my-fw \
      --target-https-proxy=api-gateway-https-proxy \
      --global \
      --ports=443

Memperbarui data DNS dengan alamat IP load balancer

Jika Anda memiliki domain kustom, langkah ini diperlukan untuk menyiapkan setelan DNS untuk domain Anda agar mengarah ke alamat IP baru layanan Anda. Anda juga harus melakukannya jika membuat load balancer HTTP(S) dengan sertifikat yang dikelola Google (yang memerlukan domain). Sebaiknya Anda mengalokasikan dan menggunakan alamat IP statis jika digunakan dengan DNS. Petunjuk khusus untuk langkah ini bergantung pada penyedia DNS Anda.

  1. Untuk mengirim traffic ke load balancer, data DNS domain Anda (dalam tutorial ini, my-app-domain) harus mengarah ke alamat IP load balancer.

    Untuk menemukan alamat IP aturan penerusan global Anda, gunakan perintah ini:

    gcloud compute forwarding-rules list
  2. Perbarui data A atau AAAA DNS domain Anda agar mengarah ke alamat IP load balancer, sehingga traffic yang dikirim ke URL domain kustom yang ada akan dirutekan melalui load balancer. Diperlukan waktu beberapa detik atau beberapa jam bagi DNS untuk menerapkan perubahan ini ke server DNS.

  3. Uji untuk mengonfirmasi bahwa gateway Anda menerima traffic menggunakan curl atau dengan mengunjungi URL di browser Anda. Contoh: https://my-app-domain

    Setelah pengujian, Anda akan melihat respons yang dihasilkan oleh layanan Cloud Run. Misalnya, ini dapat berupa halaman HTML "Hello World" atau respons yang diharapkan lainnya yang dibuat oleh layanan backend secara langsung. Ini berarti permintaan Anda sedang melewati load balancer, dan layanan backend menginstruksikan load balancer untuk mengirimkannya ke gateway Anda.

Menguji konfigurasi load balancer Anda

Setelah mengonfigurasi load balancer, Anda dapat mulai mengirimkan traffic ke alamat IP aturan penerusan.

Untuk menemukan alamat IP aturan penerusan global Anda, gunakan perintah berikut:

gcloud compute forwarding-rules list

Gunakan perintah curl untuk menguji respons berbagai URL bagi layanan Anda. Contoh:

curl https://HOST_URL/hello/
curl https://HOST_URL

Anda dapat menggunakan Konsol Cloud Gateway API untuk memverifikasi bahwa permintaan mencapai layanan yang benar.

Selamat! Anda telah berhasil mengonfigurasi Load Balancing HTTP(S) untuk PRATINJAU Gateway API.

Pembersihan

Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam panduan memulai ini, Anda dapat menghapus resource Cloud Load Balancing yang Anda buat. Jika resource ini dibuat dalam projectnya sendiri, Anda dapat menghapus keseluruhan project. Jika tidak, Anda dapat menghapus resource satu per satu.

Menghapus project

Jalankan perintah berikut, dengan mengganti PROJECT_ID dengan project ID Anda:

gcloud projects delete PROJECT_ID

Menghapus resource satu per satu

Hapus setiap komponen di load balancer:

  1. Hapus aturan penerusan:

    gcloud compute forwarding-rules delete HTTPS_FORWARDING_RULE_NAME --global
  2. Hapus alamat IP eksternal global:

    gcloud compute addresses delete IP_ADDRESSES --global
  3. Hapus proxy target:

    gcloud compute target-https-proxies delete TARGET_HTTP_PROXY_NAME
  4. Menghapus peta URL:

    gcloud compute url-maps delete URL_MAP_NAME
  5. Hapus layanan backend:

    gcloud compute backend-services delete BACKEND_SERVICE_NAME --global
  6. (Opsional) Hapus sertifikat SSL:

    gcloud compute ssl-certificates delete SSL_CERTIFICATE_NAME

Hapus NEG serverless:

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