Memulai API Gateway dan Cloud Run untuk gRPC
Halaman ini menunjukkan cara menyiapkan API Gateway untuk mengelola dan mengamankan layanan backend Cloud Run dengan gRPC.
Daftar Tugas
Gunakan daftar tugas berikut saat Anda mengerjakan tutorial ini. Semua tugas diperlukan untuk men-deploy gateway API untuk layanan backend Cloud Run Anda dengan gRPC.
- Membuat atau memilih project Google Cloud.
- Jika Anda belum men-deploy Cloud Run sendiri, deploy contoh layanan gRPC backend. Lihat langkah 7 di Sebelum memulai.
- Aktifkan layanan API Gateway yang diperlukan.
- Buat dokumen konfigurasi gRPC API yang menjelaskan API Anda, dan konfigurasikan rute ke Cloud Run Anda. Lihat Mengonfigurasi konfigurasi API dengan gRPC.
- Deploy API gateway menggunakan konfigurasi API Anda. Lihat Men-deploy API gateway.
- Uji deployment API Anda dengan mengirim permintaan. Lihat Mengirim permintaan ke API.
- Melacak aktivitas ke layanan Anda. Lihat Melacak aktivitas API.
- Hindari tagihan pada akun Google Cloud Anda. Lihat Pembersihan.
Sebelum memulai
Di konsol Google Cloud, buka halaman Dasbor, lalu pilih atau buat project Google Cloud.
Pastikan penagihan diaktifkan untuk project Anda.
Catat project ID karena diperlukan nanti. Di bagian lain halaman ini, project ID ini disebut sebagai PROJECT_ID.
Catat nomor project karena diperlukan nanti. Di bagian lain halaman ini, nomor project ini disebut sebagai PROJECT_NUMBER.
Download dan instal Google Cloud CLI.
Ikuti langkah-langkah di panduan memulai gRPC Python untuk menginstal gRPC dan alat gRPC.
Deploy contoh layanan backend gRPC Cloud Run python-grpc-bookstore-server untuk digunakan dengan tutorial ini. Layanan gRPC menggunakan image container berikut:
gcr.io/endpointsv2/python-grpc-bookstore-server:2
Ikuti langkah-langkah di Panduan memulai: Men-deploy Container Contoh yang Di-build Sebelumnya untuk men-deploy layanan. Pastikan untuk mengganti image penampung yang ditentukan dalam panduan memulai tersebut dengan
gcr.io/endpointsv2/python-grpc-bookstore-server:2
Catat URL layanan, serta region dan project ID tempat layanan Anda di-deploy.
Mengaktifkan layanan yang diperlukan
API Gateway mengharuskan Anda mengaktifkan layanan Google berikut:
Nama | Judul |
---|---|
apigateway.googleapis.com |
API Gateway API |
servicemanagement.googleapis.com |
Service Management API |
servicecontrol.googleapis.com |
Service Control API |
Untuk mengonfirmasi bahwa layanan yang diperlukan telah diaktifkan:
gcloud services list
Jika Anda tidak melihat layanan yang diperlukan tercantum, aktifkan layanan tersebut:
gcloud services enable apigateway.googleapis.comgcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com
Untuk mengetahui informasi selengkapnya tentang layanan gcloud
, lihat
layanan gcloud
.
Membuat konfigurasi API dengan gRPC
Contoh bookstore-grpc
berisi file yang perlu Anda salin secara lokal dan konfigurasikan.
- Buat file deskripsi protobuf mandiri dari file
.proto
layanan Anda:- Simpan salinan
bookstore.proto
dari repositori contoh ke direktori kerja Anda saat ini. File ini menentukan API layanan Toko Buku. - Buat direktori berikut di direktori kerja Anda:
mkdir generated_pb2
- Buat file deskripsi,
api_descriptor.pb
, menggunakan compiler buffering protokolprotoc
. Jalankan perintah berikut di direktori tempat Anda menyimpanbookstore.proto
:python3 -m grpc_tools.protoc \ --include_imports \ --include_source_info \ --proto_path=. \ --descriptor_set_out=api_descriptor.pb \ --python_out=generated_pb2 \ --grpc_python_out=generated_pb2 \ bookstore.proto
Dalam perintah sebelumnya,
--proto_path
ditetapkan ke direktori kerja saat ini. Di lingkungan build gRPC, jika Anda menggunakan direktori yang berbeda untuk file input.proto
, ubah--proto_path
sehingga compiler menelusuri direktori tempat Anda menyimpanbookstore.proto
.
- Simpan salinan
-
Buat file teks bernama
api_config.yaml
di direktori kerja saat ini (direktori yang sama dengan yang berisibookstore.proto
). Untuk kemudahan, halaman ini merujuk ke dokumen konfigurasi gRPC API dengan nama file tersebut, tetapi Anda dapat menamainya dengan nama lain jika mau. Tambahkan konten berikut ke file: Indentasi penting untuk format yaml. Misalnya, kolom# The configuration schema is defined by the service.proto file. # https://github.com/googleapis/googleapis/blob/master/google/api/service.proto type: google.api.Service config_version: 3 name: "*.apigateway.PROJECT_ID.cloud.goog" title: API Gateway + Cloud Run gRPC apis: - name: endpoints.examples.bookstore.Bookstore usage: rules: # ListShelves methods can be called without an API Key. - selector: endpoints.examples.bookstore.Bookstore.ListShelves allow_unregistered_calls: true backend: rules: - selector: "*" address: grpcs://python-grpc-bookstore-server-HASH-uc.a.run.app
name
harus berada di tingkat yang sama dengantype
. - Di kolom
name
, layanan bernama*.apigateway.PROJECT_ID.cloud.goog
dengan PROJECT_ID adalah nama project ID Google Cloud Anda. Di kolom
address
di bagianbackend.rules
, ganti grpcs://python-grpc-bookstore-server-HASH-uc.a.run.app dengan URL sebenarnya dari layanan Cloud Run gRPC backend python-grpc-bookstore-server, dengan HASH adalah kode hash unik yang dihasilkan saat Anda membuat layanan.Contoh ini mengasumsikan bahwa Anda menggunakan layanan backend Bookstore gRPC yang dibuat di Sebelum memulai. Jika perlu, ganti nilai ini dengan URL layanan Cloud Run Anda.
- Simpan dokumen konfigurasi gRPC API Anda.
- Buat konfigurasi API:
dengan:gcloud api-gateway api-configs create CONFIG_ID \ --api=API_ID --project=PROJECT_ID \ --grpc-files=api_descriptor.pb,api_config.yaml
- CONFIG_ID menentukan nama konfigurasi API Anda.
- API_ID menentukan nama API Anda.
- PROJECT_ID menentukan nama project Google Cloud Anda.
gcloud api-gateway api-configs create grpc-config \ --api=grpc-test --project=my-test-project \ --grpc-files=api_descriptor.pb,api_config.yaml
Men-deploy gateway API
Untuk men-deploy konfigurasi gRPC API ke gateway, jalankan perintah berikut:
gcloud api-gateway gateways create GATEWAY_ID \ --api=API_ID --api-config=CONFIG_ID \ --location=GCP_REGION --project=PROJECT_ID
dengan:
- GATEWAY_ID menentukan nama gateway.
- API_ID menentukan nama API Gateway API yang terkait dengan gateway ini.
- CONFIG_ID menentukan nama konfigurasi API yang di-deploy ke gateway.
GCP_REGION adalah region Google Cloud untuk gateway yang di-deploy.
PROJECT_ID menentukan nama project Google Cloud Anda.
Contoh:
gcloud api-gateway gateways create bookstore-grpc \ --api=grpc-test --api-config=grpc-config \ --location=us-central1 --project=my-project
Setelah berhasil diselesaikan, Anda dapat menggunakan perintah berikut untuk melihat detail tentang gateway:
gcloud api-gateway gateways describe GATEWAY_ID \ --location=GCP_REGION --project=PROJECT_ID
Perhatikan nilai properti defaultHostname
dalam output perintah ini. Ini adalah bagian nama host dari URL gateway yang Anda gunakan untuk menguji deployment di langkah berikutnya.
Contoh:
https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev
Mengirim permintaan ke API
Untuk mengirim permintaan ke API contoh, Anda dapat menggunakan contoh klien gRPC yang ditulis dalam Python.
Clone repositori git tempat kode klien gRPC dihosting:
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Ubah direktori kerja Anda:
cd python-docs-samples/endpoints/bookstore-grpc/
Instal dependensi:
pip3 install virtualenv
virtualenv env
source env/bin/activate
pip3 install -r requirements.txt
Kirim permintaan ke API contoh:
python3 bookstore_client.py --host=DEFAULT_HOSTNAME --port 443 --use_tls true
Tentukan properti
defaultHostname
gateway Anda di DEFAULT_HOSTNAME, tanpa ID protokol. Contoh:python3 bookstore_client.py --host=my-gateway-a12bcd345e67f89g0h.uc.gateway.dev --port 443 --use_tls true
Melacak aktivitas API
Lihat grafik aktivitas untuk API Anda di halaman API Gateway di konsol Google Cloud. Klik API Anda untuk melihat grafik aktivitasnya di halaman Ringkasan. Mungkin perlu waktu beberapa saat hingga permintaan ditampilkan dalam grafik.
Lihat log permintaan untuk API Anda di halaman Logs Explorer. Link ke halaman Logs Explorer dapat ditemukan di halaman API Gateway di konsol Google Cloud.
Setelah berada di halaman API Gateway:
- Pilih API yang akan dilihat.
- Klik tab Detail.
- Klik link di bagian Logs.
Anda baru saja men-deploy dan menguji API di API Gateway dengan gRPC.
Pembersihan
Agar tidak menimbulkan tagihan pada akun Google Cloud Anda untuk resource yang digunakan dalam panduan memulai ini, Anda dapat:
Atau, Anda juga dapat menghapus project Google Cloud yang digunakan untuk tutorial ini.