Apa perbedaan antara patch vs patchJson6902 di Kustomize

Berdasarkan dokumen yang saya baca, ada 3 metode patching:

  • tambalan
  • patchStrategicMerge
  • patchJson6902.

Perbedaan antara patchesStrategicMerge dan patchesJson6902 terlihat jelas. patchesStrategicMerge memerlukan struktur duplikat sumber daya kubernetes untuk mengidentifikasi sumber daya dasar yang sedang ditambal diikuti dengan bagian spesifikasi yang dimodifikasi untuk menunjukkan apa yang diubah (atau dihapus).

patchesJson6902 mendefinisikan atribut 'target' yang digunakan untuk menentukan sumber daya kubernetes dengan atribut 'path' yang menentukan atribut mana dalam sumber daya yang diubah, ditambahkan, atau dihapus.

Namun yang kurang jelas bagi saya adalah perbedaan antara patches dan patchesJson6902. Sifatnya tampaknya sangat mirip. Keduanya menentukan atribut 'target' dan objek operasi yang menjelaskan apa yang diubah.

Satu-satunya perbedaan yang saya perhatikan adalah patches tidak memerlukan atribut 'grup' sedangkan patchesJson6902 memerlukannya; Alasan untuk ini tidak diketahui.

Jadi mengapa ada perbedaan antara keduanya? Bagaimana cara menentukan mana yang akan digunakan?


person Alex    schedule 26.08.2020    source sumber


Jawaban (1)


Penjelasannya ada di sini.

Ringkasnya, patchJson6902 adalah kata kunci lama yang hanya dapat mencocokkan satu sumber daya melalui target (tanpa karakter pengganti), dan hanya menerima jenis versi Grup (GVK), namespace, dan nama.

Direktif patches lebih baru dan menerima lebih banyak elemen (pemilih anotasi dan juga pemilih label). Selain itu, namespace dan nama dapat berupa regex. Target untuk patches dapat mencocokkan lebih dari satu sumber daya, yang semuanya akan ditambal.

Selain itu, dengan patches, ia akan mencoba mengurai file patch sebagai patch Json6902, dan jika tidak berhasil, ia akan kembali mencoba patch sebagai penggabungan strategis.

Secara keseluruhan, sepertinya patches harus bekerja secara universal untuk proyek-proyek baru.

person Raman    schedule 26.08.2020