Model Deployment Gateway API

Tentang komponen API

API yang didefinisikan pada Gateway API terdiri dari dua komponen utama:

  1. Konfigurasi API: Konfigurasi API yang dibuat saat Anda mengupload definisi API. Anda membuat definisi API sebagai spesifikasi OpenAPI. Jika API Anda mengelola layanan gRPC di Cloud Run, Anda dapat menentukan API dengan definisi dan konfigurasi layanan gRPC.

    Setiap kali Anda mengupload definisi API, Gateway API akan membuat konfigurasi API baru. Artinya, Anda dapat membuat konfigurasi API tetapi tidak dapat mengubahnya di lain waktu. Jika nanti Anda mengedit definisi API di spesifikasi OpenAPI atau definisi layanan gRPC, lalu mengupload definisi API yang diedit, Anda akan membuat konfigurasi API baru.

  2. Gateway: Proxy berbasis Envoy berperforma tinggi dan skalabel yang menghosting konfigurasi API yang di-deploy. Men-deploy konfigurasi API ke gateway akan membuat URL eksternal yang digunakan klien API Anda untuk mengakses API.

Gambar berikut menampilkan komponen tersebut:

Definisi API di panel Gateway API menampilkan tiga komponen konfigurasi API dan tiga komponen gateway.

Tentang men-deploy konfigurasi API ke gateway

Anda men-deploy konfigurasi API ke gateway agar API Anda dapat diakses oleh klien API:

Dalam tiga contoh API, konfigurasi API di-deploy ke gateway, sehingga API dapat diakses oleh klien API.

{i>Gateway<i}:

  • Di-deploy ke region GCP tertentu. Region adalah region geografis spesifik di GCP tempat Anda dapat men-deploy resource.

  • Harus menghosting konfigurasi API. Anda tidak dapat membuat gateway kosong, artinya gateway tanpa konfigurasi API. Namun, setelah gateway dibuat, Anda dapat memperbarui gateway untuk mengganti satu konfigurasi API dengan konfigurasi lainnya.

  • Hanya dapat menghosting satu konfigurasi API. Anda tidak dapat men-deploy beberapa konfigurasi API ke gateway yang sama.

Anda kemudian mengelola setiap gateway yang di-deploy secara terpisah. Untuk setiap gateway, Anda dapat:

  • Memulai/menghentikan/menghapus gateway
  • Melihat log dan metrik
  • Melihat informasi trace

Memilih region GCP

Setiap gateway di-deploy ke region geografis tertentu di GCP. Gateway API mendukung region GCP berikut untuk deployment:

  • asia-northeast1
  • australia-southeast1
  • europe-west1
  • europe-west2
  • us-east1
  • us-east4
  • us-central1
  • us-west2
  • us-west3
  • us-west4

Dukungan untuk gateway Gateway API yang sebelumnya dibuat di asia-east1 akan berakhir pada 1 November 2022. Anda harus meninjau gateway apa pun yang saat ini berjalan di asia-east1 dan menghapus atau membuatnya ulang di lokasi baru sesuai kebutuhan.

Menentukan endpoint konfigurasi API yang di-deploy

Saat Anda men-deploy konfigurasi API ke gateway, Gateway API membuat URL unik untuk gateway di domain gateway.dev. Klien API Anda kemudian menggunakan URL dalam formulir di bawah ini untuk mengakses konfigurasi API yang di-deploy:

https://GATEWAY_ID-HASH.REGION_CODE.gateway.dev

dengan GATEWAY_ID adalah nama gateway HASH adalah kode hash unik yang dihasilkan saat Anda men-deploy API, dan REGION_CODE adalah kode untuk region GCP tempat Anda men-deploy gateway.

Contoh:

my-gateway-a12bcd345e67f89g0h.uc.gateway.dev

Mengonfigurasi akun layanan untuk men-deploy konfigurasi API

Konfigurasi API yang di-deploy di gateway dijalankan dengan izin yang terkait dengan peran yang diberikan ke akun layanan yang digunakan untuk membuat konfigurasi API. Oleh karena itu, Anda biasanya menentukan akun layanan terpisah untuk membuat konfigurasi API. Akun layanan tersebut kemudian ditetapkan hanya ke peran yang diperlukan untuk mengakses layanan backend. Dengan cara ini, Anda dapat membatasi izin yang terkait dengan konfigurasi API.

Selain peran yang dibutuhkan untuk mengakses layanan backend, akun layanan juga harus diberi izin berikut:

  • Izin iam.serviceAccounts.actAs. Izin ini disertakan dalam peran Service Account User.

  • Izin yang diperlukan untuk mengakses layanan backend Anda. Misalnya, jika backend Anda diimplementasikan sebagai Cloud Function, akun layanan setidaknya harus ditetapkan ke peran Cloud Functions Invoker. Untuk backend Cloud Run, perannya adalah Cloud Run Invoker. Dengan membatasi izin yang terkait dengan konfigurasi API, Anda dapat mengamankan sistem backend dengan lebih baik.

Lihat Mengonfigurasi lingkungan pengembangan Anda untuk informasi selengkapnya.

Tentang skala ke nol

Gateway API adalah layanan berskala hingga nol. Artinya, ketika tidak ada traffic, semua instance gateway akan dihapus. Saat traffic meningkat, instance baru akan dibuat sesuai permintaan untuk menangani beban. Skala hingga nol dikontrol secara otomatis oleh GCP; Anda tidak perlu mengonfigurasi atau mengelolanya.

Menggunakan load balancer

Setiap gateway yang di-deploy di suatu region berisi load balancer terintegrasi untuk mengelola permintaan klien ke API yang di-deploy ke gateway tersebut. Anda tidak perlu membuat load balancer terpisah untuk setiap gateway.

