Ringkasan proses build

Saat Anda men-deploy kode sumber fungsi ke Cloud Run Functions, sumber tersebut disimpan di bucket Cloud Storage. Cloud Build kemudian secara otomatis membangun kode Anda ke dalam image container dan mengirimkan image tersebut ke registry image. Cloud Run Functions mengakses image ini ketika perlu menjalankan container untuk mengeksekusi fungsi Anda.

Proses pembangunan image ini sepenuhnya otomatis dan tidak memerlukan input langsung dari Anda. Semua resource yang digunakan dalam proses build dieksekusi dalam project pengguna Anda sendiri.

Mengeksekusi proses build dalam project Anda berarti:

  • Anda memiliki akses langsung ke semua log build.

  • Tidak ada kuota waktu build preset, meskipun Cloud Build memiliki kuota konkurensi default-nya sendiri.

  • Anda dapat melihat image container saat ini dan image container yang di-deploy sebelumnya, yang keduanya disimpan di Artifact Registry.

  • Cloud Storage digunakan di project Anda untuk menyimpan direktori kode sumber fungsi Anda. Perhatikan hal berikut:

    • Jika Anda membuat fungsi, bucket upload akan dibuat untuk menyimpan kode sumber Anda. Bucket upload ini diberi nama gcf-uploads-PROJECT_NUMBER-REGION.cloudfunctions.appspot.com.
    • Setelah kode diupload, kode fungsi disimpan di bucket sumber terpisah:
      • Jika Anda menggunakan enkripsi default, bucket ini akan diberi nama gcf-sources-PROJECT_NUMBER-REGION.
      • Jika Anda melindungi data dengan CMEK, bucket akan diberi nama gcf-sources-PROJECT_NUMBER-REGION-CMEK_KEY_HASH.
    • Bucket sumber dan upload tidak memiliki periode retensi data.

Karakteristik proses build

Proses build memiliki karakteristik berikut:

  • Cloud Build API harus diaktifkan untuk project Anda.

    Untuk mengaktifkan API secara manual, klik link di atas, pilih project Anda dari menu dropdown, lalu ikuti perintah untuk mengaktifkan UI.

  • Karena seluruh proses build berlangsung dalam konteks project Anda, project tersebut akan dikenai biaya resource yang disertakan:

    • Untuk mengetahui harga Cloud Build, lihat halaman Harga. Proses ini menggunakan ukuran instance default Cloud Build, karena instance ini sudah siap dan tersedia lebih cepat. Cloud Build menyediakan paket gratis: tinjau dokumen harga untuk mengetahui detail lebih lanjut.

    • Untuk mengetahui harga Cloud Storage, lihat halaman Harga. Cloud Storage menyediakan paket gratis: tinjau dokumen harga untuk mengetahui detail lebih lanjut.

    • Untuk mengetahui harga Artifact Registry, lihat halaman Harga.

    • Untuk mengetahui harga Container Registry (tidak digunakan lagi), lihat halaman Harga.

  • Karena proses build tunduk pada penagihan, project Anda harus memiliki Akun Penagihan Cloud yang terkait.

Melihat log image build

Manfaat utama memiliki proses image build di project pengguna Anda adalah akses ke log build. Anda dapat menggunakan gcloud CLI atau konsol Google Cloud untuk mengakses log, yang tersedia melalui Cloud Logging.

gcloud

  1. Deploy fungsi Anda menggunakan perintah gcloud functions deploy.

  2. URL log ditampilkan sebagai bagian dari respons di jendela terminal Anda. Contoh:

    Deploying function (may take a while - up to 2 minutes)...⠹
    **For Cloud Build Stackdriver Logs**, visit:
    https://console.cloud.google.com/logs/viewer?project=&advancedFilter=resource.type%
    3Dbuild%0Aresource.labels.build_id%3D38d5b662-2315-45dd-8aa2-
    380d50d4f5e8%0AlogName%3Dprojects%2F%
    2Flogs%2Fcloudbuild
    Deploying function (may take a while - up to 2 minutes)...done.

Konsol Google Cloud

  1. Dari jendela Cloud Run Functions Overview, klik nama fungsi yang ingin diinvestigasi.
  2. Klik tab Details.
  3. Di panel General Information, klik link Container build log untuk membuka panel Logs explorer.
  4. Klik baris mana pun untuk melihat detail entri log build tersebut. Jika ada entri error yang terkait dengan file, detail tersebut mencakup nama, baris, dan kolom file.

