Tutorial ini menunjukkan cara menulis, memposisikan, dan memanggil layanan Cloud Run dari langganan push Pub/Sub.
Tujuan
- Menulis, membangun, dan memposisikan layanan ke Cloud Run
- Panggil layanan dengan memublikasikan pesan ke topik Pub/Sub.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Artifact Registry, Cloud Build, Pub/Sub and Cloud Run.
- Instal dan lakukan inisialisasi gcloud CLI.
- Update komponen:
gcloud components update
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan guna menyelesaikan tutorial ini, minta administrator untuk memberi Anda peran IAM berikut pada project Anda:
-
Editor Cloud Build (
roles/cloudbuild.builds.editor
) -
Admin Cloud Run (
roles/run.admin
) -
Create Service Account (
roles/iam.serviceAccountCreator
) -
Project IAM Admin ()
roles/resourcemanager.projectIamAdmin
-
Editor Pub/Sub (
roles/pubsub.editor
) -
Service Account User (
roles/iam.serviceAccountUser
) -
Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer
) -
Storage Admin (
roles/storage.admin
)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Menyiapkan setelan default gcloud
Untuk mengonfigurasi gcloud dengan setelan default untuk layanan Cloud Run Anda:
Setel project default Anda:
gcloud config set project PROJECT_ID
Ganti PROJECT_ID dengan nama project yang Anda buat untuk tutorial ini.
Konfigurasi gcloud untuk region yang Anda pilih:
gcloud config set run/region REGION
Ganti REGION dengan region Cloud Run pilihan Anda yang didukung.
Lokasi Cloud Run
Cloud Run bersifat regional, berarti infrastruktur yang
menjalankan layanan Cloud Run Anda terletak di region tertentu dan
dikelola oleh Google agar tersedia secara redundan di
semua zona dalam region tersebut.
Memenuhi persyaratan latensi, ketersediaan, atau ketahanan adalah faktor utama
untuk memilih region tempat layanan Cloud Run dijalankan.
Pada umumnya, Anda dapat memilih region yang paling dekat dengan pengguna Anda, tetapi Anda harus mempertimbangkan
lokasi dari produk Google Cloud
lain yang digunakan oleh layanan Cloud Run Anda.
Menggunakan produk Google Cloud secara bersamaan di beberapa lokasi dapat memengaruhi
latensi serta biaya layanan Anda.
Cloud Run tersedia di region berikut:
Tergantung harga Tingkat 1
asia-east1
(Taiwan)asia-northeast1
(Tokyo)asia-northeast2
(Osaka)europe-north1
(Finlandia)Rendah CO2
europe-southwest1
(Madrid)Rendah CO2
europe-west1
(Belgia)Rendah CO2
europe-west4
(Belanda)Rendah CO2
europe-west8
(Milan)europe-west9
(Paris)Rendah CO2
me-west1
(Tel Aviv)us-central1
(Iowa)Rendah CO2
us-east1
(South Carolina)us-east4
(North Virginia)us-east5
(Columbus)us-south1
(Dallas)Rendah CO2
us-west1
(Oregon)Rendah CO2
Tergantung harga Tingkat 2
africa-south1
(Johannesburg)asia-east2
(Hong Kong)asia-northeast3
(Seoul, Korea Selatan)asia-southeast1
(Singapura)asia-southeast2
(Jakarta)asia-south1
(Mumbai, India)asia-south2
(Delhi, India)australia-southeast1
(Sydney)australia-southeast2
(Melbourne)europe-central2
(Warsawa, Polandia)europe-west10
(Berlin)Rendah CO2
europe-west12
(Turin)europe-west2
(London, Inggris)Rendah CO2
europe-west3
(Frankfurt, Jerman)Rendah CO2
europe-west6
(Zurich, Swiss)Rendah CO2
me-central1
(Doha)me-central2
(Dammam)northamerica-northeast1
(Montreal)Rendah CO2
northamerica-northeast2
(Toronto)Rendah CO2
southamerica-east1
(Sao Paulo, Brasil)Rendah CO2
southamerica-west1
(Santiago, Cile)Rendah CO2
us-west2
(Los Angeles)us-west3
(Salt Lake City)us-west4
(Las Vegas)
Jika sudah membuat layanan Cloud Run, Anda dapat melihat region di dasbor Cloud Run di Konsol Google Cloud.
Membuat repositori standar Artifact Registry
Buat repositori standar Artifact Registry untuk menyimpan image container Anda:
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=REGION
Ganti:
- REPOSITORY dengan nama unik untuk repositori.
- REGION dengan region Google Cloud yang akan digunakan untuk repositori Artifact Registry.
Membuat topik Pub/Sub
Layanan contoh dipicu oleh pesan yang dipublikasikan ke topik Pub/Sub, sehingga Anda harus membuat topik di Pub/Sub.
gcloud
Untuk membuat topik Pub/Sub baru, gunakan perintah:
gcloud pubsub topics create myRunTopic
Anda dapat menggunakan myRunTopic atau menggantinya dengan nama topik yang unik dalam project Google Cloud Anda.
Terraform
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Untuk membuat topik Pub/Sub, tambahkan kode berikut ke file main.tf
yang sudah ada:
Anda dapat menggunakan nama topik yang unik dalam project Cloud Anda.
Mengambil contoh kode
Untuk mengambil contoh kode agar dapat digunakan:
Clone repositori aplikasi contoh ke komputer lokal Anda:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Atau, Anda dapat mendownload contoh dalam file ZIP dan mengekstraknya.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Atau, Anda dapat mendownload contoh dalam file ZIP dan mengekstraknya.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Atau, Anda dapat mendownload contoh dalam file ZIP dan mengekstraknya.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Atau, Anda dapat mendownload contoh sebagai file ZIP dan mengekstraknya.
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
Atau, Anda dapat mendownload contoh sebagai file ZIP dan mengekstraknya.
Ubah ke direktori yang memuat kode contoh Cloud Run:
Node.js
cd nodejs-docs-samples/run/pubsub/
Python
cd python-docs-samples/run/pubsub/
Go
cd golang-samples/run/pubsub/
Java
cd java-docs-samples/run/pubsub/
C#
cd dotnet-docs-samples/run/Run.Samples.Pubsub.MinimalApi/
Meninjau kode
Kode untuk tutorial ini terdiri dari:
Server yang menangani permintaan masuk.
Node.js
Agar layanan Node.js mudah diuji, konfigurasi server terpisah dari proses startup server.
Server web Node.js disiapkan di
app.js
.Server web dimulai di
index.js
:Python
Go
Java
C#
Pengendali yang memproses pesan Pub/Sub dan mencatat salam.
Node.js
Python
Go
Java
C#
Anda harus membuat kode layanan untuk menampilkan kode respons HTTP yang akurat. Kode berhasil, seperti HTTP
200
atau204
, mengonfirmasi pemrosesan pesan Pub/Sub. Kode error, seperti HTTP400
atau500
, menunjukkan bahwa pesan akan dicoba lagi, seperti yang dijelaskan dalam Menerima pesan menggunakan Push.Dockerfile
yang menentukan lingkungan operasi untuk layanan. KontenDockerfile
bervariasi menurut bahasa.Node.js
Python
Go
Java
Contoh ini menggunakan Jib untuk mem-build image Docker menggunakan alat Java umum. Jib mengoptimalkan build container tanpa memerlukan Dockerfile atau menginstal Docker. Pelajari lebih lanjut cara mem-build container Java dengan Jib.
C#
Untuk mengetahui detail tentang cara mengautentikasi asal permintaan Pub/Sub, lihat Melakukan integrasi dengan Pub/Sub.
Mengirimkan kode
Kode pengiriman terdiri dari tiga langkah: membuat image container dengan Cloud Build, mengupload image container ke Artifact Registry, dan men-deploy image container ke Cloud Run.
Untuk kode pengiriman Anda:
-
Bangun container Anda dan publikasikan di Artifact Registry:
Node.js
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/pubsub
Ganti:- PROJECT_ID dengan ID project Google Cloud Anda.
- REPOSITORY dengan nama repositori Artifact Registry.
- REGION dengan region Google Cloud yang akan digunakan untuk repositori Artifact Registry.
pubsub
adalah nama image.Setelah berhasil, Anda akan melihat pesan SUCCESS yang berisi ID, pembuatan waktu, dan nama image. Image tersebut disimpan di Artifact Registry dan dapat digunakan kembali jika diperlukan.
Python
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/pubsub
Ganti:- PROJECT_ID dengan ID project Google Cloud Anda.
- REPOSITORY dengan nama repositori Artifact Registry.
- REGION dengan region Google Cloud yang akan digunakan untuk repositori Artifact Registry.
pubsub
adalah nama image.Setelah berhasil, Anda akan melihat pesan SUCCESS yang berisi ID, pembuatan waktu, dan nama image. Image tersebut disimpan di Artifact Registry dan dapat digunakan kembali jika diperlukan.
Go
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/pubsub
Ganti:- PROJECT_ID dengan ID project Google Cloud Anda.
- REPOSITORY dengan nama repositori Artifact Registry.
- REGION dengan region Google Cloud yang akan digunakan untuk repositori Artifact Registry.
pubsub
adalah nama image.Setelah berhasil, Anda akan melihat pesan SUCCESS yang berisi ID, waktu pembuatan, dan nama image. Image tersebut disimpan di Artifact Registry dan dapat digunakan kembali jika diperlukan.
Java
-
Menggunakan pembantu kredensial gcloud CLI
untuk memberi otorisasi Docker agar dikirim ke Artifact Registry Anda.
gcloud auth configure-docker
-
Gunakan Plugin Jib Maven untuk membangun dan mengirim container ke Artifact Registry.
mvn compile jib:build -D image=REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/pubsub
Ganti:- PROJECT_ID dengan ID project Google Cloud Anda.
- REPOSITORY dengan nama repositori Artifact Registry.
- REGION dengan region Google Cloud yang akan digunakan untuk repositori Artifact Registry.
pubsub
adalah nama image.Setelah berhasil, Anda akan melihat pesan BUILD SUCCESS. Image tersebut disimpan di Artifact Registry dan dapat digunakan kembali jika perlu.
C#
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/pubsub
Ganti:- PROJECT_ID dengan ID project Google Cloud Anda.
- REPOSITORY dengan nama repositori Artifact Registry.
- REGION dengan region Google Cloud yang akan digunakan untuk repositori Artifact Registry.
pubsub
adalah nama image.Setelah berhasil, Anda akan melihat pesan SUCCESS yang berisi ID, waktu pembuatan, dan nama image. Image tersebut disimpan di Artifact Registry dan dapat digunakan kembali jika diperlukan.
-
Men-deploy aplikasi Anda:
Command line
-
Jalankan perintah berikut ini untuk menggunakan aplikasi anda:
gcloud run deploy pubsub-tutorial --image REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/pubsub --no-allow-unauthenticated
Ganti:- PROJECT_ID dengan ID project Google Cloud Anda.
- REPOSITORY dengan nama repositori Artifact Registry.
- REGION dengan region Google Cloud yang akan digunakan untuk repositori Artifact Registry.
pubsub
adalah nama image danpubsub-tutorial
adalah nama layanan. Perhatikan bahwa image container di-deploy ke layanan dan region yang yang Anda konfigurasikan sebelumnya di bagian Menyiapkan gcloudFlag
--no-allow-unauthenticated
membatasi akses yang tidak diautentikasi ke layanan. Dengan menjaga layanan,pribadi Anda dapat mengandalkan integrasi Pub/Sub otomatis Cloud Run untuk mengautentikasi permintaan. Lihat Integrasikan dengan Pub/Sub untuk detail lebih lanjut tentang bagaimana hal ini dikonfigurasi. Untuk detail selengkapnya tentang autentikasi berdasarkan kebijakan Identity and Access Management (IAM), lihat Mengelola akses menggunakan IAM.Tunggu hingga deployment selesai: proses ini memerlukan waktu sekitar setengah menit. Jika berhasil, command line akan menampilkan URL layanan. URL ini digunakan untuk mengonfigurasi langganan Pub/Sub.
-
Jika Anda ingin men-deploy pembaruan kode ke layanan, ulangi langkah-langkah sebelumnya. Setiap deployment ke layanan membuat revisi baru dan otomatis melayani traffic jika sudah siap.
Terraform
Untuk membuat layanan Cloud Run, tambahkan kode berikut ke file
.tf
Anda yang sudah ada.Ganti nilai untuk
image
dengan URL gambar Anda:REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/pubsub
. -
Mengintegrasikan dengan Pub/Sub
Untuk mengintegrasikan layanan dengan Pub/Sub:
gcloud
Buat atau pilih akun layanan untuk merepresentasikan identitas langganan Pub/Sub.
gcloud iam service-accounts create cloud-run-pubsub-invoker \ --display-name "Cloud Run Pub/Sub Invoker"
Anda dapat menggunakan
cloud-run-pubsub-invoker
atau menggantinya dengan nama yang unik dalam project Google Cloud Anda.Buat langganan Pub/Sub dengan akun layanan:
Berikan izin pada akun layanan invoker untuk memanggil layanan
pubsub-tutorial
Anda:gcloud run services add-iam-policy-binding pubsub-tutorial \ --member=serviceAccount:cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/run.invoker
Mungkin diperlukan waktu beberapa menit sampai perubahan IAM diterapkan. Sementara itu, Anda mungkin melihat error
HTTP 403
dalam log layanan.Izinkan Pub/Sub untuk membuat token autentikasi di project Anda:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Ganti:
- PROJECT_ID dengan ID project Google Cloud Anda.
- PROJECT_NUMBER dengan nomor project Google Cloud Anda.
Project ID dan nomor project tercantum di panel Info project di Konsol Google Cloud untuk project Anda.
Buat langganan Pub/Sub dengan akun layanan:
gcloud pubsub subscriptions create myRunSubscription --topic myRunTopic \ --ack-deadline=600 \ --push-endpoint=SERVICE-URL/ \ --push-auth-service-account=cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com
Ganti:
- myRunTopic dengan topik yang Anda buat sebelumnya.
- SERVICE-URL dengan URL HTTP yang disediakan saat men-deploy layanan. URL ini berfungsi meskipun Anda juga telah menambahkan pemetaan domain.
- PROJECT_ID dengan ID project Google Cloud Anda.
Flag
--push-auth-service-account
mengaktifkan fungsi push Pub/Sub untuk Autentikasi dan otorisasi.Domain layanan Cloud Run Anda secara otomatis didaftarkan untuk digunakan dengan langganan Pub/Sub.
Khusus Cloud Run, ada pemeriksaan autentikasi bawaan bahwa token valid dan otorisasi memeriksa bahwa akun layanan memiliki izin untuk memanggil layanan Cloud Run.
Layanan Anda sekarang terintegrasi sepenuhnya dengan Pub/Sub.
Terraform
Buat atau pilih akun layanan untuk merepresentasikan identitas langganan Pub/Sub.
Buat langganan Pub/Sub dengan akun layanan:
Berikan izin pada akun layanan invoker untuk memanggil layanan
pubsub-tutorial
Anda:Izinkan Pub/Sub untuk membuat token autentikasi di project Anda:
Buat langganan Pub/Sub dengan akun layanan:
Layanan Anda sekarang terintegrasi sepenuhnya dengan Pub/Sub.
Cobalah
Untuk menguji solusi menyeluruh:
Mengirim pesan Pub/Sub ke topik:
gcloud pubsub topics publish myRunTopic --message "Runner"
Anda juga dapat memublikasikan pesan secara terprogram, bukan menggunakan command line seperti yang ditunjukkan dalam tutorial ini. Untuk informasi selengkapnya, lihat Memublikasikan pesan.
Buka log layanan:
- Buka konsol Google Cloud
- Klik layanan
pubsub-tutorial
. Pilih tab Logs.
Log mungkin memerlukan waktu beberapa saat untuk ditampilkan. Jika Anda tidak segera melihatnya, periksa lagi setelah beberapa saat.
Cari gambar "Hello Runner!" pesan.
Pembersihan
Untuk mempelajari kasus penggunaan Cloud Run yang lebih mendalam dengan Pub/Sub, lewati pembersihan untuk saat ini dan lanjutkan dengan tutorial Pemrosesan Gambar dengan Cloud Run.
Jika Anda membuat project baru untuk tutorial ini, hapus project tersebut. Jika Anda menggunakan project yang ada dan ingin mempertahankannya tanpa ada perubahan yang ditambahkan dalam tutorial ini, hapus resource yang dibuat untuk tutorial.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus resource tutorial
Hapus layanan Cloud Run yang Anda deploy dalam tutorial ini:
gcloud run services delete SERVICE-NAME
Dengan SERVICE-NAME adalah nama layanan pilihan Anda.
Anda juga dapat menghapus layanan Cloud Run dari Konsol Google Cloud.
Hapus konfigurasi region default gcloud yang Anda tambahkan selama penyiapan tutorial:
gcloud config unset run/region
Hapus konfigurasi project:
gcloud config unset project
Hapus resource Google Cloud lain yang dibuat dalam tutorial ini:
- Menghapus topik Pub/Sub
myRunTopic
- Menghapus langganan Pub/Sub
myRunSubscription
- Hapus image container Anda yang bernama
REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/pubsub
dari Artifact Registry. - Menghapus akun layanan invoker
cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com
- Menghapus topik Pub/Sub
Langkah berikutnya
- Lihat Membatasi ingress untuk informasi tentang cara meningkatkan keamanan produksi dengan menggunakan kontrol ingress internal untuk membatasi ingress.
- Perluas layanan contoh yang di-deploy dalam tutorial ini untuk menambahkan fungsi pemrosesan gambar yang mengubah gambar yang diupload ke Cloud Storage.
- Pelajari lebih lanjut kecocokan topik dengan arsitektur Pub/Sub dan cara mengelola topik
- Pelajari langganan Pub/Sub lebih lanjut di mengelola langganan.
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.