Membatasi perilaku deployment menggunakan kebijakan

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:

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

  2. 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 dalam timeWindows tersebut, harus ada oneTimeWindows atau weeklyWindows.

    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:

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

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

  4. 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 adalah 24:00.

  • Untuk oneTimeWindows, tanggal harus menyertakan waktu. Untuk weeklyWindows, Anda dapat menghapus waktu. Namun, jika menyertakan startTime, Anda harus menyertakan endTime, 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:

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

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

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

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

  1. Di konsol Google Cloud, buka halaman Deploy policies Cloud Deploy.

    Buka halaman Deploy policies

    Halaman ini menyertakan daftar kebijakan deployment yang tersedia di project saat ini, jika ada.

  2. Pilih tombol Tindakan untuk kebijakan yang ingin Anda hapus, lalu klik Hapus kebijakan deployment.

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