Registry image

Cloud Run Functions menggunakan Artifact Registry untuk menyimpan image yang dibangun dari kode sumber fungsi Anda. Gambar disimpan dalam repositori bernama REGION-docker.pkg.dev/PROJECT_ID/gcf-artifacts.

Artifact Registry Anda harus berada dalam project yang sama dengan fungsi Anda. Anda dapat membuat atau mengupdate fungsi berbasis Artifact Registry sebagai berikut:

gcloud

Untuk Artifact Registry yang dikelola pelanggan, jalankan perintah berikut:

gcloud functions deploy --no-gen2 FUNCTION \
--docker-repository=REPOSITORY
[FLAGS...]

Ganti kode berikut:

  • FUNCTION: Nama fungsi.
  • REPOSITORY: Nama repositori Artifact Registry yang sepenuhnya memenuhi syarat, dalam format berikut: projects/PROJECT_NAME/locations/LOCATION/repositories/REPOSITORY.

Untuk Artifact Registry yang dikelola Google, gunakan:

gcloud functions deploy --no-gen2 FUNCTION \
--docker-registry=artifact-registry
[FLAGS...]

Konsol Google Cloud

  1. Buka halaman Cloud Run Functions di konsol Google Cloud :
    Buka halaman Cloud Run Functions

  2. Klik nama fungsi tempat Anda ingin menggunakan Artifact Registry.

  3. Klik Edit.

  4. Klik Runtime, build... untuk meluaskan opsi konfigurasi lanjutan.

  5. Klik Security and Image Repo dari panel menu untuk membuka tab keamanan.

  6. Di bagian Image repository, pilih salah satu opsi berikut, tergantung pada jenis Artifact Registry yang Anda gunakan:

    • Artifact Registry yang dikelola pelanggan. Gunakan opsi ini jika Anda menyiapkan repositori Docker sendiri.
    • Artifact Registry yang dikelola Google. Gunakan opsi ini jika Anda ingin menggunakan repositori Docker yang dikelola Google, alih-alih menyiapkannya sendiri.
  7. Untuk Artifact Registry yang dikelola pelanggan, gunakan menu drop-down Artifact Registry untuk memilih repositori Artifact Registry yang Anda inginkan, atau ikuti prompt-nya dan buat yang baru.

  8. Klik Next.

  9. Klik Deploy.

Untuk mengetahui informasi harga mendetail, lihat Harga Cloud Run Functions.

Mengamankan build dengan pool pribadi

Agar fungsi Anda dapat menggunakan dependensi (misalnya, paket npm), Cloud Build secara default memiliki akses internet tak terbatas selama proses build. Jika Anda telah menyiapkan perimeter Kontrol Layanan VPC (SC VPC) dan ingin membatasi akses build hanya ke dependensi yang disimpan di dalam perimeter, Anda dapat menggunakan fitur pool worker pribadi Cloud Build.

Secara umum, ikuti langkah-langkah berikut untuk menyiapkan pool pribadi:

  1. Buat pool worker pribadi. Lihat Membuat dan mengelola pool pribadi.
  2. Konfigurasi perimeter Kontrol Layanan VPC Anda. Baca Menggunakan Kontrol Layanan VPC.

  3. Jika pool worker pribadi Anda berada dalam project yang berbeda dengan fungsi Anda, Anda perlu memberi Akun Layanan Agen Layanan Cloud Run Functions (service-FUNCTION_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com) peran cloudbuild.workerPoolUser agar layanan Cloud Build dapat mengakses pool worker.

    gcloud projects add-iam-policy-binding PRIVATE_POOL_PROJECT_ID \
        --member serviceAccount:service-FUNCTION_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
        --role roles/cloudbuild.workerPoolUser

    dengan FUNCTION_PROJECT_NUMBER adalah nomor project tempat fungsi berjalan dan PRIVATE_POOL_PROJECT_ID adalah id project tempat pool worker berada. Lihat Menjalankan build di pool pribadi untuk mengetahui informasi selengkapnya.

  4. Deploy fungsi Anda untuk membangun menggunakan pool pribadi:

gcloud

gcloud functions deploy FUNCTION_NAME --no-gen2\
  --runtime RUNTIME \
  --build-worker-pool PRIVATE_POOL_NAME
  [FLAGS...]

