Kubernetes 101: YAML Manifest

Pelajari cara membuat, menerapkan, dan mengelola aplikasimu secara efisien menggunakan file konfigurasi YAML Kubernetes. Ketahui semua di sini!

Kubernetes 101: YAML Manifest
Kubernetes 101: YAML Manifest - onxp blog

Menerapkan sumber daya menggunakan Kubernetes Manifest pada dasarnya adalah tentang mendeskripsikan keadaan sistem atau aplikasi yang diinginkan dalam file YAML.

Perkenalan

Di dunia cloud-native saat ini, Kubernetes telah hadir sebagai pionir, memelopori pendekatan baru dalam mengatur serta mengelola aplikasi dalam container.

Sebagai bagian keseluruhan dari Kubernetes, manifest berfungsi sebagai instruksi manual untuk mesin Kubernetes, yang membantunya memahami sumber daya apa yang harus diterapkan dan dikelola.

Artikel ini akan menggali lebih dalam dunia Kubernetes Manifest, yang menjelaskan peran integralnya, konsep di balik penerapannya, dan banyak lagi.

Apa itu YAML?

YAML atau singkatan dari “YAML Ain't Markup Language,” adalah bahasa serialisasi data yang sangat mudah dipahami dan dipelajari oleh programmer manapun. YAML unggul dalam bekerja dengan struktur data yang khas dari bahasa tingkat tinggi seperti Python, Perl, dan JavaScript. Sintaks YAML yang mudah dibaca memainkan peran penting dalam penggunaannya secara luas.

Struktur File YAML

Dalam file YAML, data disusun menggunakan indentasi dan tanda baca sederhana. Urutan dilambangkan dengan tanda hubung, dan key-value pairs dipisahkan dengan titik dua.

Kesederhanaan dan keterbacaan ini menjadikan YAML sebagai format yang ideal untuk file konfigurasi, seperti Kubernetes Manifest.

Apa itu YAML - onxp blog
Struktur File YAML - onxp blog

Peran YAML dalam Kubernetes Manifest

Dalam ranah Kubernetes, file YAML berfungsi sebagai bagian utama yang membantu dalam mendefinisikan dan mengonfigurasi sumber daya yang diperlukan.

Kubernetes menggunakan manifest, yang ditulis dalam format YAML, untuk membuat, memodifikasi, dan mengontrol sumber daya seperti pods, services, dan volumes.

Setiap file YAML untuk Kubernetes Manifest menjelaskan keadaan yang diinginkan untuk sumber daya Kubernetes, menyediakan rincian yang diperlukan seperti jenis sumber daya, metadata, dan desired states.

Menerapkan Sumber Daya Menggunakan Manifest YAML

Menerapkan sumber daya menggunakan Kubernetes manifest pada dasarnya adalah tentang mendeskripsikan keadaan sistem atau aplikasi yang diinginkan dalam file YAML.

Sistem Kubernetes membaca file ini, memahami spesifikasi yang telah kamu tetapkan, dan kemudian bekerja untuk membuat keadaan sebenarnya dari sistem sesuai dengan keadaan yang diinginkan yang ditentukan dalam manifest. Hal ini melibatkan pembuatan, pembaruan, atau penghapusan sumber daya yang diperlukan.

Peran YAML dalam Kubernetes Manifest - onxp blog

Ketika kamu menerapkan Kubernetes Manifest, pada dasarnya kamu memberikan blueprint ke sistem Kubernetes. Kamu memberi tahu sumber daya apa yang kamu perlukan, berapa banyak replika dari setiap sumber daya yang kamu perlukan, bagaimana sumber daya ini harus berinteraksi satu sama lain, dan bagaimana sumber daya tersebut harus bereaksi terhadap perubahan status sistem.

Kubernetes YAML Manifest biasanya berisi beberapa kolom kunci. Berikut struktur dasarnya:

Sekarang, mari kita uraikan setiap bagiannya:

  1. apiVersion: Bidang ini digunakan untuk menentukan versi Kubernetes API mana yang akan menginterpretasikan file manifest. Versi yang kamu pilih bergantung pada jenis sumber daya yang ingin kamu buat. Misalnya, jika kamu membuat sebuah Pod, kamu akan menggunakan v1. Untuk sumber daya lain, seperti Deployment, kamu akan menggunakan apps/v1.
  2. kind: Bidang ini menentukan jenis sumber daya Kubernetes yang ingin kamu buat atau kelola. Ini bisa berupa Pod, Service, Deployment, ReplicaSet, dan masih banyak lainnya.
  3. metadata: Bagian ini digunakan untuk menetapkan informasi pengenal ke sumber daya.

name: Menentukan nama unik untuk sumber daya dalam namespace.

labels: Pasangan kunci-nilai yang dapat digunakan untuk mengidentifikasi dan mengelompokkan sumber daya

  1. spec: Bagian ini adalah tempat di mana kamu menentukan status sumber daya yang diinginkan. Hal-hal spesifik yang dimasukkan ke dalam bagian ini dapat sangat bervariasi tergantung pada jenis kind sumber daya yang ditentukan.

