Men-deploy fungsi di Cloud Run

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

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

  2. 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
    
  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 mendapatkan izin yang Anda perlukan guna men-deploy layanan Cloud Run dari sumber, minta administrator untuk memberi Anda peran IAM berikut pada project Anda:

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

  • Agar Cloud Build dapat mem-build sumber Anda, berikan peran Cloud Build Service Account ke akun layanan default Compute Engine dengan menjalankan perintah berikut:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
        --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.

  • 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

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

      Buka Cloud Run

    2. Klik Tulis fungsi.

    3. 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.

    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 untuk pemicu, atau gunakan nama default.

      2. 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.

      3. 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.

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

      5. 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.

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

      7. 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, dan route/subroute.

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

    7. 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.

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

      1. Tetapkan alokasi CPU dan harga sesuai kebutuhan.

      2. Di bagian Penskalaan otomatis layanan, tentukan instance minimum sesuai kebutuhan.

      3. Tetapkan setelan Kontrol traffic masuk sesuai kebutuhan.

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

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

    10. Konsol akan mengalihkan Anda ke tab Sumber, tempat Anda dapat melihat kode sumber fungsi. Klik Simpan dan deploy ulang.

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

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

    gcloud

    1. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    2. Update komponen gcloud ke versi terbaru:

      gcloud components update
    3. 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 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 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 mengubah EVENT_FILTER_TYPE, buat pemicu baru dan hapus pemicu lama. Secara opsional, Anda dapat mengulangi flag --event-filters dengan filter yang didukung dalam bentuk ATTRIBUTE=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.

    1. Ikuti petunjuk tentang mem-build fungsi untuk membuat image container. Salin jalur lengkap image penampung untuk variabel IMAGE_URL yang digunakan di 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 {
            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 bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

      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 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) ikon daun CO2 Rendah
    • europe-southwest1 (Madrid) ikon daun CO2 Rendah
    • europe-west1 (Belgia) ikon daun CO2 Rendah
    • europe-west4 (Belanda) ikon daun CO2 Rendah
    • europe-west8 (Milan)
    • europe-west9 (Paris) ikon daun CO2 Rendah
    • me-west1 (Tel Aviv)
    • us-central1 (Iowa) ikon daun CO2 Rendah
    • us-east1 (South Carolina)
    • us-east4 (North Virginia)
    • us-east5 (Columbus)
    • us-south1 (Dallas) ikon daun CO2 Rendah
    • us-west1 (Oregon) ikon daun 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) ikon daun CO2 Rendah
    • europe-west12 (Turin)
    • europe-west2 (London, Inggris Raya) ikon daun CO2 Rendah
    • europe-west3 (Frankfurt, Jerman) ikon daun CO2 Rendah
    • europe-west6 (Zurich, Swiss) ikon daun CO2 Rendah
    • me-central1 (Doha)
    • me-central2 (Dammam)
    • northamerica-northeast1 (Montreal) ikon daun CO2 Rendah
    • northamerica-northeast2 (Toronto) ikon daun CO2 Rendah
    • southamerica-east1 (São Paulo, Brasil) ikon daun CO2 Rendah
    • southamerica-west1 (Santiago, Cile) ikon daun CO2 Rendah
    • 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.

    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

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

      Buka Cloud Run

    2. Temukan layanan yang ingin Anda perbarui dalam daftar layanan, lalu klik untuk membuka detail layanan tersebut.

    3. Klik Edit and deploy new revision untuk menampilkan formulir deployment revisi.

    4. Ubah setelan konfigurasi apa pun.

    5. Klik Deploy dan tunggu hingga deployment selesai.

    gcloud

    1. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    2. 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

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

      Buka Cloud Run

    2. Temukan fungsi yang ingin Anda perbarui dalam daftar Layanan, lalu klik untuk membuka detail fungsi tersebut.

    3. Buka tab Sumber, lalu klik Edit Sumber.

    4. Klik Edit runtime dan update keamanan di samping Base image, lalu pilih Runtime atau Environment yang berbeda dari daftar sesuai kebutuhan, lalu klik Save.

    5. Ubah Titik entri fungsi sesuai kebutuhan.

    6. Di bagian File, pilih Tambahkan file untuk membuat file baru, Ganti nama file untuk mengganti nama file, atau Hapus file untuk menghapus file.

    7. Di bagian Code, ubah kode sumber sesuai kebutuhan.

    8. Klik Save and Redeploy, lalu tunggu hingga deployment selesai.

    gcloud

    1. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    2. 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 atau google-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.

      • 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: