Akun Layanan Kustom untuk Cloud Build (generasi ke-1)
Fungsi Cloud Run memanfaatkan Cloud Build saat mem-build dan men-deploy fungsi Cloud Run Anda. Secara default, fungsi Cloud Run menggunakan akun layanan Cloud Build default sebagai akun utama saat melakukan build. Mulai Juli 2024, Cloud Build telah mengubah perilaku default untuk cara Cloud Build menggunakan akun layanan di project baru. Perubahan ini dijelaskan dalam Perubahan Akun Layanan Cloud Build. Akibat perubahan ini, project baru yang men-deploy fungsi untuk pertama kalinya mungkin menggunakan akun layanan Cloud Build default dengan izin yang tidak memadai untuk mem-build fungsi. Jika Anda terpengaruh oleh perubahan ini, Anda dapat melakukan salah satu hal berikut:
Tinjau panduan Cloud Build tentang perubahan pada akun layanan default dan pilih untuk tidak mengikuti perubahan ini.
Tambahkan peran Akun Cloud Build (
roles/cloudbuild.builds.builder
) ke akun layanan Compute Engine default.Buat akun layanan Cloud Build kustom untuk deployment fungsi.
Dokumen ini menjelaskan cara meneruskan akun layanan yang dibuat pengguna, untuk digunakan oleh Cloud Build, saat men-deploy fungsi Anda.
Anda dapat men-deploy fungsi dengan akun layanan kustom menggunakan Google Cloud CLI, konsol Google Cloud, atau API fungsi Cloud Run.
Berikut beberapa skenario saat Anda mungkin ingin memberikan akun layanan yang berbeda untuk digunakan saat Cloud Build mem-build fungsi Anda:
Anda ingin lebih mengontrol akun layanan mana yang akan ditambahkan ke perimeter VPC-SC.
Anda ingin Cloud Build berjalan dengan izin yang berbeda dari yang dimiliki akun layanan default tanpa harus mencabut setiap izin satu per satu.
Anda ingin menetapkan izin Cloud Build terperinci secara khusus untuk fungsi Anda, bukan membagikan akun layanan Cloud Build yang dioptimalkan untuk tujuan lain.
Organisasi Anda menonaktifkan penggunaan akun layanan default.
Mengaktifkan API
Fitur ini memerlukan pengaktifan IAM API.
Gunakan Google Cloud CLI untuk mengaktifkan API yang diperlukan untuk men-deploy fungsi Cloud Run, atau gunakan konsol Google Cloud:
gcloud services enable iam.googleapis.com
Mengonfigurasi Akun Layanan
Dokumen ini menjelaskan cara membuat akun layanan baru dan memberikan izin yang diperlukan. Jika ingin menggunakan akun layanan yang ada, Anda memerlukan alamat email akun layanan yang ingin digunakan. Lihat mengonfigurasi akun layanan yang ditentukan pengguna untuk mengetahui detailnya.
Anda dapat melihat akun layanan yang ada sebagai berikut, atau menggunakan Konsol Google Cloud:
gcloud iam service-accounts list
Buat Akun Layanan
Gunakan Google Cloud CLI untuk membuat akun layanan atau gunakan konsol Google Cloud:
gcloud iam service-accounts create SA_EMAIL
Ganti SA_EMAIL dengan alamat email akun layanan Anda.
Berikan Izin
Akun layanan yang Anda gunakan akan memerlukan peran berikut:
roles/logging.logWriter
— Wajib untuk menyimpan log build di Cloud Logging.roles/artifactregistry.writer
— Wajib untuk menyimpan image build di Artifact Registry. Untuk perilaku default, akun layanan memerlukan akses ke repositori bernama "gcf-artifacts" dan "cloud-run-source-deploy". Akses ke repositori dapat ditetapkan pada kebijakan IAM repositori. Sebagai alternatif, Anda dapat menyediakan repositori artefak Anda sendiri melalui kolomdockerRepository
.roles/storage.objectViewer
— Wajib untuk mengambil sumber fungsi dari bucket Cloud Storage, dan untuk menyimpan image build di Container Registry. Untuk perilaku default, akun layanan memerlukan akses ke bucket bernama "gcf-sources-*". Hal ini dapat dilakukan dengan menambahkan kondisi IAM ke pemberian peran seperti:(resource.type == "storage.googleapis.com/Object" && (resource.name.startsWith("gcf-sources-")))
roles/storage.objectAdmin
— Wajib untuk container registry (kini tidak digunakan lagi). Akses ke bucket bernama*.artifacts.PROJECT_ID.appspot.com
diperlukan untuk mengakses container registry.
Berikan peran berikut menggunakan Google Cloud CLI, atau gunakan konsol Google Cloud.
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SA_EMAIL \
--role=roles/logging.logWriter
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SA_EMAIL \
--role=roles/artifactregistry.writer
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SA_EMAIL \
--role=roles/storage.objectViewer
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SA_EMAIL \
--role=roles/storage.objectAdmin
Ganti kode berikut:
- PROJECT_ID: Project ID Google Cloud Anda.
- SA_EMAIL: Alamat email akun layanan Anda.
Men-deploy fungsi dengan akun layanan kustom
Anda dapat menggunakan Google Cloud CLI untuk men-deploy fungsi yang menggunakan akun layanan kustom untuk Cloud Build:
- Flag
--build-service-account
menentukan akun layanan IAM yang kredensialnya akan digunakan untuk langkah build. Jika akun layanan kustom tidak disediakan, fungsi akan menggunakan akun layanan default project untuk Cloud Build. - Secara opsional, Anda dapat menggunakan
kumpulan pribadi,
yang Anda tentukan menggunakan flag
--build-worker-pool
.
gcloud functions deploy FUNCTION_NAME \
--no-gen2 \
--region=REGION \
--project=PROJECT_ID \
--runtime=RUNTIME \
--entry-point=CODE_ENTRYPOINT \
--build-service-account=projects/PROJECT_ID/serviceAccounts/SA_EMAIL \
--memory=256Mi \
--trigger-http \
--source=.
Ganti kode berikut:
- FUNCTION_NAME: Nama tempat Anda men-deploy fungsi.
- REGION: Nama region Google Cloud tempat Anda ingin men-deploy fungsi (misalnya,
us-west1
). - PROJECT_ID: Project ID Google Cloud Anda.
- RUNTIME: ID runtime dari
versi runtime yang didukung untuk menjalankan
fungsi Anda, misalnya,
nodejs18
. - CODE_ENTRYPOINT: Titik entri ke fungsi Anda dalam kode sumber. Ini adalah kode yang akan dijalankan saat fungsi Anda berjalan.
- SA_EMAIL: Alamat email akun layanan Anda.