Dokumen ini menjelaskan akun layanan yang digunakan untuk menjalankan Cloud Deploy dan untuk memanggil Cloud Deploy guna menjalankan berbagai operasi.
Cloud Deploy menggunakan akun layanan berikut:
Agen layanan Cloud Deploy
Cloud Deploy menggunakan akun layanan ini untuk berinteraksi dengan project Anda. Anda tidak dapat mengganti agen layanan ini dengan akun layanan alternatif, tetapi Anda dapat mengedit izin di dalamnya, misalnya saat menggunakan resource di luar project (seperti akun layanan atau kumpulan pekerja Cloud Build pribadi).
Akun layanan eksekusi Cloud Deploy
Cloud Deploy menggunakan akun layanan ini untuk menjalankan operasi render dan deploy di Cloud Build. Akun ini memerlukan izin yang memadai untuk membaca dan menulis ke bucket Cloud Storage dan untuk mengakses target deployment.
Akun layanan default untuk eksekusi adalah akun layanan Compute Engine default. Anda dapat menentukan akun layanan alternatif di konfigurasi target.
Akun layanan otomatisasi Cloud Deploy
Ini adalah akun layanan yang digunakan Cloud Deploy untuk melakukan otomatisasi. Akun ini dapat berupa akun layanan eksekusi default atau akun layanan lainnya. Lihat Akun layanan otomatisasi Untuk mengetahui informasi selengkapnya tentang akun layanan ini.
Lihat Membuat dan mengelola akun layanan untuk mengetahui petunjuk tentang cara mengedit izin akun layanan dan cara membuat akun layanan alternatif.
Agen layanan Cloud Deploy
Agen layanan Cloud Deploy adalah akun layanan yang digunakan Cloud Deploy untuk berinteraksi dengan layanan Google Cloud lainnya yang diandalkan Cloud Deploy. Layanan ini mencakup Cloud Build, Pub/Sub, dan Cloud Audit Logs.
Nama akun layanan ini mengikuti pola ini:
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
Anda tidak dapat mengganti agen layanan dengan akun layanan alternatif. Namun, Anda mungkin perlu menambahkan izin, misalnya untuk mengizinkan akses ke kumpulan pribadi di project lain, yang dikonfigurasi sebagai bagian dari lingkungan eksekusi.
Akun layanan eksekusi Cloud Deploy
Secara default, Cloud Deploy dijalankan menggunakan akun layanan Compute Engine default. Akun layanan tersebut memiliki izin yang memadai dalam project yang memuatnya untuk merender manifes dan men-deploy ke target Anda.
Nama akun layanan ini mengikuti pola ini:
[project-number]-compute@developer.gserviceaccount.com
Akun layanan default ini memiliki izin yang luas. Praktik terbaiknya adalah mengubah lingkungan eksekusi Anda sehingga Cloud Deploy berjalan sebagai akun layanan yang berbeda.
Anda dapat mengubah akun layanan eksekusi untuk setiap
target menggunakan
properti executionConfigs.privatePool.serviceAccount
atau
properti executionConfigs.defaultPool.serviceAccount
dalam
definisi target.
Setiap akun layanan yang Anda tetapkan untuk properti ini harus memiliki peran roles/clouddeploy.jobRunner
dalam project Cloud Deploy. Jika akun layanan
eksekusi default tidak memiliki izin ini, jalankan perintah
berikut:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:$(gcloud projects describe PROJECT_ID \
--format="value(projectNumber)")-compute@developer.gserviceaccount.com \
--role="roles/clouddeploy.jobRunner"
Akun layanan yang akan dibuat
Jika memilih untuk tidak menggunakan akun layanan eksekusi default untuk rendering dan deployment, Anda harus membuat satu atau beberapa akun layanan alternatif untuk digunakan. Ini adalah akun layanan yang menjalankan Cloud Deploy, dan dikonfigurasi dalam konfigurasi target.
Salah satu alasan untuk membuat lebih dari satu adalah memiliki akun layanan atau akun spesifik untuk di-deploy ke target yang dibatasi, seperti target produksi.
Salah satu pendekatan yang mungkin dilakukan adalah menggunakan akun layanan terpisah per pipeline pengiriman. Setiap akun layanan tersebut akan mencakup peran dengan izin yang memadai untuk merender dan men-deploy.
Untuk deployment ke Google Kubernetes Engine, Anda dapat membatasi akun layanan ke satu namespace.
Menggunakan akun layanan dari project berbeda
Untuk lingkungan eksekusi, Anda dapat menentukan akun layanan yang berada di project yang berbeda dengan project tempat Anda membuat target:
Pada project yang memiliki akun layanan, aktifkan kebijakan organisasi SA lintas project.
Beri agen layanan Cloud Deploy (
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
) iziniam.serviceAccounts.actAs
untuk akun layanan Anda.Dalam hal ini,
project-number
adalah project tempat Anda membuat target.Anda juga dapat memberikan peran
roles/iam.serviceAccountUser
, yang mencakup izin tersebut, di project dan di setiap akun layanan yang ada di project yang berbeda dari tempat Cloud Deploy dijalankan.Berikan peran
roles/iam.serviceAccountTokenCreator
kepada agen layanan Cloud Build (service-<project-number>@gcp-sa-cloudbuild.iam.gserviceaccount.com
).Dalam hal ini,
project-number
adalah project tempat Anda membuat target, dan peran ini diberikan dalam project akun layanan.Anda harus memberikan peran ini untuk setiap akun layanan yang dikonfigurasi di lingkungan eksekusi target jika akun layanan tersebut berada di project yang berbeda dengan tempat Cloud Deploy dijalankan.
Beri pemanggil izin
iam.serviceAccounts.actAs
gcloud deploy releases create
dangcloud deploy rollouts create
di akun layanan, atau peran[roles/iam.serviceAccountUser](/iam/docs/understanding-roles#service-accounts-roles)
.
Izin yang diperlukan
Akun layanan yang digunakan untuk konfigurasi rendering harus memiliki izin yang memadai untuk mengakses bucket Cloud Storage tempat resource Cloud Deploy disimpan (pipeline pengiriman, rilis, peluncuran).
Peran
roles/clouddeploy.jobRunner
mencakup semua izin yang diperlukan akun layanan render (privatePool
ataudefaultPool
).Akun layanan yang digunakan untuk men-deploy harus memiliki izin yang memadai untuk men-deploy ke cluster target, dan izin untuk mengakses bucket Cloud Storage.
Akun layanan yang memanggil Cloud Deploy untuk membuat rilis harus memiliki peran
clouddeploy.releaser
. Aplikasi juga harus memiliki iziniam.serviceAccount.actAs
untuk menggunakan akun layanan yang merender manifes (misalnya melalui peranroles/iam.serviceAccountUser
).Akun layanan yang memanggil Cloud Deploy untuk mempromosikan rilis atau membuat
rollout
harus memiliki iziniam.serviceAccount.actAs
untuk menggunakan akun layanan yang di-deploy ke target (misalnya, melalui peranroles/iam.serviceAccountUser
).Akun layanan yang dikonfigurasi untuk otomatisasi harus memiliki izin untuk menjalankan operasi yang sedang diotomatiskan. Pelajari lebih lanjut.
Akun layanan otomatisasi
Anda dapat mengotomatiskan beberapa tindakan dalam rilis. Cloud Deploy menjalankan otomatisasi ini menggunakan akun layanan otomatisasi, yang dapat berupa akun layanan eksekusi default, akun layanan non-default yang digunakan sebagai akun layanan eksekusi, atau akun layanan lainnya.
Akun layanan ini dijelaskan di bagian Akun layanan otomatisasi.
Langkah selanjutnya
- Pelajari IAM.
- Cari tahu tentang peran Cloud Deploy yang telah ditetapkan.
- Pahami cara Membuat dan mengelola akun layanan.