Cara Rolling Update dan Rollback di Kubernetes
Yo, kawan-kawan! Kali ini kita bakal ngomongin tentang cara melakukan Rolling Update dan Rollback di Kubernetes. Bagi yang belum tahu, Kubernetes adalah sistem orkestrasi kontainer keren buat nge-deploy, scaling, dan manage aplikasi berbasis kontainer. Nah, di dunia ops yang serba ngebut gini, kita perlu nge-perform update dan rollback dengan cara yang smooth tanpa nge-down waktu aplikasi kita.
1. Rolling Update: Upgrade Tanpa Ngehe
Rolling Update itu cara buat nge-upgrade replika aplikasi di Kubernetes satu per satu. Jadi, aplikasi tetep jalan terus, gak ada downtime. Berikut cara ngejalaninnya:
Pertama, kita butuh aplikasi yang udah jalan di Kubernetes. Misal, kita punya Deployment yang ngeladenin aplikasi versi 1.0.
apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 3 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-app image: my-app:1.0 ports: - containerPort: 80
Kedua, kita mau nge-upgrade ke versi 2.0. Cukup nge-edit file Deployment, ganti image dari
my-app:1.0
kemy-app:2.0
.spec: containers: - name: my-app image: my-app:2.0
Terus terapkan perubahan dengan perintah
kubectl apply -f my_deployment.yaml
.Kubernetes bakal ngegantiin replika satu per satu. Jadi, pas satu replika di-upgrade, yang lain tetep jalan pake versi lama. Begitu seterusnya sampai semua replika udah pake versi baru.
Kalo mau atur pakai CLI aja, bisa pake
kubectl set image deployment/my-app my-app=my-app:2.0
. Ntar Kubernetes ngejalanin rolling update otomatis.
2. Rollback: Kembali ke Versi Sebelumnya Kalo Ada Masalah
Kadang-kadang, update nggak berjalan mulus. Misalkan, ternyata versi barunya ada bug yang nggak ketauan pas testing. Nah, kalo gitu, kita kudu rollback ke versi sebelumnya cepet-cepet.
Caranya gampang:
Cek dulu riwayat revisi Deployment:
kubectl rollout history deployment my-app
Ntar keliatan daftar perubahan yang udah kita lakuin ke Deployment.
Misalkan kita mau rollback ke revisi sebelumnya (misal revisi 1):
kubectl rollout undo deployment my-app --to-revision=1
Kubernetes bakal balikin Deployment ke state yang kita mau, sama kayak rolling update, tapi ke arah sebaliknya.
3. Monitor Prosesnya
Selama proses rolling update atau rollback, kita bisa pantau terus prosesnya:
Cek status rollout:
kubectl rollout status deployment my-app
. Kalo rollout beres, bakal keliatan kalo semua replika udah berjalan versi baru.Cek status Pod:
kubectl get pods
. Ntar keliatan ganti-gantinya Pod versi lama ke versi baru.Kalo ada error:
kubectl describe deployment my-app
buat liat detail kesalahannya di event history.
4. Tips dan Trik
Pakai Readiness Probe dan Liveness Probe biar Kubernetes bisa ngecek kapan kontainer kita udah siap nerima traffic atau kapan kudu di-restart. Ini penting biar rolling update berjalan lancar tanpa nge-drop traffic yang ada.
Atur
maxSurge
danmaxUnavailable
di Deployment buat ngontrol berapa banyak Pod baru yang boleh dibuat atau Pod lama yang bisa dimatikan pas proses rolling update.
5. Simulasi Rolling Update dan Rollback
Buat simulasi, coba bikin Deployment dengan image: nginx:1.14.2
dengan 3 replika. Terus nge-update image ke nginx:1.19.3
pake kubectl set image
.
Kalo misal ada yang aneh, coba rollback pake kubectl rollout undo
. Gitu aja, nanti juga bakal liat cara kerjanya.
Gimana? Mudah banget kan pake Kubernetes? Jadi, kalo mau update aplikasi, kita nggak perlu khawatir bakal nge-down soale Kubernetes bakal ngejamin prosesnya berjalan smoothly. Semoga tips kali ini membantu ya. Happy deploying!