Anda harus membuat load balancer saat men-deploy API yang sama di gateway yang terletak di region berbeda. Load balancer kemudian mengarahkan permintaan API ke berbagai region. Lihat Men-deploy API ke beberapa region di bawah untuk mengetahui informasi selengkapnya.

Mengonfigurasi akses SSL ke API

Gateway API mendukung akses HTTPS ke API yang di-deploy ke gateway. Karena API Anda di-deploy ke domain gateway.dev, Google akan membuat dan mengelola sertifikat SSL di load balancer yang terintegrasi dengan gateway. Anda tidak perlu membuat atau mengupload sertifikat Anda sendiri.

Mengonfigurasi Server Nama Domain

Secara default, klien API membuat permintaan ke domain gateway.dev untuk mengakses API yang di-deploy, seperti yang ditampilkan di atas.

Nama domain kustom adalah untuk Gateway API saat digunakan bersama dengan Load Balancing HTTP(S) untuk PRATINJAU Gateway API. Untuk menyesuaikan nama domain, buat load balancer untuk menggunakan nama domain kustom Anda, lalu arahkan permintaan ke domain gateway.dev dari API yang di-deploy. Untuk informasi selengkapnya, lihat Menggunakan domain kustom dengan Gateway API.

Men-deploy beberapa konfigurasi API di API yang sama

Anda hanya dapat men-deploy satu konfigurasi API ke gateway. Namun, Anda dapat men-deploy beberapa konfigurasi API ke beberapa gateway dalam API yang sama.

Bagian ini menjelaskan dua skenario saat Anda dapat men-deploy beberapa konfigurasi API di beberapa gateway dalam satu API.

Men-deploy konfigurasi API ke beberapa gateway di region yang sama

Saat mem-build API, developer API sering membuat lingkungan pengembangan, staging, dan produksi, dengan:

  • Lingkungan pengembangan digunakan oleh developer untuk membuat API.
  • Lingkungan staging digunakan untuk menguji API sebagai persiapan untuk rilis ke produksi.
  • Lingkungan produksi adalah tempat klien API eksternal Anda diizinkan untuk mengakses API.

Untuk mendukung jenis lingkungan pengembangan ini, Anda harus menentukan beberapa konfigurasi API. Misalnya, Anda mungkin memiliki beberapa konfigurasi API yang saat ini dalam pengembangan, satu konfigurasi API saat ini diuji pada staging, dan satu konfigurasi API saat ini di-deploy ke produksi.

Gateway API memungkinkan Anda membuat beberapa konfigurasi API dalam satu API, lalu men-deploy setiap konfigurasi API ke gateway yang berbeda:

Di API 1, tiga konfigurasi API yang disebut API Config Dev, API Config Stage, dan API Config Prod di-deploy ke tiga gateway masing-masing.

Dalam contoh ini, Anda memiliki tiga konfigurasi API yang berbeda: dev, stage, dan prod. Anda kemudian men-deploy setiap konfigurasi API ke gateway yang berbeda, di mana setiap gateway menentukan URL endpoint-nya yang unik.

Men-deploy konfigurasi API ke beberapa region

Sering kali Anda men-deploy API ke beberapa region GCP. Men-deploy di beberapa region menawarkan beberapa keuntungan, termasuk pengurangan latensi permintaan karena permintaan diarahkan ke API yang berjalan di region yang secara geografis dekat dengan klien, dan peningkatan keandalan karena kegagalan di satu region tidak memengaruhi API yang berjalan di region lain.

Untuk men-deploy API ke beberapa region, Anda harus men-deploy konfigurasi API ke gateway di setiap region. Setiap konfigurasi API bersifat khusus untuk region yang di-deploy karena harus mereferensikan layanan backend di region tersebut.

Dalam gambar berikut, API 1 dan 2 di-deploy ke satu region dan API 3 di-deploy di beberapa region:

API 1 dan API 2
di-deploy ke Wilayah 1, dan API 3 di-deploy di seluruh Wilayah 1, Wilayah 2, dan
Wilayah 3 menggunakan load balancer.

Dalam contoh ini, setiap konfigurasi API yang di-deploy ke gateway untuk API 3 memiliki endpoint URL unik, dalam bentuk:

https://my-gateway1-a12bcd345e67f89g0h.uc.gateway.dev
https://my-gateway2-b12cde345f67g89h0i.en.gateway.dev
https://my-gateway3-c12bde345g67h89i0j.uw.gateway.dev

Selanjutnya, Anda akan mengonfigurasi load balancer menggunakan Load Balancing HTTP(S) untuk PRATINJAU Gateway API guna menangani permintaan ke API dan meneruskan permintaan ke region yang sesuai. Untuk informasi selengkapnya, lihat Membuat deployment multi-region untuk Gateway API.

Mengupdate API

Anda dapat mengupdate API yang di-deploy dengan mengedit definisi API di spesifikasi OpenAPI, lalu mengupload spesifikasi tersebut. Mengupload spesifikasi baru akan membuat konfigurasi API baru.

Gateway API mendukung model update tanpa periode nonaktif, yang berarti API Anda akan terus menangani permintaan selama deployment konfigurasi API yang diperbarui. Namun, ada jangka waktu saat konfigurasi API baru sedang di-deploy saat beberapa permintaan mungkin masih ditangani oleh konfigurasi API versi sebelumnya.

Jika telah men-deploy konfigurasi API di beberapa region dan gateway, Anda harus men-deploy ulang konfigurasi API yang telah diperbarui di setiap region secara terpisah.

Langkah selanjutnya