dengan FUNCTION_NAME sebagai nama fungsi, RUNTIME sebagai runtime yang Anda gunakan, dan PRIVATE_POOL_NAME sebagai nama pool Anda.

Untuk berhenti menggunakan pool pribadi tertentu dan menggunakan pool Cloud Build default sebagai gantinya, gunakan flag --clear-build-worker-pool saat melakukan deployment ulang.

gcloud functions deploy FUNCTION_NAME --no-gen2 \
  --runtime RUNTIME \
  --clear-build-worker-pool
  [FLAGS...]

dengan FUNCTION_NAME sebagai nama fungsi dan RUNTIME sebagai runtime yang Anda gunakan.

Konsol Google Cloud

  1. Dari halaman Cloud Run Functions overview, pilih Create function.

  2. Di bagian Runtime, build..., klik tab Build, lalu masukkan nama lengkap resource pool pribadi Anda di kotak teks Build worker pools.

Untuk mengetahui informasi selengkapnya, lihat Menjalankan build di pool pribadi.

Mengamankan build dengan akun layanan kustom

Cloud Run Functions mengambil kode sumber Anda dan mengirimkannya ke Cloud Build untuk ditempatkan dalam container. Fungsi yang ada dalam container disimpan di Artifact Registry dan di-deploy ke Cloud Run sebagai layanan. Secara default, Cloud Build menetapkan akun layanan untuk bertindak sebagai principal saat menjalankan build Anda. Mulai Juli 2024, project baru dalam organisasi akan menggunakan Akun Layanan default Compute Engine untuk bertindak sebagai principal yang menjalankan build. Untuk mengetahui detailnya, lihat Perubahan akun layanan default Cloud Build. Karena alasan keamanan, Akun Layanan default Compute Engine tidak memiliki izin yang memadai untuk menjalankan build.

Untuk project Google Cloud yang dibuat sebelum Juli 2024, Cloud Build menggunakan akun layanan Cloud Build lama. Akun layanan ini dirancang untuk membantu pengguna menjalankan berbagai kasus penggunaan yang mungkin terlalu permisif untuk kebutuhan project Anda. Jika Anda ingin memindahkan project yang ada dari akun layanan ini, Anda dapat melakukan langkah-langkah berikut untuk lebih mengamankan lingkungan build fungsi Anda:

  1. Mencegah penggunaan akun layanan Cloud Build lama untuk build.
  2. Mencegah penggunaan akun layanan Compute default untuk build.
  3. Mengonfigurasi akun layanan baru dengan izin yang cakupannya sesuai untuk digunakan dalam build.
  4. Menggunakan akun layanan yang dikonfigurasi untuk build.

Mencegah penggunaan akun layanan Cloud Build lama untuk build

Anda dapat memverifikasi bahwa project Anda menggunakan akun layanan Cloud Build lama dengan memeriksa detail build fungsi Anda. Akun layanan build default memiliki format berikut:

PROJECT_NUMBER@cloudbuild.gserviceaccount.com.

Anda dapat menonaktifkan penggunaan akun layanan ini secara paksa dengan menetapkan batasan kebijakan org cloudbuild.useBuildServiceAccount ke Not Enforced. Atau, penghapusan semua pemberian perannya akan membatasi kemampuannya untuk mengakses resource Google Cloud.

Mencegah penggunaan akun layanan komputasi default untuk build

Akun layanan komputasi default memiliki format PROJECT_NUMBER-compute@developer.gserviceaccount.com. Anda dapat menonaktifkannya agar tidak menjadi default yang digunakan untuk build dengan menyetel kebijakan org cloudbuild.useComputeServiceAccount ke Not Enforced. Atau, penonaktifan akun layanan ini akan mencegahnya digunakan untuk mengakses resource Google Cloud .

Menyediakan akun layanan untuk membangun fungsi

Sebagai bagian dari konfigurasi fungsi, akun layanan build dapat ditentukan saat men-deploy fungsi. Jika akun layanan Cloud Build lama dan akun layanan komputasi default tidak dapat digunakan untuk build, Anda harus menentukan akun layanan build agar dapat men-deploy fungsi.

Lihat Akun Layanan Kustom untuk Cloud Build guna mengonfigurasi dan menggunakan akun layanan build untuk fungsi Anda.