Akun Layanan Kustom untuk Cloud Build
Fungsi Cloud Run memanfaatkan Cloud Build saat membangun dan men-deploy fungsi Cloud Run Anda. Secara default, fungsi Cloud Run menggunakan Akun layanan Cloud Build sebagai akun utama saat menjalankan build Anda. Mulai Juli 2024, Cloud Build telah mengubah perilaku default terkait 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 perubahan ini.
Tambahkan peran Cloud Build Account (
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 buatan pengguna, yang akan digunakan oleh Cloud Build, saat men-deploy fungsi Anda.
Anda dapat men-deploy fungsi dengan akun layanan khusus menggunakan Google Cloud CLI, Konsol Google Cloud, atau Cloud Run Functions API.
Berikut adalah beberapa skenario saat Anda mungkin ingin menyediakan layanan yang berbeda akun yang akan digunakan saat Cloud Build membangun fungsi Anda:
Anda menginginkan kontrol lebih besar atas akun layanan yang akan ditambahkan ke VPC-SC Anda keliling.
Anda ingin Cloud Build berjalan dengan izin daripada yang dimiliki akun layanan {i>default<i} tanpa harus mencabut masing-masing izin akses satu per satu.
Anda ingin menetapkan izin Cloud Build terperinci khusus untuk fungsi yang berbeda, tidak berbagi akun layanan Cloud Build yang dioptimalkan untuk tujuan lain.
Organisasi Anda menonaktifkan penggunaan akun layanan default.
Mengaktifkan API
Fitur ini mengharuskan IAM API diaktifkan.
Gunakan Google Cloud CLI untuk mengaktifkan API yang diperlukan untuk men-deploy fungsi Cloud Run, atau menggunakan Konsol Google Cloud:
gcloud services enable iam.googleapis.com
Konfigurasi 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 akan Anda gunakan. 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 Anda akun layanan Anda.
Berikan Izin
Akun layanan yang Anda gunakan akan memerlukan peran berikut:
roles/iam.serviceAccountUser
— Peran ini tidak diperlukan pada akun layanan, tetapi kepada pengguna yang men-deploy fungsinya membutuhkan peran ini.roles/logging.logWriter
— Diperlukan untuk menyimpan log build di Cloud Logging.roles/artifactregistry.writer
— Diperlukan untuk menyimpan image build di Artifact Registry.roles/storage.objectAdmin
— Diperlukan untuk mengambil sumber fungsi dari bucket Cloud Storage, dan untuk menyimpan image build di Container Registry.
Berikan peran berikut menggunakan Google Cloud CLI, atau gunakan Konsol Google Cloud.
gcloud projects add-iam-policy-binding SA_PROJECT_ID \
--member=user:DEPLOYING_USER_EMAIL \
--role=roles/iam.serviceAccountUser
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.objectAdmin
Ganti kode berikut:
- PROJECT_ID: ID project Google Cloud Anda.
- SA_EMAIL: Alamat email akun layanan Anda.
- SA_PROJECT_ID: Project ID akun layanan Anda.
- DEPLOYING_USER_EMAIL: Alamat email pengguna yang men-deploy fungsi tersebut.
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 ini menggunakan default project akun layanan untuk Cloud Build. - Jika ingin, Anda dapat menggunakan
kolam renang 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 yang digunakan untuk men-deploy fungsi.
- REGION: Nama region Google Cloud tempat Anda ingin men-deploy fungsi (misalnya,
us-west1
). - PROJECT_ID: ID project Google Cloud Anda.
- RUNTIME: ID runtime
versi runtime yang didukung untuk dijalankan
fungsi Anda, misalnya,
nodejs18
. - CODE_ENTRYPOINT: titik entri ke fungsi Anda di pada kode sumber Anda. Ini adalah kode yang akan dieksekusi saat fungsi Anda berjalan.
- SA_EMAIL: Alamat email akun layanan Anda.