Cluster Automated Upgrade
5 min read
Fleksibilitas, percepatan pengembangan dan pengiriman, peningkatan skalabilitas, serta ketersediaan tinggi adalah alasan utama mengapa banyak perusahaan mengadopsi teknologi Kubernetes (K8s). Namun, mengelola dan menjaga sistem agar tetap mutakhir bisa menjadi sangat kompleks bagi organisasi, hingga mereka perlu membentuk departemen terpisah hanya untuk menangani semua itu dengan benar.
Dengan otomatisasi Kubernetes dari Jelastic, Kamu bisa meningkatkan produktivitas DevOps dan lebih fokus pada tujuan bisnismu daripada harus bergulat dengan kompleksitas infrastruktur. Dalam artikel ini, kita akan membahas bagaimana menyederhanakan lifecycle cluster Kubernetes melalui pengiriman pembaruan secara otomatis.
Kubernetes Cluster Versioning #
Sebelum memutuskan untuk melakukan upgrade, Kamu perlu memeriksa versi saat ini dari cluster Kubernetes-mu dengan salah satu cara berikut:
- Melalui dashboard, terletak di sebelah node master dan worker.

- Melalui klien WebSSH dengan menjalankan perintah berikut untuk melihat versi Kubernetes:
kubectl version --short

Lalu, bandingkan versi cluster yang sedang digunakan dengan paket pembaruan otomatis yang tersedia di halaman versi Kubernetes milik Jelastic.

Meskipun versi Kubernetes terbaru dirilis secara rutin, tidak semuanya langsung cocok untuk proses pembaruan otomatis. Ketika suatu versi K8s telah melewati pengujian QA dari Jelastic dan telah digunakan secara luas sehingga terbukti stabil seiring waktu, maka versi tersebut dapat ditambahkan sebagai opsi upgrade.
Dengan menggunakan add-on khusus dari Jelastic (yang dijelaskan di bagian berikutnya), proses upgrade dapat dilakukan secara otomatis ke rilis berikutnya yang sudah mencakup semua patch menengah. Jika versi cluster yang sedang digunakan sudah terlalu lama dibandingkan versi terbaru, maka add-on upgrade perlu dijalankan beberapa kali secara bertahap hingga mencapai versi final. Pendekatan bertahap ini membantu mengurangi risiko ketidakcocokan dan memastikan proses pembaruan berjalan lancar.
📝 NOTE
Cluster Kubernetes akan menjadi tidak berfungsi jika kamu mencoba melakukan upgrade secara manual ke versi yang belum diadopsi oleh Jelastic.
Kubernetes Cluster Auto Upgrade Add ON #
Untuk mendapatkan versi terbaru secara otomatis, kamu perlu menggunakan add-on “Cluster Upgrade”.
1. Tekan tombol Add-Ons pada node Master dan klik Start Cluster Upgrade.

2. Konfirmasi proses upgrade untuk melanjutkan.

📝 NOTE
Setelah Kamu meng-upgrade Kubernetes ke versi yang lebih baru, Kamu tidak bisa melakukan downgrade. Oleh karena itu, Kamu harus memastikan bahwa aplikasi yang dideploy di cluster tersebut kompatibel dengan versi yang akan Kamu aktifkan. Untuk itu, buatlah cluster development dan uji kompatibilitas versi baru tersebut dengan aplikasi Kamu sebelum melakukan upgrade di lingkungan produksi.
3. Sistem secara otomatis akan memeriksa versi Kubernetes baru yang tersedia di platform dan memulai proses upgrade cluster.

Atau bisa juga memberitahu bahwa cluster-mu sudah menggunakan versi terbaru yang tersedia di platform.

4. Ketika cluster berhasil diperbarui ke versi terbaru, akan muncul pop-up konfirmasi yang menyatakan keberhasilan upgrade.

Zero downtime upgrade hanya memungkinkan untuk instalasi Production, karena secara default mencakup 3 master, 2 API load balancer, dan 2 worker. Konfigurasi ini siap melakukan pembaruan tanpa gangguan kecuali kemungkinan downtime singkat pada ingress controller (jika ikut diperbarui ke versi baru).
Namun, perlu diingat bahwa zero downtime tidak hanya bergantung pada otomatisasi dari Jelastic, tetapi juga pada cara aplikasi dideploy. Misalnya, ada dua node worker, yakni worker1 dan worker2. Developer menjalankan aplikasi dengan satu replika di worker 1. Saat rolling update, semua pod akan dijadwalkan ulang dari worker1 ke worker2. Artinya, aplikasi akan mengalami downtime saat proses upgrade. Sebaliknya, jika aplikasi dijalankan dengan dua replika (masing-masing satu di worker 1 dan worker 2), tidak akan ada downtime saat rolling update dilakukan.
Jadi, seluruh prosedur upgrade ini sepenuhnya otomatis dan akan berjalan seperti ilustrasi yang dijelaskan berikutnya.

Kubernetes Cluster Update Process #
Mari kita periksa lebih detail bagaimana proses pembaruan dilakukan di dalam dan komponen apa saja yang terpengaruh. Semua perubahan ini dilakukan secara otomatis oleh platform, jadi Kamu hanya perlu mengikuti prosesnya dan tidak diperlukan campur tangan.
Cluster Kubernetes terdiri dari master dan worker node. Beban kerja yang dijalankan oleh kedua jenis node ini berbeda. Dan komponen yang membentuknya juga berbeda.

