Dokumen ini menjelaskan akun layanan yang digunakan untuk menjalankan Cloud Deploy dan memanggil Cloud Deploy untuk 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 deployment di Cloud Build. Akun ini memerlukan izin yang memadai untuk membaca dari dan menulis ke bucket Cloud Storage serta 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 lain. 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 menjadi andalan 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 berjalan menggunakan akun layanan Compute Engine default.
Nama akun layanan ini mengikuti pola ini:
[project-number]-compute@developer.gserviceaccount.com
Karena digunakan oleh banyak produk, akun layanan ini mungkin memiliki izin yang luas. Praktik terbaiknya adalah mengubah lingkungan eksekusi 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
di
definisi target.
Setiap akun layanan yang Anda tetapkan untuk properti ini harus memiliki peran Cloud Deploy Runner di project Cloud Deploy. Jika akun layanan eksekusi default tidak memiliki peran 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 juga memerlukan izin khusus runtime untuk di-deploy ke runtime yang Anda pilih. Untuk Google Kubernetes Engine, Anda dapat memilih peran Container Developer dan Service Account User. Untuk Cloud Run, Anda dapat memilih peran Cloud Run Developer dan Service Account User. Runtime lain yang digunakan oleh Target Kustom mungkin memerlukan izinnya sendiri.
Akun layanan yang akan dibuat
Jika memilih untuk tidak menggunakan akun layanan eksekusi default untuk rendering dan deployment, Anda perlu membuat satu atau beberapa akun layanan alternatif untuk digunakan. Ini adalah akun layanan yang dijalankan oleh Cloud Deploy, dan akun tersebut dikonfigurasi dalam konfigurasi target.
Salah satu alasan untuk membuat lebih dari satu akun adalah untuk memiliki akun atau akun layanan tertentu untuk di-deploy ke target yang dibatasi, seperti target produksi.
Salah satu pendekatan yang mungkin adalah menggunakan akun layanan terpisah per pipeline pengiriman. Setiap akun layanan tersebut akan menyertakan 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 lain
Untuk lingkungan eksekusi, Anda dapat menentukan akun layanan yang berada dalam project yang berbeda dengan project tempat Anda membuat target:
Pada project yang memiliki akun layanan, aktifkan kebijakan organisasi SA lintas project.
Berikan izin
iam.serviceAccounts.actAs
untuk akun layanan Anda kepada agen layanan Cloud Deploy (service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
).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 berada dalam project yang berbeda dengan project tempat Cloud Deploy berjalan.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 di project akun layanan.Anda harus memberikan peran ini untuk setiap akun layanan yang dikonfigurasi di lingkungan eksekusi target jika akun layanan tersebut berada dalam project yang berbeda dengan project tempat Cloud Deploy berjalan.
Berikan izin
iam.serviceAccounts.actAs
kepada pemanggilgcloud deploy releases create
dangcloud deploy rollouts create
di akun layanan, atau peranroles/iam.serviceAccountUser
.
Izin yang diperlukan
Akun layanan yang digunakan untuk merender konfigurasi harus memiliki izin yang memadai untuk mengakses bucket Cloud Storage tempat resource Cloud Deploy Anda 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
. Akun tersebut 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.
Pelajari lebih lanjut akun layanan otomatisasi.
Langkah selanjutnya
- Pelajari IAM.
- Cari tahu peran Cloud Deploy bawaan.
- Pahami cara Membuat dan mengelola akun layanan.