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 akan menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Pub/Sub and Cloud Run APIs.
- Instal dan lakukan inisialisasi gcloud CLI.
- Perbarui komponen:
gcloud components update
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan tutorial, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda:
-
Editor Cloud Build (
roles/cloudbuild.builds.editor
) -
Cloud Run Admin (
roles/run.admin
) -
Buat Akun Layanan (
roles/iam.serviceAccountCreator
) -
Project IAM Admin ()
roles/resourcemanager.projectIamAdmin
-
Editor Pub/Sub (
roles/pubsub.editor
) -
Service Account User (
roles/iam.serviceAccountUser
) -
Pelanggan Service Usage (
roles/serviceusage.serviceUsageConsumer
) -
Storage Admin (
roles/storage.admin
)
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Menyiapkan 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)asia-south1
(Mumbai, India)europe-north1
(Finlandia) CO2 Rendaheurope-southwest1
(Madrid) CO2 Rendaheurope-west1
(Belgia) CO2 Rendaheurope-west4
(Belanda) CO2 Rendaheurope-west8
(Milan)europe-west9
(Paris) CO2 Rendahme-west1
(Tel Aviv)us-central1
(Iowa) CO2 Rendahus-east1
(South Carolina)us-east4
(North Virginia)us-east5
(Columbus)us-south1
(Dallas) CO2 Rendahus-west1
(Oregon) CO2 Rendah
Tergantung harga Tingkat 2
africa-south1
(Johannesburg)asia-east2
(Hong Kong)asia-northeast3
(Seoul, Korea Selatan)asia-southeast1
(Singapura)asia-southeast2
(Jakarta)asia-south2
(Delhi, India)australia-southeast1
(Sydney)australia-southeast2
(Melbourne)europe-central2
(Warsawa, Polandia)europe-west10
(Berlin) CO2 Rendaheurope-west12
(Turin)europe-west2
(London, Inggris Raya) CO2 Rendaheurope-west3
(Frankfurt, Jerman) CO2 Rendaheurope-west6
(Zurich, Swiss) CO2 Rendahme-central1
(Doha)me-central2
(Dammam)northamerica-northeast1
(Montreal) CO2 Rendahnorthamerica-northeast2
(Toronto) CO2 Rendahsouthamerica-east1
(São Paulo, Brasil) CO2 Rendahsouthamerica-west1
(Santiago, Cile) CO2 Rendahus-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 Mengintegrasikan dengan Pub/Sub.
Mengirimkan kode
Kode pengiriman terdiri dari tiga langkah: mem-build image container dengan Cloud Build, mengupload image container ke Artifact Registry, dan men-deploy image container ke Cloud Run.
Untuk kode pengiriman Anda:
-
Build container Anda dan publikasikan di Artifact Registry:
Node.js
Ganti:gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/pubsub
- 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.
Python
Ganti:gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/pubsub
- 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.
Go
Ganti:gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/pubsub
- 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
-
Gunakan helper kredensial gcloud CLI
untuk memberi otorisasi Docker agar dikirim ke Artifact Registry Anda.
gcloud auth configure-docker
-
Gunakan Plugin Maven Jib untuk mem-build dan mengirim container ke Artifact Registry.
Ganti:mvn compile jib:build -D image=REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/pubsub
- 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 diperlukan.
C#
Ganti:gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/pubsub
- 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:
Ganti:gcloud run deploy pubsub-tutorial --image REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/pubsub --no-allow-unauthenticated
- 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 Anda konfigurasikan sebelumnya pada 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 Mengintegrasikan dengan Pub/Sub untuk mengetahui detail selengkapnya tentang cara konfigurasi ini. 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:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the 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 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.