Node master sebenarnya adalah bagian dari control plane yang harus di-upgrade terlebih dahulu, baru kemudian giliran node worker. Urutan langkah upgrade dan aksi tambahan yang dilakukan berdasarkan package manifest dijelaskan sebagai berikut:
1. addon-upgrade-init #
- Validasi tag pada setiap instance
- Menampilkan notifikasi jika upgrade tidak memungkinkan
- Menyusun daftar versi yang tersedia
- Menyusun urutan proses upgrade yang akan dijalankan
2. addon-upgrade-start #
- Menjalankan skrip upgrade Kubernetes
- Menampilkan notifikasi bahwa proses upgrade cluster telah dimulai
- Menjalankan manifest upgrade cluster (upgrade.jps)
3. check-cluster-status #
- Mengecek status cluster sebelum dilakukan upgrade.
- Memvalidasi respon API, status komponen penting, dan kesiapan setiap node dalam cluster. Kalau ditemukan masalah, proses upgrade akan dihentikan dan Kamu akan diminta untuk mengecek kembali kondisi cluster.
4. upgrade-configuration #
- Melakukan konfigurasi ulang pada cluster
- Komponen khusus dari distribusi Kubernetes Jelastic akan dideteksi dan di-update
- Komponen yang sudah usang dihapus dan diganti dengan versi terbaru
- Bagian ini spesifik untuk tiap versi, jadi bisa berbeda-beda tergantung versinya
5. upgrade-masters-cluster (master) #
- Validasi konfigurasi control plane (k8sm) yang sedang digunakan
- Instalasi kubeadm untuk versi Kubernetes yang baru, mengubah status master menjadi maintenance, dan membersihkan pod
- Mengaplikasikan konfigurasi versi baru ke instance saat ini
- Melakukan upgrade ke versi baru, lalu keluar dari status maintenance
6. upgrade-masters-cluster (slave) #
- Dilakukan secara berurutan untuk semua instance k8sm lainnya
- Validasi konfigurasi saat ini
- Instalasi kubeadm versi baru
- Masuk ke status maintenance, membersihkan pod
- Terapkan konfigurasi versi baru, upgrade instance
- Keluar dari status maintenance
7. upgrade-jps-manifests #
- Update main manifest sesuai versi yang ditentukan dalam kubernetes assembly
- Update addon manifest sesuai versi yang ditentukan dalam kubernetes assembly
8. env.control.ApplyNodeGroupData [k8sm, cp] #
- Menghapus batasan pada proses redeploy untuk instance k8sm dan cp
9. upgrade-masters-redeploy (master) #
- Menetapkan parameter redeploy untuk k8sm master
- Melakukan redeploy ke versi baru
- Menjalankan skrip inisialisasi untuk mengatur instance dengan versi Kubernetes baru
- Validasi status layanan dan melakukan restart jika diperlukan
10. upgrade-masters-redeploy (slave) #
- Dilakukan secara berurutan pada setiap instance slave
- Menentukan parameter redeploy
- Redeploy ke versi baru
- Menjalankan skrip inisialisasi untuk menyesuaikan instance ke versi Kubernetes terbaru
- Validasi dan restart layanan
11. upgrade-masters-post (master) #
- Konfigurasi lanjutan setelah upgrade selesai pada k8sm master
- Menyiapkan set integrasi yang akan digunakan pada node worker
12. upgrade-masters-post (slave) #
- Dilakukan satu per satu pada slave k8sm lainnya
- Konfigurasi lanjutan setelah upgrade selesai
13. upgrade-workers #
- Upgrade setiap worker node secara berurutan
- Mengubah status instance menjadi maintenance
- Update kubeadm ke versi baru, menetapkan parameter redeploy, dan melakukan redeploy
- Menjalankan skrip inisialisasi setelah redeploy
- Konfigurasi lanjutan untuk worker, menerapkan data integrasi
- Mengembalikan instance dari status maintenance

Selama proses redeploy container, direktori dan file berikut tetap tidak disentuh:
/data /etc/cni /etc/kubernetes/etc/machine-id /etc/sysconfig/iptables /etc/sysconfig/kubelet /root /var/lib/cni /var/lib/docker /var/lib/etcd /var/lib/weave /var/lib/kubelet /var/log/containers /var/log/kubernetes /var/log/kubeadm-init.log /var/log/kubeadm-join.log /var/log/kubeadm-join-error.log /var/log/pods
📝 NOTE
Mulai dari versi paket 1.18.14, pengguna bisa menambahkan file dan direktori kustom ke daftar yang tidak disentuh tersebut dengan mengubah file /etc/jelastic/redeploy.conf di node master
Selain komponen internal Kubernetes, platform juga memperbarui fungsi-fungsi yang disediakan oleh Jelastic, seperti:
- Aksi-aksi yang men-trigger event tertentu (misalnya: configure-master, connect-workers, scaling, dan lainnya)
- File konfigurasi (seperti kubernetes-dashboard.yaml, jelastic-values.yaml, dll)
- Add-on yang sudah terintegrasi
Hasil akhirnya, cluster Kubernetes bisa diupgrade dengan lancar dan minim intervensi manual. Otomatisasi dari Jelastic membuat proses ini jadi lebih sederhana dan membantu menjaga environment cloud Kamu tetap up to date. Yuk cobain di Jagoan Cloud!
Powered by BetterDocs
