Halaman ini menjelaskan cara men-deploy dan mengubah fungsi di Cloud Run. Untuk contoh panduan men-deploy fungsi Hello World, lihat Men-deploy fungsi contoh.
Di balik layar, deployment fungsi Cloud Run menggunakan buildpack Google Cloud dan Cloud Build untuk mem-build image container secara otomatis dari kode sumber fungsi Anda tanpa harus menginstal Docker di komputer atau menyiapkan buildpack atau Cloud Build.
Deployment fungsi Cloud Run juga menggunakan Artifact Registry untuk menyimpan artefak dan mengelola image container. Artifact Registry otomatis membuat repositori Artifact Registry
cloud-run-source-deploy
jika project Anda belum membuatnya
dengan nama ini.
Sebelum memulai
Pastikan Anda telah menyiapkan project baru untuk Cloud Run seperti yang dijelaskan di halaman setup.
Aktifkan Artifact Registry, Cloud Build, Cloud Run Admin API, dan Cloud Logging API:
gcloud services enable artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com \ logging.googleapis.com
Secara opsional, aktifkan Eventarc API untuk menggunakan pemicu peristiwa:
gcloud services enable eventarc.googleapis.com
Jika Anda dikenai kebijakan organisasi pembatasan domain yang membatasi pemanggilan yang tidak diautentikasi untuk project, Anda perlu mengakses layanan yang di-deploy seperti yang dijelaskan di bagian Menguji layanan pribadi.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk men-deploy layanan Cloud Run dari sumber, minta administrator untuk memberi Anda peran IAM berikut pada project Anda:
-
Cloud Run Source Developer (
roles/run.sourceDeveloper
) -
Service Account User (
roles/iam.serviceAccountUser
)
Untuk mengetahui daftar peran dan izin IAM yang terkait dengan Cloud Run, lihat peran IAM Cloud Run dan izin IAM Cloud Run. Jika layanan Cloud Run Anda berinteraksi dengan Google Cloud API, seperti Library Klien Cloud, lihat panduan konfigurasi identitas layanan. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat izin deployment dan mengelola akses.
Peran untuk akun layanan
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@ \ --role=roles/cloudbuild.builds.builder
Ganti PROJECT_NUMBER
dengan nomor project Google Cloud Anda, dan PROJECT_ID
dengan project ID Google Cloud Anda. Untuk petunjuk mendetail tentang cara menemukan project ID dan nomor project,
lihat Membuat
dan mengelola project.
Pemberian peran Akun Layanan Cloud Build ke akun layanan default Compute Engine memerlukan waktu beberapa menit untuk disebarkan.
Secara opsional, jika Anda menggunakan Eventarc, berikan peran berikut ke akun layanan Anda:
- Cloud Build Editor (
roles/cloudbuild.builds.editor
) - Cloud Run Admin (
roles/run.admin
) - Buat Akun Layanan (
roles/iam.serviceAccountCreator
) - Cloud Run Invoker (
roles/run.invoker
) - Eventarc Admin (
roles/eventarc.admin
) - Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) - Pelanggan Service Usage (
roles/serviceusage.serviceUsageConsumer
) - Storage Admin (
roles/storage.admin
)
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran tertentu untuk pemicu Eventarc, lihat Peran dan izin untuk target Cloud Run.
- Cloud Build Editor (
Membuat dan men-deploy fungsi
Anda dapat men-deploy fungsi menggunakan Konsol Google Cloud, atau gcloud CLI. Klik tab untuk mendapatkan petunjuk cara menggunakan alat pilihan Anda.
Konsol
Di konsol Google Cloud, buka halaman Cloud Run:
Klik Tulis fungsi.
Di kolom Nama layanan, masukkan nama untuk mendeskripsikan fungsi Anda. Nama layanan hanya boleh diawali dengan huruf, dan berisi maksimal 49 karakter atau kurang, termasuk huruf, angka, atau tanda hubung. Nama layanan tidak boleh diakhiri dengan tanda hubung, dan harus unik per region dan project. Nama layanan tidak dapat diubah nanti dan terlihat secara publik.
Dalam daftar Region, gunakan nilai default, atau pilih region tempat Anda ingin men-deploy fungsi.
Dalam daftar Runtime, gunakan nilai default, atau pilih versi runtime.
Atau, di bagian Pemicu, klik Tambahkan pemicu, lalu pilih opsi. Panel Pemicu Eventarc akan terbuka, tempat Anda dapat mengubah detail berikut untuk pemicu:
Di kolom Nama pemicu, masukkan nama untuk pemicu, atau gunakan nama default.
Pilih Jenis pemicu dari daftar untuk menentukan salah satu jenis pemicu berikut:
Sumber Google untuk menentukan pemicu untuk Pub/Sub, Cloud Storage, Firestore, dan penyedia peristiwa Google lainnya.
Kustom untuk membuat dan menggunakan peristiwa dari kode aplikasi. Ikuti petunjuk di panel Pemicu Eventarc untuk membuat saluran. Saluran adalah resource yang digunakan sebagai pipeline untuk menayangkan peristiwa kustom dari produsen ke konsumen. Peristiwa kustom dipublikasikan ke saluran, dan pemicu Eventarc berlangganan ke peristiwa tersebut.
Pihak ketiga untuk berintegrasi dengan penyedia non-Google yang menawarkan sumber Eventarc. Untuk informasi selengkapnya, lihat Peristiwa pihak ketiga di Eventarc.
Pilih Penyedia peristiwa dari daftar, untuk memilih produk yang menyediakan jenis peristiwa untuk memicu fungsi Anda. Untuk daftar penyedia peristiwa, lihat Penyedia dan tujuan peristiwa.
Pilih Jenis peristiwa dari daftar. Konfigurasi pemicu Anda bervariasi, bergantung pada jenis peristiwa yang didukung. Untuk informasi selengkapnya, lihat Jenis peristiwa.
Di kolom Region, pilih location untuk pemicu Eventarc. Secara umum, lokasi pemicu Eventarc harus cocok dengan lokasi resource Google Cloud yang ingin Anda pantau peristiwanya. Dalam sebagian besar skenario, Anda juga harus men-deploy fungsi di region yang sama. Lihat Memahami lokasi Eventarc untuk mengetahui detail selengkapnya tentang lokasi pemicu Eventarc.
Di kolom Service account, pilih akun layanan. Pemicu Eventarc ditautkan ke akun layanan untuk digunakan sebagai identitas saat memanggil fungsi Anda. Akun layanan pemicu Eventarc Anda harus memiliki izin untuk memanggil fungsi Anda. Secara default, Cloud Run menggunakan akun layanan default Compute Engine.
Jika perlu, tentukan Jalur URL Layanan untuk mengirim permintaan masuk. Ini adalah jalur relatif di layanan tujuan tempat peristiwa untuk pemicu harus dikirim. Misalnya:
/
,/route
,route
, danroute/subroute
.Setelah Anda melengkapi kolom yang wajib diisi, klik Simpan pemicu.
Di bagian Authentication, konfigurasikan hal berikut:
Jika Anda membuat fungsi HTTP publik, misalnya webhook, pilih Allow unauthenticated invocations. Memilih opsi ini akan menetapkan peran IAM Invoker ke ID khusus
allUser
. Anda dapat menggunakan IAM untuk mengedit setelan ini nanti setelah membuat layanan. Jika Anda tidak memiliki izin (peran Admin Cloud Run) untuk memilihnya, layanan akan di-deploy dan memerlukan autentikasi.Jika Anda membuat fungsi yang dipicu peristiwa, pilih Require authentication.
Secara opsional, perbarui konfigurasi tambahan berikut untuk fungsi Anda:
Tetapkan alokasi CPU dan harga sesuai kebutuhan.
Di bagian Penskalaan otomatis layanan, tentukan instance minimum sesuai kebutuhan.
Tetapkan setelan Kontrol traffic masuk sesuai kebutuhan.
Luaskan bagian Container(s), Volumes, Networking, Security, untuk menetapkan setelan opsional lainnya di tab yang sesuai:
Klik Create, dan tunggu Cloud Run membuat layanan menggunakan revisi placeholder.
Konsol akan mengalihkan Anda ke tab Sumber, tempat Anda dapat melihat kode sumber fungsi. Klik Simpan dan deploy ulang.
Di tab Sumber, Anda dapat mengklik Tampilkan Payload secara opsional untuk melihat contoh payload peristiwa yang masuk.
Setelah deployment, uji fungsi yang dibuat dengan mengklik tombol Test.
gcloud
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
Update komponen
gcloud
ke versi terbaru:gcloud components update
Jalankan perintah berikut di direktori yang berisi kode contoh:
gcloud beta run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE \ --region REGION
Ganti:
FUNCTION dengan nama fungsi yang Anda deployment. Anda dapat menghilangkan parameter ini sepenuhnya, tetapi Anda akan diminta untuk memasukkan nama jika mengabaikannya.
FUNCTION_ENTRYPOINT dengan titik entri ke fungsi Anda dalam kode sumber. Ini adalah kode yang dijalankan Cloud Run saat fungsi Anda berjalan. Nilai flag ini harus berupa nama fungsi atau nama class yang sepenuhnya memenuhi syarat yang ada dalam kode sumber Anda.
BASE_IMAGE dengan lingkungan image dasar untuk fungsi Anda. Untuk mengetahui detail selengkapnya tentang image dasar dan paket yang disertakan dalam setiap image, lihat Image dasar runtime.
REGION dengan region Google Cloud tempat Anda ingin men-deploy fungsi. Misalnya,
us-central1
.
Opsional:
- Jika Anda membuat fungsi HTTP publik, misalnya webhook, tentukan tanda
--allow-unauthenticated
. Flag ini menetapkan peran Cloud Run IAM Invoker ke ID khususallUser
. Anda dapat menggunakan IAM untuk mengedit setelan ini nanti setelah membuat layanan. Jika membuat fungsi yang dipicu peristiwa atau layanan yang diautentikasi, Anda dapat menghapus tanda ini.
Secara opsional, setelah men-deploy fungsi, Anda dapat menambahkan pemicu Eventarc ke fungsi. Untuk menambahkan pemicu, jalankan perintah berikut:
gcloud eventarc triggers create EVENTARC_TRIGGER_NAME \
--location=EVENTARC_TRIGGER_LOCATION \
--destination-run-service=FUNCTION \
--destination-run-region=REGION \
--event-filters="type=EVENTARC_FILTER_TYPE" \
--event-filters="EVENTARC_EVENT_FILTER" \
--service-account=EVENTARC_TRIGGER_SERVICE_ACCOUNT
Ganti:
EVENTARC_TRIGGER_NAME dengan nama pemicu Eventarc.
EVENTARC_TRIGGER_LOCATION dengan lokasi untuk pemicu Eventarc. Secara umum, lokasi pemicu Eventarc harus cocok dengan lokasi resource Google Cloud yang ingin Anda pantau peristiwanya. Dalam sebagian besar skenario, Anda juga harus men-deploy fungsi di region yang sama. Lihat Memahami lokasi Eventarc untuk mengetahui detail selengkapnya tentang lokasi pemicu Eventarc.
FUNCTION dengan nama fungsi yang di-deploy.
REGION dengan region Cloud Run fungsi.
EVENTARC_FILTER_TYPE dengan filter peristiwa yang dipantau pemicu. Peristiwa yang cocok dengan semua filter
--event-filters
akan memicu panggilan ke fungsi Anda. Setiap pemicu harus memiliki jenis peristiwa yang didukung dalam bentuk--event-filters="type=EVENTARC_FILTER_TYPE"
. Jenis peristiwa ini tidak dapat diubah setelah dibuat. Untuk mengubahEVENT_FILTER_TYPE
, buat pemicu baru dan hapus pemicu lama. Secara opsional, Anda dapat mengulangi flag--event-filters
dengan filter yang didukung dalam bentukATTRIBUTE=VALUE
untuk menambahkan filter lainnya.EVENTARC_TRIGGER_SERVICE_ACCOUNT dengan akun layanan. Pemicu Eventarc ditautkan ke akun layanan untuk digunakan sebagai identitas saat memanggil fungsi Anda. Akun layanan pemicu Eventarc Anda harus memiliki izin untuk memanggil fungsi Anda. Secara default, Cloud Run menggunakan Akun layanan komputasi default.
Terraform
Untuk mengelola fungsi menggunakan Terraform, Anda harus mem-build kode fungsi ke dalam image container, lalu menentukan layanan Cloud Run dalam konfigurasi Terraform menggunakan resource google_cloud_run_v2_service
dari Penyedia Google Cloud Platform.
Ikuti petunjuk tentang mem-build fungsi untuk membuat image container. Salin jalur lengkap image penampung untuk variabel IMAGE_URL yang digunakan di langkah berikutnya.
Buat file
main.tf
baru dengan konten ini:provider "google" { project = "PROJECT-ID" } resource "google_cloud_run_v2_service" "default" { name = "SERVICE" location = "REGION" client = "terraform" template { containers { image = "IMAGE_URL" } } } resource "google_cloud_run_v2_service_iam_member" "noauth" { location = google_cloud_run_v2_service.default.location name = google_cloud_run_v2_service.default.name role = "roles/run.invoker" member = "allUsers" }
Ganti:
- PROJECT-ID dengan ID project Google Cloud.
- REGION dengan region Google Cloud.
- SERVICE dengan nama layanan Cloud Run Anda. Nama layanan harus terdiri dari 49 karakter atau kurang dan harus unik per region dan project.
- IMAGE_URL dengan referensi ke image container, misalnya,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL memiliki bentukLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
Konfigurasi ini mengizinkan akses publik (setara dengan
--allow-unauthenticated
). Untuk membuat layanan menjadi pribadi, hapus stanzagoogle_cloud_run_v2_service_iam_member
.Lakukan inisialisasi Terraform:
terraform init
Terapkan konfigurasi Terraform:
terraform apply
Konfirmasi bahwa Anda ingin menerapkan tindakan yang dijelaskan dengan memasukkan
yes
.
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
(Sao 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.
Mengaktifkan percobaan ulang peristiwa
Eventarc menggunakan Pub/Sub sebagai lapisan transpornya dan memiliki kebijakan percobaan ulang default yang mungkin tidak berfungsi dengan baik untuk fungsi Anda.
Setelah membuat pemicu Eventarc, sebaiknya update kebijakan percobaan ulang di Eventarc dan konfigurasikan topik dead-letter di Pub/Sub.
Mengubah fungsi yang ada
Anda dapat mengubah konfigurasi atau kode fungsi:
Mengubah konfigurasi
Untuk mengubah parameter konfigurasi, seperti alokasi CPU, memori, dan konektivitas VPC:
Konsol
Di konsol Google Cloud, buka halaman Cloud Run:
Temukan layanan yang ingin Anda perbarui dalam daftar layanan, lalu klik untuk membuka detail layanan tersebut.
Klik Edit and deploy new revision untuk menampilkan formulir deployment revisi.
Ubah setelan konfigurasi apa pun.
Klik Deploy dan tunggu hingga deployment selesai.
gcloud
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
Untuk memperbarui satu atau beberapa setelan konfigurasi layanan, gunakan perintah
gcloud beta run services update SERVICE
dengan flag command line konfigurasi yang ingin Anda perbarui. Ganti SERVICE dengan nama layanan.
Men-deploy ulang kode sumber baru
Anda dapat mengubah image dasar, runtime, dan kode sumber fungsi menggunakan konsol Google Cloud atau gcloud CLI.
Klik tab untuk mendapatkan petunjuk cara menggunakan alat pilihan Anda.
Konsol
Di konsol Google Cloud, buka halaman Cloud Run:
Temukan fungsi yang ingin Anda perbarui dalam daftar Layanan, lalu klik untuk membuka detail fungsi tersebut.
Buka tab Sumber, lalu klik Edit Sumber.
Klik
Edit runtime dan update keamanan di samping Base image, lalu pilih Runtime atau Environment yang berbeda dari daftar sesuai kebutuhan, lalu klik Save.Ubah Titik entri fungsi sesuai kebutuhan.
Di bagian File, pilih
Tambahkan file untuk membuat file baru, Ganti nama file untuk mengganti nama file, atau Hapus file untuk menghapus file.Di bagian Kode, ubah kode sumber sesuai kebutuhan.
Klik Save and Redeploy, lalu tunggu hingga deployment selesai.
gcloud
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
Jalankan perintah berikut di direktori yang berisi kode sumber fungsi:
gcloud beta run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE \ --region REGION
Ganti:
FUNCTION dengan nama fungsi yang ingin Anda ubah.
FUNCTION_ENTRYPOINT dengan titik entri ke fungsi Anda dalam kode sumber.
BASE_IMAGE dengan lingkungan image dasar untuk fungsi Anda. Pada umumnya, Anda dapat menentukan ID runtime, misalnya,
nodejs22
.Atau, jika ingin menggunakan paket sistem tertentu dalam stack atau menentukan region tempat image dasar didownload, Anda dapat menentukan salah satu dari hal berikut:
- Jalur image dasar lengkap, seperti
us-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22
. Opsi ini memungkinkan Anda menentukan image dasar, paket sistem tertentu dalam stack, dan region tempat image dasar didownload. - Alias jalur image dasar lengkap, seperti
google-22/nodejs22
ataugoogle-22-full/nodejs22
. Opsi alias yang lebih singkat ini memungkinkan Anda menentukan image dasar dan paket sistem tertentu dalam stack.
Untuk mengetahui detail selengkapnya tentang image dasar dan paket yang disertakan dalam setiap image, lihat Image dasar runtime.
- Jalur image dasar lengkap, seperti
REGION dengan region Google Cloud tempat Anda ingin men-deploy fungsi. Misalnya,
us-central1
.
Flag opsional
Anda dapat mengonfigurasi flag opsional berikut saat mengubah fungsi:
Flag Variabel lingkungan build untuk menentukan variabel lingkungan selama langkah build, seperti untuk mengonfigurasi sertifikat atau parameter khusus waktu build.
Flag Worker pool untuk menentukan kumpulan pekerja yang akan digunakan dalam konteks build yang diamankan Kontrol Layanan VPC.
Flag Akun layanan build kustom untuk menentukan alternatif akun layanan build default guna meningkatkan keamanan.
Flag Pembaruan image dasar otomatis untuk menonaktifkan update otomatis. Secara default, update keamanan otomatis diaktifkan untuk fungsi.
Langkah selanjutnya
Setelah men-deploy fungsi baru, Anda dapat melakukan hal berikut:
- Melihat atau menghapus fungsi
- Mengelola layanan
- Lihat log
- Mem-build container fungsi di toolchain Anda sendiri dan men-deploy-nya ke Cloud Run
- Pemicu dengan peristiwa
- Memicu fungsi dari Cloud Storage menggunakan Eventarc