Ringkasan proses build
Saat Anda men-deploy kode sumber fungsi ke fungsi Cloud Run, 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. Fungsi Cloud Run mengakses image ini saat perlu menjalankan container untuk mengeksekusi fungsi Anda. Jika fungsi Anda masih menggunakan Container Registry, Anda harus beralih ke Artifact Registry sesegera mungkin.
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 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-v2-sources-PROJECT_NUMBER-REGION
. - Jika Anda melindungi data dengan CMEK, bucket akan diberi nama
gcf-v2-sources-PROJECT_NUMBER-REGION-CMEK_KEY_HASH
. - Bucket tidak memiliki periode retensi.
- Jika Anda menggunakan enkripsi default, bucket ini akan diberi nama
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 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
Deploy fungsi Anda menggunakan perintah
gcloud functions deploy
.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
- Dari jendela Cloud Run functions Overview, klik nama fungsi yang ingin diinvestigasi.
- Klik tab Detail.
- Di panel General Information, klik link Container build log untuk membuka panel Logs explorer.
- 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
Fungsi Cloud Run 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
yang terletak di project yang sama dengan tempat fungsi Anda dibuat.
Untuk menentukan repositori Artifact Registry yang dikelola sendiri, jalankan perintah berikut:
gcloud
gcloud functions deploy FUNCTION \ --docker-registry=artifact-registry \ --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
.
Saat menentukan repositori Artifact Registry yang berada di project atau region yang berbeda, Anda mungkin perlu mempertimbangkan konfigurasi tambahan:
Konfigurasi IAM:
- Pastikan akun layanan build memiliki akses yang diotorisasi untuk membaca dan menulis ke REPOSITORY.
Konfigurasi jaringan:
- Pastikan REPOSITORY target dapat dijangkau dari konfigurasi project saat ini.
Konfigurasi Kontrol Layanan VPC:
- Pastikan akun layanan build dapat menjangkau REPOSITORY target dalam perimeter VPC-SC.
Batasan residensi data:
- Perhatikan bahwa menentukan REPOSITORY di region yang berbeda dengan tempat fungsi Anda berada akan menyebabkan transfer data di seluruh region.
Konsol Google Cloud
Buka halaman fungsi Cloud Run di konsol Google Cloud:
Buka halaman fungsi Cloud RunKlik nama fungsi tempat Anda ingin menggunakan Artifact Registry.
Klik Edit.
Klik Runtime, build... untuk meluaskan opsi konfigurasi lanjutan.
Klik Security and Image Repo dari panel menu untuk membuka tab keamanan.
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.
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.
Klik Next.
Klik Deploy.
Mengidentifikasi fungsi yang menggunakan Container Registry
Fungsi yang menggunakan Container Registry memiliki kunci buildConfig.dockerRegistry
dalam deskripsi fungsinya. Anda dapat mengambil deskripsi fungsi sebagai berikut:
gcloud
gcloud functions describe FUNCTION_NAME
Ganti FUNCTION_NAME dengan nama fungsi Anda.
Konsol Google Cloud
Buka halaman fungsi Cloud Run di konsol Google Cloud:
Buka halaman fungsi Cloud RunKlik nama fungsi tempat Anda ingin menggunakan Artifact Registry.
Klik Details.
Klik EQUIVALENT REST untuk mendapatkan detail fungsi lengkap.
Inventaris Aset Cloud
Anda dapat menggunakan Cloud Asset Inventory untuk membuat kueri di seluruh organisasi untuk fungsi yang menggunakan Container Registry:
- Tinjau panduan Inventaris Aset Cloud untuk melihat aset Anda.
- Gunakan perintah
gcloud
berikut untuk membuat kueri fungsi yang menggunakanCONTAINER_REGISTRY
.
gcloud asset list \ --content-type=resource \ --asset-types=cloudfunctions.googleapis.com/Function --organization=ORGANIZATION_ID \ --filter "resource.data.buildConfig.dockerRegistry='CONTAINER_REGISTRY'"
Ganti ORGANIZATION_ID dengan ID resource organisasi Anda.
Beralih ke Artifact Registry
Anda dapat membuat fungsi memublikasikan gambar ke Artifact Registry dengan mengubah setelan repositori:
gcloud
gcloud beta functions deploy FUNCTION_NAME \ --docker-registry=artifact-registry \ [FLAGS...]
Konsol Google Cloud
Buka halaman fungsi Cloud Run di konsol Google Cloud:
Buka halaman fungsi Cloud RunKlik nama fungsi tempat Anda ingin menggunakan Artifact Registry.
Klik Edit.
Klik Runtime, build... untuk meluaskan opsi konfigurasi lanjutan.
Klik Security and Image Repo dari panel menu untuk membuka tab keamanan.
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.
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.
Klik Next.
Klik Deploy.
Untuk mengetahui informasi harga mendetail, lihat Harga fungsi Cloud Run.
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:
- Membuat pool worker pribadi. Lihat Membuat dan mengelola pool pribadi.
Konfigurasi perimeter Kontrol Layanan VPC Anda. Baca Menggunakan Kontrol Layanan VPC.
Jika pool pekerja pribadi Anda berada dalam project yang berbeda dengan fungsi Anda, Anda perlu memberikan Akun Layanan Agen Layanan fungsi Cloud Run (
service-FUNCTION_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
) perancloudbuild.workerPoolUser
agar layanan Cloud Build dapat mengakses pool pekerja.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.
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
Dari halaman ringkasan fungsi Cloud Run, pilih Create function.
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
Fungsi Cloud Run mengambil kode sumber Anda dan mengirimkannya ke Cloud Build untuk di-containerisasi. Fungsi dalam container disimpan di Artifact Registry dan di-deploy ke Cloud Run sebagai layanan. Secara default, Cloud Build menetapkan akun layanan untuk bertindak sebagai akun utama saat melakukan build. Mulai Juli 2024, project baru di organisasi akan menggunakan Akun Layanan default Compute Engine untuk bertindak sebagai akun utama 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 melakukan 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 ingin memindahkan project yang ada dari akun layanan ini, Anda dapat melakukan langkah-langkah berikut untuk lebih mengamankan lingkungan build fungsi:
- Mencegah akun layanan Cloud Build lama digunakan untuk build.
- Mencegah akun layanan Compute default digunakan untuk build.
- Konfigurasikan akun layanan baru dengan izin yang cakupannya sesuai untuk digunakan dalam build.
- Gunakan akun layanan yang dikonfigurasi untuk build.
Mencegah akun layanan Cloud Build lama digunakan untuk build
Anda dapat memverifikasi bahwa project Anda menggunakan akun layanan Cloud Build lama dengan memeriksa detail build fungsi. 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 organisasi
cloudbuild.useBuildServiceAccount
ke Not Enforced
. Atau, menghapus semua pemberian peran akan membatasi kemampuannya untuk mengakses resource Google Cloud.
Mencegah akun layanan komputasi default digunakan 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 menetapkan
kebijakan organisasi cloudbuild.useComputeServiceAccount
ke Not Enforced
.
Atau, menonaktifkan akun layanan ini akan mencegahnya digunakan untuk
mengakses resource Google Cloud.
Menyediakan akun layanan untuk mem-build fungsi
Sebagai bagian dari konfigurasi fungsi, akun layanan build dapat ditentukan saat men-deploy fungsi. Jika akun layanan Cloud Build lama dan akun layanan Compute Engine default dicegah agar tidak digunakan untuk build, akun layanan build harus ditentukan untuk men-deploy fungsi.
Lihat Akun Layanan Kustom untuk Cloud Build untuk mengonfigurasi dan menggunakan akun layanan build untuk fungsi Anda.