Men-deploy Cloud Run Function

Halaman ini menjelaskan cara men-deploy dan mengubah fungsi Cloud Run. Untuk contoh panduan men-deploy fungsi Hello World, lihat Men-deploy fungsi contoh.

Deployment fungsi Cloud Run secara otomatis menggunakan buildpack Google Cloud dan Cloud Build untuk mem-build image container dari kode sumber fungsi Anda. Anda tidak perlu 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 bernama cloud-run-source-deploy, jika project Anda belum membuat repositori dengan nama ini.

Jika Anda memiliki fungsi yang sudah ada dan perlu menggunakan perintah gcloud functions deploy, Cloud Functions v2 API, atau konfigurasi Terraform google_cloudfunctions2_function untuk kompatibilitas mundur, lihat Men-deploy fungsi dengan perintah gcloud functions deploy.

Sebelum memulai

  1. Pastikan Anda telah menyiapkan project baru untuk Cloud Run, seperti yang dijelaskan di halaman penyiapan.

  2. Aktifkan Artifact Registry API, Cloud Build API, 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
    
  3. 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 men-deploy fungsi Cloud Run, Anda atau administrator Anda harus memberikan peran IAM berikut ke akun deployer dan akun layanan:

Klik untuk melihat peran yang diperlukan untuk akun deployer

Untuk mendapatkan izin yang Anda perlukan untuk membangun dan men-deploy dari sumber, minta administrator untuk memberi Anda peran IAM berikut:

Klik untuk melihat peran yang diperlukan untuk akun layanan Cloud Build

Cloud Build secara otomatis menggunakan akun layanan default Compute Engine sebagai akun layanan Cloud Build default untuk membangun kode sumber dan resource Cloud Run Anda, kecuali jika Anda mengganti perilaku ini. Agar Cloud Build dapat membangun sumber Anda, minta administrator Anda untuk memberikan peran Cloud Run Builder (roles/run.builder) ke akun layanan default Compute Engine di project Anda:

  gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --role=roles/run.builder
  

Ganti PROJECT_NUMBER dengan nomor project Google Cloud Anda, dan PROJECT_ID dengan ID project Google Cloud Anda. Untuk mengetahui petunjuk mendetail tentang cara menemukan project ID dan nomor project Anda, lihat Membuat dan mengelola project.

Pemberian peran builder Cloud Run ke akun layanan default Compute Engine memerlukan waktu beberapa menit untuk berlaku.

Klik untuk melihat peran yang diperlukan untuk akun layanan jika menggunakan Eventarc

Jika Anda menggunakan Eventarc, berikan peran berikut ke akun layanan Anda:

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran tertentu untuk pemicu Eventarc, lihat Peran dan izin untuk target Cloud Run.

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.

Membuat dan men-deploy fungsi

Anda dapat men-deploy fungsi Cloud Run menggunakan konsol Google Cloud , atau gcloud CLI. Klik tab untuk mendapatkan petunjuk cara menggunakan alat pilihan Anda.

Konsol

  1. Di konsol Google Cloud , buka halaman Services Cloud Run:

    Buka Cloud Run

  2. Klik Write a function.

  3. Di kolom Nama layanan, masukkan nama untuk mendeskripsikan fungsi Anda. Nama layanan hanya boleh diawali dengan huruf, dan berisi hingga 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 akan terlihat secara publik.

  4. Dalam daftar Region, gunakan nilai default, atau pilih region tempat Anda ingin men-deploy fungsi.

  5. Dalam daftar Runtime, gunakan nilai default, atau pilih versi runtime.

  6. Atau, di bagian Pemicu, klik Tambahkan pemicu, lalu pilih opsi. Panel Pemicu Eventarc akan terbuka, tempat Anda dapat mengubah detail berikut untuk pemicu:

    1. Di kolom Nama pemicu, masukkan nama pemicu, atau gunakan nama default.

    2. Pilih Jenis pemicu dari daftar untuk menentukan salah satu jenis pemicu berikut:

      • Sumber Google untuk menentukan pemicu bagi Pub/Sub, Cloud Storage, Firestore, dan penyedia peristiwa Google lainnya.

      • Kustom untuk membuat dan menggunakan peristiwa dari kode aplikasi Anda. 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 mengetahui informasi selengkapnya, lihat Peristiwa pihak ketiga di Eventarc.

    3. Pilih Event provider dari daftar, untuk memilih produk yang menyediakan jenis peristiwa untuk memicu fungsi Anda. Untuk daftar penyedia peristiwa, lihat Penyedia dan tujuan peristiwa.

    4. Pilih Jenis peristiwa dari daftar. Konfigurasi pemicu Anda bervariasi, bergantung pada jenis peristiwa yang didukung. Untuk mengetahui informasi selengkapnya, lihat Jenis peristiwa.

    5. Di kolom Region, pilih 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.

    6. 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 harus memiliki izin untuk memanggil fungsi Anda. Secara default, Cloud Run menggunakan akun layanan default Compute Engine.

    7. Secara opsional, tentukan jalur URL Layanan untuk mengirim permintaan masuk ke. Ini adalah jalur relatif di layanan tujuan yang akan menjadi tempat pengiriman peristiwa untuk pemicu. Misalnya: /, /route, route, dan route/subroute.

    8. Setelah Anda melengkapi kolom yang wajib diisi, klik Simpan pemicu.

  7. Di bagian Authentication, konfigurasi hal berikut:

    • Jika Anda membuat fungsi HTTP publik, misalnya webhook, pilih Izinkan akses publik. 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 memilih opsi ini, layanan akan di-deploy dan memerlukan autentikasi.

    • Jika Anda membuat fungsi yang dipicu peristiwa, pilih Require authentication.

  8. Secara opsional, perbarui konfigurasi tambahan berikut untuk fungsi Anda:

    1. Tetapkan Penagihan sesuai kebutuhan.

    2. Di bagian Penskalaan layanan, jika Anda menggunakan penskalaan otomatis Cloud Run default, Anda dapat menentukan instance minimum. Jika Anda menggunakan penskalaan manual, tentukan jumlah instance untuk layanan.

    3. Tetapkan setelan Kontrol ingress sesuai kebutuhan.

    4. Luaskan bagian Container(s), Volumes, Networking, Security untuk menetapkan setelan opsional lainnya di tab yang sesuai:

  9. Klik Buat, dan tunggu hingga Cloud Run membuat layanan menggunakan revisi placeholder.

  10. Konsol akan mengalihkan Anda ke tab Source tempat Anda dapat melihat kode sumber fungsi. Klik Save and redeploy.

  11. Di tab Sumber, Anda dapat mengklik Tampilkan Payload untuk melihat contoh payload peristiwa masuk.

  12. Setelah deployment, uji fungsi yang dibuat dengan mengklik tombol Test.

