Dokumen ini menjelaskan cara menggunakan kebijakan deployment untuk membatasi tindakan pipeline pengiriman manual atau otomatis.
Kebijakan deployment adalah resource Cloud Deploy yang dapat Anda gunakan untuk membatasi tindakan manual atau otomatis terhadap pipeline atau target pengiriman yang dipilih (atau semua pipeline atau target).
Perilaku apa yang dapat dibatasi?
Anda dapat membuat kebijakan deployment untuk membatasi atau mencegah Cloud Deploy melakukan tindakan tertentu pada peluncuran. Misalnya, kebijakan dapat mencegah pembuatan peluncuran untuk pipeline pengiriman tertentu selama jangka waktu yang ditentukan. Misalnya, Anda dapat menggunakannya untuk pembatasan musiman.
Cara kebijakan dievaluasi dan diterapkan
Untuk tindakan manual atau otomatis, Cloud Deploy melakukan hal berikut:
Memeriksa izin Identity and Access Management.
Jika akun pengguna atau akun layanan tidak memiliki izin IAM yang memadai, tindakan tersebut tidak akan dilakukan dan tidak perlu mengevaluasi kebijakan deployment.
Memeriksa apakah ada kebijakan yang berlaku untuk pipeline target atau pengiriman, dan jika ada, kebijakan tersebut akan dievaluasi.
Cloud Deploy mengevaluasi tindakan yang dilakukan untuk melihat apakah aturan ini berlaku.
Artinya, apakah jenis tindakan dan pemanggil cocok dengan kebijakan?
Cloud Deploy memeriksa rentang tanggal dan waktu yang ditentukan untuk kebijakan guna melihat apakah kebijakan tersebut berlaku pada saat permintaan.
Jika kebijakan berlaku dan aturan berlaku untuk pipeline pengiriman atau target dan tindakan, aturan tersebut akan diterapkan dan tindakan akan diblokir.
Persyaratan dan Batasan
Setiap kebijakan harus memiliki minimal satu pemilih.
Setiap kebijakan harus memiliki minimal satu aturan.
Semua ID aturan harus unik dalam kebijakan deployment.
Setiap aturan harus memiliki minimal satu
timeWindows
, dan dalamtimeWindows
tersebut, harus adaoneTimeWindows
atauweeklyWindows
.Lihat Tanggal dan waktu untuk mengetahui detail selengkapnya tentang penggunaan blok waktu.
Anda tidak boleh memiliki lebih dari 1.000 kebijakan deployment per project/lokasi.
Peran dan izin Identity and Access Management yang diperlukan
Selain izin yang Anda perlukan untuk menjalankan pipeline pengiriman Cloud Deploy, dan untuk melakukan tugas yang akan dibatasi oleh kebijakan, ada beberapa izin yang diperlukan untuk melakukan operasi tertentu pada resource kebijakan:
clouddeploy.deployPolicies.create
clouddeploy.deployPolicies.delete
clouddeploy.deployPolicies.get
clouddeploy.deployPolicies.list
clouddeploy.deployPolicies.update
clouddeploy.deployPolicies.override
Izin tersebut disertakan dalam peran roles/clouddeploy.policyAdmin
.
Selain itu, peran roles/clouddeploy.policyOverrider
mencakup
izin .override
.
Membuat kebijakan deployment
Membuat resource deploy-policy terdiri dari langkah-langkah berikut:
Buat file YAML dengan konfigurasi kebijakan deployment.
Konfigurasi ini mencakup header, yang mengidentifikasi resource sebagai kebijakan deployment.
name
wajib diisi.apiVersion: deploy.cloud.google.com/v1 kind: DeployPolicy metadata: name: description:
Tambahkan referensi ke pipeline dan target pengiriman tempat kebijakan berlaku (
selectors
).Lihat Men-deploy pemilih kebijakan dan Referensi skema konfigurasi untuk mengetahui informasi selengkapnya tentang pemilih kebijakan dan cara mengonfigurasinya.
Tambahkan satu atau beberapa
rules
kebijakan.Setiap aturan menjelaskan batasan dan situasi saat batasan tersebut diterapkan. Lihat Men-deploy aturan kebijakan dan Referensi skema konfigurasi untuk mengetahui informasi selengkapnya tentang aturan kebijakan dan cara mengonfigurasinya.
Terapkan file tersebut, menggunakan
gcloud deploy apply --filename=
untuk membuat resource.
Pipeline atau target pengiriman yang dirujuk kini dibatasi sesuai dengan aturan dalam resource kebijakan deployment.
Men-deploy pemilih kebijakan
Pemilih, yang ditentukan dalam konfigurasi kebijakan deployment, menentukan pipeline dan target pengiriman yang terpengaruh oleh aturan tertentu.
Pemilih ditentukan dalam stanza selectors
dalam konfigurasi kebijakan deployment, sebagai properti level teratas:
selectors:
- deliveryPipeline:
id:
labels:
target:
id:
labels:
Dalam YAML konfigurasi ini, deliveryPipeline.id
mengambil nama
pipeline pengiriman, dan target.id
mengambil nama target (dalam kedua kasus,
metadata.name
).
Anda dapat menggunakan id: *
untuk memilih semua pipeline pengiriman atau semua target. Anda juga
dapat menggunakan label untuk mencocokkan pipeline atau target pengiriman, atau keduanya.
Dalam pemilih tertentu, item digabungkan dengan AND. Beberapa pemilih dihubungkan dengan OR. Artinya, agar permintaan tertentu dibatasi oleh kebijakan, permintaan tersebut harus berlaku untuk setidaknya satu pemilih. Namun, dalam pemilih tersebut, permintaan harus cocok dengan semua item.
Men-deploy aturan kebijakan
Setiap kebijakan deployment menyertakan satu atau beberapa aturan kebijakan, yang menentukan tindakan apa saja yang dibatasi di pipeline atau target pengiriman yang dipilih. Aturan ini juga menentukan keadaan saat aturan diterapkan.
Aturan berikut tersedia:
rolloutRestriction
Aturan rolloutRestriction
mencegah tindakan peluncuran yang ditentukan dilakukan
pada target yang dipilih yang digunakan oleh pipeline pengiriman yang dipilih. Aturan ini menggunakan periode waktu yang menentukan kapan peluncuran tidak dapat dibuat untuk pipeline dan target pengiriman yang dipilih. Lihat Tanggal dan waktu untuk mengetahui
deskripsi cara tanggal dan waktu ditentukan dalam aturan kebijakan deployment.
Tindakan berikut dapat dibatasi selama aturan berlaku:
ADVANCE
Fase peluncuran tidak dapat dimajukan.
APPROVE
Promosi peluncuran tidak dapat disetujui.
CANCEL
Peluncuran tidak dapat dibatalkan.
CREATE
Peluncuran tidak dapat dibuat. Anda dapat membuat rilis jika kebijakan mencegah tindakan ini, tetapi rilis tersebut tidak akan menghasilkan peluncuran.
IGNORE_JOB
Tugas tidak dapat diabaikan.
RETRY_JOB
Tugas tidak dapat dicoba lagi.
ROLLBACK
Peluncuran tidak dapat di-roll back.
TERMINATE_JOBRUN
Proses tugas tidak dapat dihentikan
Lihat Referensi skema konfigurasi untuk mengetahui struktur YAML untuk aturan ini.
Tanggal dan waktu dalam aturan rolloutRestriction
Anda mengonfigurasi blok tanggal dan waktu untuk menentukan periode waktu berulang dan tidak berulang selama kebijakan deployment berlaku.
Berikut adalah persyaratan untuk menyatakan tanggal dan waktu:
Tanggal dinyatakan sebagai
yyyy-mm-dd
.Saat menyatakan waktu, awal hari adalah
00:00
, dan akhir hari adalah24:00
.Untuk
oneTimeWindows
, tanggal harus menyertakan waktu. UntukweeklyWindows
, Anda dapat menghapus waktu. Namun, jika menyertakanstartTime
, Anda harus menyertakanendTime
, dan sebaliknya.Misalnya, pembekuan hanya pada hari Minggu akan seperti berikut:
- daysOfWeek: [SUNDAY] startTime: "00:00" endTime: "24:00"
Anda juga dapat melakukan hal berikut:
- daysOfWeek: [SUNDAY]
Namun, tidak seperti ini:
- daysOfWeek: [SUNDAY] startTime: "00:00"
Anda harus menyertakan zona waktu, dalam stanza
timeWindows
.Misalnya:
timeZone: America/New_York
.
Periode waktu yang tidak berulang
Periode waktu yang tidak berulang dimulai dan berakhir pada hari dan waktu tertentu. Anda akan menggunakannya untuk setiap blok waktu yang ingin Anda batasi peluncurannya.
Periode waktu yang tidak berulang dikonfigurasi menggunakan stanza oneTimeWindows
.
Periode waktu berulang
Periode waktu berulang menjelaskan blok waktu berulang yang ingin Anda batasi peluncurannya. Misalnya, Anda dapat menggunakannya untuk membatasi peluncuran pada akhir pekan.
Periode waktu berulang dikonfigurasi menggunakan stanza weeklyWindows
.
Contoh
Bagian ini berisi beberapa contoh penggunaan tanggal dan waktu untuk mengonfigurasi kapan kebijakan deployment diterapkan.
Pembekuan tahunan
Jika ada waktu dalam setahun saat Anda ingin membekukan peluncuran, Anda dapat mengonfigurasi blok oneTimeWindows
untuk melakukannya. Jika tanggalnya dapat diprediksi, dari tahun ke tahun, Anda masih perlu menggunakan beberapa blok oneTimeWindow
.
YAML berikut menunjukkan periode waktu satu kali (tidak berulang) untuk menerapkan kebijakan deployment untuk pembekuan tahunan:
timeWindows:
timeZone: "America/New_York"
oneTimeWindows:
- start: "2024-12-22 17:00"
end: "2025-01-02 09:00"
YAML ini menjelaskan periode waktu dari 22 Desember 2024 pukul 17.00, hingga 2 Januari 2025 pukul 09.00.
Pembekuan akhir pekan berulang
YAML berikut menunjukkan periode waktu berulang untuk menerapkan kebijakan deployment yang membatasi peluncuran pada akhir pekan, dari Jumat pukul 17.00 hingga Senin pagi pukul 09.00:
timeWindows:
timeZone: "America/New_York"
weeklyWindows:
- daysOfWeek: [FRIDAY]
startTime: "17:00"
endTime: "24:00"
- daysOfWeek: [SATURDAY, SUNDAY]
startTime: "00:00"
endTime: "24:00"
- daysOfWeek: [MONDAY]
startTime: "00:00"
endTime: "09:00"
Memperbarui kebijakan deployment
Memperbarui kebijakan deployment terdiri dari langkah-langkah berikut:
Edit YAML konfigurasi kebijakan.
Jika membuat kebijakan menggunakan konsol Google Cloud, Anda bisa mendapatkan konfigurasi YAML dengan memilih tab YAML di halaman Deploy policy details. Kemudian, Anda dapat menyalin teks tersebut ke dalam file secara lokal dan mengeditnya di sana.
Terapkan file tersebut, menggunakan
gcloud deploy apply --filename=
.Tindakan ini akan memperbarui resource kebijakan deployment dengan konfigurasi baru.
Karena kebijakan deployment dievaluasi saat tindakan yang dibatasi dicoba, semua tindakan tersebut terhadap semua resource Cloud Deploy tunduk pada kebijakan yang diperbarui. Artinya, tidak ada sisa dari batasan sebelumnya.
Misalnya, jika Anda memiliki pemblokiran restrictRollouts
untuk seluruh bulan
Desember, dan pada 14 Desember, Anda memperbarui kebijakan sehingga pembatasan berakhir
pada 15 Desember, peluncuran tidak lagi diblokir setelah 15 Desember.
Mengganti kebijakan deployment
Anda dapat mengganti kebijakan deployment, jika perlu. Misalnya, jika ada masalah deployment dalam produksi dan Anda perlu melakukan roll back, tetapi ada kebijakan deployment yang mencegah peluncuran, Anda dapat mengganti kebijakan tersebut untuk melakukan roll back peluncuran yang buruk.
Untuk mengganti kebijakan deployment, Anda harus memiliki
izin IAM clouddeploy.deployPolicies.override
.
Anda dapat mengganti kebijakan dari gcloud CLI atau menggunakan konsol Google Cloud:
console
Di konsol Google Cloud, coba lakukan tindakan yang diblokir oleh kebijakan.
Dialog akan ditampilkan yang menunjukkan bahwa tindakan diblokir oleh kebijakan deployment. Dialog ini menyertakan link ke kebijakan spesifik yang memblokir tindakan ini.
Di kolom teks yang disediakan, ketik nama kebijakan, lalu klik Mencoba mengganti kebijakan.
Jika Anda memiliki izin untuk mengganti kebijakan, Cloud Deploy kini akan menjalankan tindakan tersebut.
gcloud CLI
Untuk mengganti kebijakan deployment menggunakan gcloud CLI, tambahkan
--override-deploy-policies
ke perintah untuk tindakan apa pun yang akan
dicegah oleh kebijakan tersebut. Misalnya, perintah berikut mempromosikan
rilis, mengganti kebijakan deployment tertentu yang akan mencegah
promosi:
gcloud deploy releases promote --release=my-release-001 \
--project=my-policy-testing-project \
--region=us-central1 \
--delivery-pipeline=my-pipeline \
--to-target=prod-target \
--override-deploy-policies=my-deploy-policy
Menghapus kebijakan deployment
Untuk menghapus kebijakan deployment:
console
Di konsol Google Cloud, buka halaman Deploy policies Cloud Deploy.
Halaman ini menyertakan daftar kebijakan deployment yang tersedia di project saat ini, jika ada.
Pilih tombol
Tindakan untuk kebijakan yang ingin Anda hapus, lalu klik Hapus kebijakan deployment.Konfirmasi penghapusan dengan mengetik nama kebijakan deployment, lalu klik Konfirmasi.
Kebijakan tersebut kini telah dihapus, dan Anda kini dapat melakukan tindakan apa pun yang dibatasi oleh kebijakan tersebut.
gcloud CLI
Untuk menghapus kebijakan deployment menggunakan gcloud CLI, jalankan perintah berikut:
gcloud deploy deploy-policies delete \
--project=[PROJECT] \
--region=[REGION] \
[POLICY_NAME]
Ganti kode berikut:
[POLICY_NAME]
Nama kebijakan seperti yang ditentukan dalam file konfigurasi kebijakan.
[PROJECT]
Project ID project Google Cloud tempat Anda membuat kebijakan deployment.
[REGION]
Region tempat Anda membuat kebijakan deployment.
Setelah Anda menghapus resource kebijakan deployment, pipeline dan target pengiriman yang terpengaruh tidak lagi tunduk pada kebijakan, dan tidak akan dibatasi kecuali jika dipengaruhi oleh kebijakan deployment lain.
Logging kebijakan deployment
Saat kebijakan deployment dievaluasi, entri log platform akan dibuat untuk tindakan berikut:
Evaluasi kebijakan
Log platform ditulis saat permintaan dievaluasi dan melanggar kebijakan. Log juga ditulis saat kebijakan dilanggar oleh permintaan, tetapi permintaan tersebut diizinkan karena kebijakan ditangguhkan atau diganti. Tidak ada log yang ditulis saat permintaan disetujui karena kebijakan tidak dilanggar.
Kegagalan notifikasi Pub/Sub setelah perubahan resource kebijakan deployment.
Langkah selanjutnya
Lihat Skema file konfigurasi untuk mengetahui detail tentang cara mengonfigurasi kebijakan deployment.
Pelajari otomatisasi deployment Cloud Deploy.