Akun layanan Cloud Deploy

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:

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

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

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

  4. Berikan izin iam.serviceAccounts.actAs kepada pemanggil gcloud deploy releases create dan gcloud deploy rollouts create di akun layanan, atau peran roles/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 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. Akun tersebut 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.

Pelajari lebih lanjut akun layanan otomatisasi.

Langkah selanjutnya