gcloud

  1. Di konsol Google Cloud , aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah konsol Google Cloud , sesi Cloud Shell akan dimulai 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 pada sesi.

  2. Update komponen gcloud ke versi terbaru:

    gcloud components update
  3. Jalankan perintah berikut di direktori yang berisi kode contoh:

    gcloud run deploy FUNCTION \
           --source . \
           --function FUNCTION_ENTRYPOINT \
           --base-image BASE_IMAGE \
           --region REGION
    

    Ganti:

    • FUNCTION dengan nama fungsi yang Anda deploy. Anda dapat menghilangkan parameter ini sepenuhnya, tetapi Anda akan diminta untuk memasukkan nama jika menghilangkannya.

    • 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, seperti nodejs24, python314, go126, java25, dotnet10, ruby40, atau php85. Untuk mengetahui detail selengkapnya tentang image dasar dan paket yang disertakan dalam setiap image, lihat Image dasar runtime.

    • REGION dengan Google Cloud region tempat Anda ingin men-deploy fungsi Anda. Contoh, europe-west1.

    Opsional:

    • Jika Anda membuat fungsi HTTP publik, misalnya webhook, tentukan tanda --allow-unauthenticated. Flag ini menetapkan peran Cloud Run IAM Invoker ke ID khusus allUser. Anda dapat menggunakan IAM untuk mengedit setelan ini nanti setelah membuat layanan. Jika membuat fungsi yang dipicu peristiwa atau layanan yang diautentikasi, Anda dapat menghilangkan flag 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 memicu panggilan ke fungsi Anda. Setiap pemicu harus memiliki jenis peristiwa yang didukung dalam bentuk --event-filters="type=EVENTARC_FILTER_TYPE". Jenis acara ini tidak dapat diubah setelah dibuat. Untuk mengubah EVENT_FILTER_TYPE, buat pemicu baru dan hapus pemicu lama. Secara opsional, Anda dapat mengulangi tanda --event-filters dengan filter yang didukung dalam bentuk ATTRIBUTE=VALUE untuk menambahkan lebih banyak filter.

  • 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 harus memiliki izin untuk memanggil fungsi Anda. Secara default, Cloud Run menggunakan Akun layanan komputasi default.

Terraform

Untuk mengelola fungsi menggunakan Terraform, Anda harus membangun 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.

  1. Ikuti petunjuk untuk membangun fungsi dari awal guna membuat image container yang kompatibel dengan update keamanan otomatis. Salin jalur lengkap image container untuk variabel IMAGE_URL yang digunakan pada langkah berikutnya.

  2. 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 {
          name = "SERVICE"
          image = "IMAGE_URL" # Container image built from your function in the previous step.
          base_image_uri = "BASE_IMAGE"
        }
      }
      build_config{
        function_target = "FUNCTION_TARGET"
        image_uri = "IMAGE_URL"
        base_image = "BASE_IMAGE"
        enable_automatic_updates = true
      }
    }
    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 Google Cloud project ID.
    • REGION dengan region Google Cloud . Contohnya, europe-west1.
    • 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 yang hanya berisi fungsi yang Anda buat
    • BASE_IMAGE dengan lingkungan image dasar untuk fungsi Anda, seperti nodejs24, python314, go126, java25, dotnet10, ruby40, atau php85. Untuk mengetahui detail selengkapnya tentang image dasar dan paket yang disertakan dalam setiap image, lihat Image dasar runtime.
    • FUNCTION_TARGET dengan nama fungsi yang ingin Anda gunakan sebagai titik entri.

    Konfigurasi ini mengizinkan akses publik (setara dengan --allow-unauthenticated). Untuk membuat layanan menjadi pribadi, hapus stanza google_cloud_run_v2_service_iam_member.

  3. Lakukan inisialisasi Terraform:

    terraform init
  4. 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 produk Google Cloud lain yang digunakan oleh layanan Cloud Run Anda. Menggunakan Google Cloud produk secara bersamaan di beberapa lokasi dapat memengaruhi latensi serta biaya layanan Anda.