Portal/Notes πŸ“
Cka

Deployment: Rollout

Versi Bahasa Indonesia. Baca dalam Bahasa Inggris

Rollout terjadi ketika Deployment atau StatefulSet memperbarui Pod-nya ke versi baru. Kubernetes secara bertahap mengganti Pod lama dengan yang baru, mengikuti strategi yang ditentukan.

  • Memastikan Zero Downtime: Pod baru dibuat sebelum Pod lama dihentikan.
  • Mendukung Rollback: Dapat kembali ke versi sebelumnya jika diperlukan.
  • Pembaruan Terkontrol: Menggunakan strategi untuk membatasi dampak.

Secara default, ketika objek deployment diterapkan, Kubernetes akan melakukan rollout update ke pod yang ada.

Rollout Restart

Kapan pun kita ingin me-restart pod karena image terbaru tersedia atau untuk mengambil konfigurasi terbaru dari ConfigMap atau Secret, kita dapat melakukan rollout restart.

➜ kubectl rollout restart deployment simple-go 
deployment.apps/simple-go restarted

Dan ketika Anda memeriksa pod segera setelah rollout restart, Anda akan melihat proses rollout. Controller manager akan membuat 1 pod baru dan segera setelah pod baru siap, ia akan mematikan 1 pod lama hingga semua pod baru siap.

➜ kubectl get pods                            
NAME                         READY   STATUS              RESTARTS   AGE
simple-go-764bc77644-grfhg   1/1     Running             0          3h31m
simple-go-764bc77644-snb8n   1/1     Running             0          3h31m
simple-go-7cf4d4d6df-hgjv8   1/1     Running             0          5s
simple-go-7cf4d4d6df-hj7sk   0/1     ContainerCreating   0          2s

Seperti yang kita lihat di bawah, setelah beberapa waktu semua pod lama telah digantikan oleh kumpulan pod baru.

➜ kubectl get pods
NAME                         READY   STATUS    RESTARTS   AGE
simple-go-7cf4d4d6df-5ck9n   1/1     Running   0          30s
simple-go-7cf4d4d6df-hgjv8   1/1     Running   0          36s
simple-go-7cf4d4d6df-hj7sk   1/1     Running   0          33s

Riwayat Rollout

Untuk menampilkan daftar riwayat deployment, kita dapat menggunakan perintah rollout history deployment <name>.

➜ kubectl rollout history deployment simple-go
deployment.apps/simple-go 
REVISION  CHANGE-CAUSE
1         <none>
2         <none>
3         <none>

Di sini CHANGE-CAUSE kosong karena kita perlu secara eksplisit menentukan pesan di metadata.annotations.

Rollout Undo

rollout undo akan mengembalikan deployment yang ada ke versi sebelumnya.

➜ kubectl rollout undo deployment simple-go

Kita juga dapat menentukan revisi berdasarkan riwayat rollout menggunakan --to-revision.

➜ kubectl rollout undo deployment simple-go --to-revision=2

Referensi


Edit on GitHub

Last updated on

Deployment: Rollout | Faisal Affan