Akun layanan Cloud Deploy

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:

  1. Pada project yang memiliki akun layanan, aktifkan kebijakan organisasi SA lintas project.

  2. Beri agen layanan Cloud Deploy (service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com) izin iam.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.

  3. 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.

  4. Beri pemanggil izin iam.serviceAccounts.actAs gcloud deploy releases create dan gcloud 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 atau defaultPool).

  • 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 izin iam.serviceAccount.actAs untuk menggunakan akun layanan yang merender manifes (misalnya melalui peran roles/iam.serviceAccountUser).

  • Akun layanan yang memanggil Cloud Deploy untuk mempromosikan rilis atau membuat rollout harus memiliki izin iam.serviceAccount.actAs untuk menggunakan akun layanan yang di-deploy ke target (misalnya, melalui peran roles/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