Behind the Scenes: Apa yang Terjadi Saat Kamu Menerapkan Sumber Daya Menggunakan Manifest

Apa itu YAML - onxp blog

Ketika Kubernetes Manifest diterapkan, instruksi dalam file YAML dikirim ke server Kubernetes API. Server API, yang bertindak sebagai garis depan bidang kendali Kubernetes, memvalidasi dan memproses permintaan.

Setelah server API memproses manifest, server ini akan memperbarui sistem desired states di etcd, penyimpanan key-value terdistribusi yang digunakan Kubernetes untuk memelihara semua data clusternya.

Etcd menyimpan keadaan sistem saat ini, dan Kubernetes terus memantaunya untuk memastikan keadaan sebenarnya dari sistem sesuai dengan keadaan yang diinginkan.

Control loop dalam Kubernetes kemudian mulai bekerja. Berbagai pengontrol, masing-masing bertanggung jawab atas jenis sumber daya tertentu, dan memantau etcd secara berkala.

Ketika mereka mendeteksi perbedaan antara keadaan yang diinginkan dan keadaan saat ini, mereka memulai tindakan yang diperlukan untuk menyelaraskan keduanya, sehingga mencapai keadaan yang ditentukan dalam manifest.

Imperatif vs Deklaratif

Imperatif vs Deklaratif - onxp blog

Di Kubernetes, ada dua metodologi untuk mengelola sumber daya: pendekatan imperatif dan pendekatan deklaratif.

Pendekatan Imperatif

Pendekatan imperatif melibatkan pemberian perintah langsung kepada sistem untuk mengubah keadaannya. Kamu secara eksplisit menyatakan tindakan yang akan diambil, tanpa berfokus pada hasil akhir.

Hal ini mirip dengan manual steering, di mana kamu memanipulasi sumber daya Kubernetes secara langsung menggunakan perintah seperti kubectl create, kubectl delete, atau kubectl replace.

Pendekatan Deklaratif

Di sisi lain, pendekatan deklaratif melibatkan pendefinisian sistem desired states dan membiarkan Kubernetes mencari cara untuk mencapainya. Alih-alih memberikan instruksi langkah demi langkah, kamu mendefinisikan kondisi akhir yang seharusnya, dan Kubernetes berupaya mempertahankan kondisi ini, dan melakukan penyesuaian seperlunya.

Pendekatan deklaratif terhadap pengelolaan sumber daya Kubernetes terkait erat dengan penggunaan YAML manifest. Saat menggunakan pendekatan ini, kamu menentukan desired states sumber daya Kubernetes dalam YAML manifest. Dengan kata lain, kamu memberi tahu Kubernetes seperti apa sistem yang kamu inginkan, bukan bagaimana cara mencapainya.

Sebagai contoh, kamu mungkin memiliki Kubernetes Manifest dalam format YAML yang mendefinisikan sebuah Deployment. Dalam file YAML tersebut, kamu akan menentukan jumlah replika Pod yang diinginkan. Katakanlah kamu menetapkannya menjadi 3.

Instruksi tersebut adalah keadaan yang kamu inginkan: kamu ingin Kubernetes menjalankan tiga replika Pod-mu. Kamu tidak memberi tahu Kubernetes cara membuat Pod tersebut, atau apa yang harus dilakukan jika sebuah Pod mengalami error. Kubernetes menangani semua itu untukmu.

Saat kamu menerapkan YAML manifest ini menggunakan perintah seperti kubectl apply -f deployment.yaml, Kubernetes membaca status yang diinginkan dari file YAML dan kemudian bekerja untuk mencapai status tersebut.

Kubernetes akan membuat Pod baru, atau menghentikan Pod yang sudah ada, untuk memastikan bahwa tiga replika tersebut selalu berjalan.

Jika sebuah Pod mengalami error dan jumlah replika yang berjalan turun menjadi dua, Kubernetes tidak mengharuskan kamu memperbarui file YAML atau menjalankan perintah apa pun.

Kubernetes sudah mengetahui, dari YAML manifest, bahwa ia harus menjalankan tiga replika. Jadi, Kubernetes secara otomatis akan membuat Pod baru untuk menggantikan Pod yang error tersebut.

Kesimpulan

Inti dari pendekatan deklaratif: kamu mendeklarasikan apa yang kamu inginkan, dan Kubernetes mewujudkannya, secara otomatis pulih dari kegagalan dan beradaptasi terhadap perubahan sesuai kebutuhan.

Kamu hanya perlu memperbarui YAML manifest jika status yang kamu inginkan berubah – misalnya jika kamu ingin menjalankan aplikasi versi baru, atau mengubah jumlah replika.

Hal ini bertentangan dengan pendekatan imperatif, yang mana kamu perlu menjalankan perintah khusus untuk membuat dan mengelola setiap Pod, dan secara manual menggantikan setiap Pod yang error.

Pendekatan deklaratif, dengan menggunakan YAML manifest, yang membuatnya lebih mudah untuk mengelola sistem yang kompleks, dan umumnya merupakan pendekatan yang direkomendasikan untuk sebagian besar pengguna Kubernetes.

Mau belajar dasar-dasar Kubernetes 101?

Klik di sini

Read more