Men-deploy fungsi di Cloud Run

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

Di balik layar, deployment fungsi Cloud Run menggunakan Buildpack Google Cloud dan Cloud Build untuk membangun image container secara otomatis dari kode sumber fungsi Anda tanpa harus menginstal Docker di mesin atau menyiapkan buildpack atau Cloud Build.

Deployment fungsi Cloud Run juga menggunakan Artifact Registry untuk menyimpan artefak dan mengelola image container. Artifact Registry secara otomatis membuat Artifact Registry repositori 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 diperlukan untuk 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 antarmuka layanan Cloud Run Anda 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 membangun sumber Anda, berikan izin Akun Layanan Cloud Build ke akun layanan default Compute Engine dengan menjalankan perintah berikut:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:PROJECT_NUMBER-compute@ \
        --role=roles/cloudbuild.builds.builder
    

    Ganti PROJECT_NUMBER dengan Google Cloud Anda nomor project, dan PROJECT_ID dengan data Google Cloud project ID Anda.

    Anda dapat menemukan nomor project dan ID project Anda di Selamat datang halaman Konsol Google Cloud.

  • Membuat dan men-deploy fungsi

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

    Konsol

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

      Buka Cloud Run

    2. Klik Write a function.

    3. Di kolom Nama layanan, masukkan nama untuk mendeskripsikan fungsi tersebut. 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 sesuai region dan project. Nama layanan tidak dapat diubah nanti dan terlihat secara publik.

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

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

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

      1. Pada Nama pemicu yang diajukan, masukkan nama untuk pemicu tersebut, atau gunakan nama defaultnya.

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

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

        • Kustom untuk membuat dan menggunakan peristiwa dari pada 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 dan pemicu Eventarc berlangganan ke peristiwa.

        • Pihak ketiga yang melakukan integrasi dengan penyedia non-Google yang menawarkan sumber Eventarc. Untuk informasi selengkapnya, lihat Peristiwa pihak ketiga di Eventarc.

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

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

      5. Di kolom Region, pilih lokasi untuk Eventarc pemicu. Secara umum, lokasi Eventarc harus cocok dengan lokasi resource Google Cloud yang ingin Anda pantau peristiwanya. Dalam sebagian besar skenario, Anda juga harus men-deploy fungsi Anda 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 gunakan sebagai identitas saat memanggil fungsi Anda. Nama Akun layanan pemicu Eventarc harus memiliki izin untuk memanggil fungsi Anda. Secara default, Cloud Run menggunakan akun layanan default Compute Engine.

      7. (Opsional) Tentukan Jalur URL layanan untuk mengirim permintaan masuk yang dituju. Ini adalah jalur relatif pada layanan tujuan untuk mana peristiwa untuk pemicu harus dikirim. Contoh: /, /route, route, dan route/subroute.

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

    7. Di bagian Authentication, konfigurasikan hal berikut:

      • Jika Anda membuat fungsi HTTP publik, misalnya webhook, pilih Izinkan pemanggilan yang tidak diautentikasi. 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 Cloud Run Admin) untuk memilih opsi ini, layanan akan di-deploy dan memerlukan otentikasi.

      • Jika Anda membuat fungsi yang dipicu peristiwa, pilih Wajibkan autentikasi.

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

      1. Tetapkan alokasi dan harga CPU sesuai kebutuhan.

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

      3. Tetapkan setelan Kontrol masuk sesuai kebutuhan.

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

    9. Klik Create, dan tunggu hingga Cloud Run membuat layanan menggunakan revisi {i>placeholder<i}.

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

    11. Di tab Source, Anda dapat mengklik Show Payload (opsional) untuk melihat contoh {i>payload<i} dari peristiwa yang 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 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.

    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 untuk deployment. Anda dapat menghilangkan parameter ini sepenuhnya, tetapi Anda akan diminta untuk memberikan nama jika Anda menghilangkannya.

      • FUNCTION_ENTRYPOINT dengan titik entri ke fungsi Anda di kode sumber Anda. Ini adalah kode yang dijalankan Cloud Run saat fungsi berjalan. Nilai penanda ini harus berupa nama fungsi atau nama class yang sepenuhnya memenuhi syarat yang ada dalam kode sumber.

      • BASE_IMAGE dengan lingkungan image dasar untuk fungsi tersebut. Untuk mengetahui detail selengkapnya tentang image dasar dan paket yang disertakan di setiap image, lihat Image dasar runtime.

      • REGION dengan Google Cloud region tempat Anda ingin men-deploy fungsi Anda. Misalnya, us-central1.

      Opsional:

      • Jika Anda membuat fungsi HTTP publik, misalnya webhook, tentukan flag --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 Anda membuat fungsi yang dipicu peristiwa atau layanan terautentikasi, Anda dapat menghilangkan penanda.

    Secara opsional, setelah men-deploy fungsi, Anda dapat menambahkan Eventarc {i>trigger<i} ke fungsi Anda. 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 Eventarc pemicu.

    • EVENTARC_TRIGGER_LOCATION dengan lokasi untuk Pemicu Eventarc. Secara umum, lokasi Eventarc harus cocok dengan lokasi resource Google Cloud yang ingin Anda pantau peristiwanya. Dalam sebagian besar skenario, Anda juga harus men-deploy fungsi Anda 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 dari fungsi.

    • EVENTARC_FILTER_TYPE dengan filter peristiwa yang memicu monitor. Peristiwa yang cocok dengan semua filter --event-filters memicu panggilan ke fungsi Anda. Setiap pemicu harus memiliki jenis peristiwa 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 yang lama. Atau, Anda dapat mengulangi tanda --event-filters dengan dukungan filter di bentuk ATTRIBUTE=VALUE untuk menambahkan filter lainnya.

    • EVENTARC_TRIGGER_SERVICE_ACCOUNT dengan akun layanan. Pemicu Eventarc ditautkan ke akun layanan untuk gunakan sebagai identitas saat memanggil fungsi Anda. Nama Akun layanan pemicu Eventarc harus memiliki izin untuk memanggil fungsi Anda. Secara default, Cloud Run menggunakan Akun layanan komputasi default.

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

    Aktifkan percobaan ulang peristiwa

    Eventarc menggunakan Pub/Sub sebagai lapisan transportnya dan memiliki secara {i>default<i} yang mungkin tidak bekerja dengan baik untuk fungsi Anda.

    Setelah membuat pemicu Eventarc, sebaiknya Anda memperbarui kebijakan coba lagi di Eventarc dan mengonfigurasi topik yang dihentikan pengirimannya di Pub/Sub.

    Mengubah fungsi yang ada

    Anda dapat mengubah konfigurasi atau kode fungsi Anda:

    Ubah 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. Cari layanan yang ingin Anda perbarui di daftar layanan, dan 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. Di konsol Google Cloud, aktifkan Cloud Shell.

      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.

    2. Untuk memperbarui satu atau beberapa setelan konfigurasi layanan, gunakan gcloud beta run services update SERVICE dengan penanda baris perintah pada konfigurasi yang ingin Anda memperbarui. Ganti SERVICE dengan nama layanan.

    Deploy ulang kode sumber baru

    Anda dapat memodifikasi 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. Cari fungsi yang ingin Anda perbarui dalam daftar Services, dan klik untuk membuka detail dari fungsi tersebut.

    3. Buka tab Sumber, lalu klik Edit Sumber.

    4. Klik Edit update runtime dan keamanan di samping Base image, lalu pilih Runtime atau Environment 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 Kode, ubah kode sumber sesuai kebutuhan.

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

    gcloud

    1. Di konsol Google Cloud, aktifkan Cloud Shell.

      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.

    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 di kode sumber Anda.

      • BASE_IMAGE dengan lingkungan image dasar untuk fungsi tersebut. Di sebagian besar kasus, Anda dapat menentukan ID runtime, misalnya, nodejs22.

        Atau, jika Anda ingin menggunakan paket sistem tertentu dalam menumpuk atau menentukan region asal image dasar didownload, Anda dapat menentukan salah satu 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, yakni sistem tertentu paket dalam tumpukan, dan region tempat image dasar berada yang didownload.
        • Alias jalur image dasar lengkap, seperti google-22/nodejs22 atau google-22-full/nodejs22. Opsi alias yang lebih pendek ini memungkinkan Anda menetapkan image dasar dan paket sistem tertentu dalam stack.

        Untuk mengetahui detail selengkapnya tentang image dasar dan paket yang disertakan di setiap image, lihat Image dasar runtime.

      • REGION dengan Google Cloud region tempat Anda ingin men-deploy fungsi Anda. Misalnya, us-central1.

      Tanda opsional

      Anda dapat mengonfigurasi tanda opsional berikut saat memodifikasi {i>function<i}:

      • Membuat variabel lingkungan flag untuk menentukan variabel lingkungan selama langkah build, seperti untuk mengonfigurasi waktu build sertifikat, atau parameter.

      • Flag kumpulan pekerja untuk menentukan kumpulan pekerja mana yang akan digunakan dalam Kontrol Layanan VPC konteks build yang aman.

      • Akun layanan build kustom untuk menentukan alternatif bagi akun layanan build default untuk meningkatkan keamanan.

      • Pembaruan image dasar otomatis untuk menonaktifkan pembaruan otomatis. Secara {i>default<i}, fungsi memiliki mengaktifkan update keamanan.

    Langkah selanjutnya

    Setelah men-deploy fungsi baru, Anda dapat melakukan hal berikut: