Ringkasan proses build

Saat Anda men-deploy kode sumber fungsi ke Cloud Functions, sumber tersebut disimpan di bucket Cloud Storage. Cloud Build kemudian secara otomatis membangun kode Anda ke dalam image container dan mengirim image tersebut ke registry image. Cloud Functions mengakses image ini saat perlu menjalankan container untuk menjalankan 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, keduanya disimpan di Artifact Registry.

  • Cloud Storage digunakan langsung di project Anda, dan direktori kode sumber untuk fungsi Anda disimpan di bucket dalam project. Perhatikan hal berikut:

    • Jika Anda menggunakan enkripsi default, bucket ini akan diberi nama gcf-sources-PROJECT_NUMBER-REGION.
    • Jika Anda melindungi data Anda dengan CMEK, bucket akan diberi nama gcf-sources-PROJECT_NUMBER-REGION-CMEK_KEY_HASH.
    • Bucket 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 prompt untuk mengaktifkan UI.

  • Karena seluruh proses build berlangsung dalam konteks project Anda, project tersebut 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 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 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 hal ini adalah entri error yang terkait dengan file, detail tersebut mencakup nama, baris, dan kolom file.

Registry image

Cloud Functions (generasi ke-2) secara eksklusif menggunakan Artifact Registry untuk menyimpan image yang di-build dari kode sumber fungsi Anda. Gambar disimpan dalam repositori bernama REGION-docker.pkg.dev/PROJECT_ID/gcf-artifacts.

Cloud Functions (generasi ke-1) menggunakan Artifact Registry secara default. Container Registry tidak digunakan lagi.

Artifact Registry 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 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 FUNCTION \
--docker-registry=artifact-registry
[FLAGS...]

Konsol Google Cloud

  1. Buka halaman Cloud Functions di Konsol Google Cloud:
    Buka halaman Cloud 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, bergantung 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, bukan 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 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. Membuat 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 memberikan Akun Layanan Agen Layanan Cloud 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 penggunaan pool pribadi:

gcloud

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

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

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

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

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

Konsol Google Cloud

  1. Dari halaman ringkasan Cloud Functions, 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.