2 poin oleh GN⁺ 2024-01-24 | 1 komentar | Bagikan ke WhatsApp

Pertanyaan tentang penggunaan templat YAML

  • Mengangkat pertanyaan tentang sejak kapan penggunaan templat YAML dianggap umum, dan bagaimana hal itu bisa diterima.
  • Mempresentasikan kebutuhan manajemen konfigurasi Kubernetes dan solusi kr8 di cfgmgmtcamp 2019.
  • Saat presentasi, mempertanyakan templat YAML yang memicu diskusi aktif secara online dan di konferensi.

Masalah konfigurasi

  • Ketika aplikasi dan infrastruktur tumbuh melampaui skala tertentu, akan muncul masalah kompleksitas konfigurasi.
  • Konfigurasi aplikasi yang dideploy di berbagai lingkungan (pengembangan, staging, produksi) atau wilayah (Eropa, Amerika Utara) bisa berbeda satu sama lain.
  • Administrator sistem maupun engineer DevOps sangat memahami kompleksitas manajemen konfigurasi, dan masing-masing alat menggunakan YAML untuk menyelesaikan masalah ini.

Apakah kita mundur?

  • Seiring perubahan kebutuhan industri akibat cloud computing, berbagai alat baru pun bermunculan.
  • Alat seperti CloudFormation dan Helm adalah alat konfigurasi yang sangat baik, tetapi diyakini bahwa secara industri kita telah membuat kesalahan saat merancang templat YAML.
  • Dijelaskan dengan contoh Helm chart yang menerima parameter kustom.

Helm chart

  • Helm chart menerima parameter eksternal melalui file values.yaml lalu merender chart.
  • Dijelaskan kompleksitas yang dimulai dari parameter string sederhana hingga saat menyusun field opsional, array, dan map.
  • Menunjukkan persyaratan spasi yang ketat pada YAML dan keterbatasan sistem templat.

JSON, Jsonnet & YAML

  • YAML adalah superset dari JSON, dan konversi antara kedua format tersebut sederhana.
  • Jsonnet adalah bahasa templat data yang bertujuan menghasilkan konfigurasi JSON.

Dunia Jsonnet

  • Jsonnet adalah bahasa baru yang tidak begitu dikenal di luar komunitas Kubernetes.
  • Dengan Jsonnet, konfigurasi JSON yang menggunakan variabel eksternal dapat dibuat dengan mudah.
  • Dijelaskan cara menangani field opsional, map, parameter, serta fitur tambahan Jsonnet.

Kr8

  • Kr8 menggunakan semua metode yang dipakai untuk membuat dan memanipulasi konfigurasi dari banyak klaster Kubernetes dengan mudah dan sederhana.
  • Jika Anda setuju dengan konsep yang dijelaskan di sini, disarankan untuk melihat Kr8.

Opini GN⁺

  • Kompleksitas templat YAML: Tulisan ini menyoroti kompleksitas dan keterbatasan templat YAML, serta dengan jelas menunjukkan masalah yang dihadapi industri dalam manajemen konfigurasi.
  • Keunggulan Jsonnet: Jsonnet diajukan sebagai alternatif untuk templat YAML, dan dengan menekankan kemudahan penggunaan serta fleksibilitasnya, tulisan ini mendorong minat terhadap alat baru.
  • Masa depan manajemen konfigurasi: Tulisan ini memberikan wawasan tentang masa depan manajemen konfigurasi dan menawarkan kesempatan bagi engineer DevOps serta administrator sistem untuk mengeksplorasi pendekatan baru.

1 komentar

 
GN⁺ 2024-01-24
Komentar Hacker News
  • Ada banyak keluhan tentang file konfigurasi YAML. Di GitHub Actions pun ini dianggap sebagai bagian terburuk, dan ada perasaan serupa terhadap bahasa konfigurasi proprietari lain (HCL, ASL, dll.). API deklaratif itu bagus, tetapi ada kebutuhan agar deklarasi bisa dihasilkan secara terprogram.

  • Mendeklarasikan dan menghasilkan konfigurasi sebagai kode memberikan pengalaman yang lebih baik. AWS CDK memahami hal ini dengan tepat, dan memungkinkan penulisan definisi deklaratif untuk konfigurasi serta infrastruktur cloud melalui bahasa yang type-safe dan dukungan IDE.

  • Ada yang setuju bahwa templating YAML itu tidak rasional, dan berpendapat bahwa saat logika kompleks dibutuhkan, sebaiknya gunakan bahasa pemrograman sungguhan untuk menghasilkan YAML/JSON dan sejenisnya. Dengan cara ini, banyak masalah bisa diselesaikan.

  • Ada pembahasan tentang Kubernetes; meskipun API Kubernetes memiliki skema JSON yang intuitif dan terdefinisi dengan baik, orang-orang tetap menghabiskan banyak waktu untuk mempelajari cara menggunakan chart Helm. Jsonnet, Ksonnet, Nu, dan CUE tidak berhasil meraih popularitas besar, dan tampaknya kebanyakan orang menggunakan Kustomize yang sudah terintegrasi di kubectl.

  • Ada kritik bahwa para developer tidak cukup memikirkan bagaimana konfigurasi seharusnya ditangani dengan benar. Semua pemrograman pada dasarnya bisa dikatakan sebagai masalah konfigurasi, dan semua konfigurasi pada akhirnya diteruskan sebagai parameter ke suatu fungsi. Menyimpan konfigurasi di basis data terpusat mungkin lebih baik.

  • Dalam CI/CD, YAML kadang digunakan hampir seperti bahasa pemrograman, padahal ini sangat bertele-tele, tidak intuitif, dan dianggap sebagai bahasa spesifik vendor yang tidak terdefinisi dengan baik.

  • Ada penyesalan bahwa Helm yang akhirnya menang. Mengerjakan chart Helm sangat tidak nyaman; editor tidak bisa banyak membantu, dan semua data harus disejajarkan dengan benar lewat 'indent 4'. Ada prediksi bahwa Helm akan membawa akhir bagi Kubernetes.

  • Ada filosofi pribadi bahwa menggunakan interpolasi string untuk menghasilkan kode yang dibaca mesin bukanlah hal yang diinginkan. Masalah seperti SQL injection dan cross-site scripting akan terus muncul. Ada pendapat bahwa file template seharusnya tidak digunakan untuk menghasilkan HTML.

  • Ada pendapat bahwa orang-orang yang memilih YAML tampaknya tidak menyadari masalahnya. Ada benturan langsung antara representasi data yang berpusat pada manusia dan representasi data yang berpusat pada komputer. YAML dan JSON pada kenyataannya adalah format data yang berbeda.

  • Ada yang menyukai YAML, tetapi mengutuknya setiap hari saat harus mengerjakan chart Helm. Meski membenci Helm, mereka tetap akan menggunakannya karena semua orang memakainya.

  • Ada pertimbangan untuk beralih ke cuelang, yang dianggap dirancang lebih baik daripada Jsonnet. Kubernetes sudah memiliki kemampuan rekonsiliasi status, jadi yang dibutuhkan hanya penambahan fungsi penghapusan.