Deployment di Kubernetes adalah objek yang berfungsi sebagai manajer tingkat tinggi untuk Pod. Deployment tidak membuat Pod langsung, melainkan membuat ReplicaSet yang bertugas menjaga jumlah Pod sesuai replicas. Deployment memudahkan kita menjalankan aplikasi secara scalable dan self-healing tanpa harus membuat Pod manual.
Hubungan Deployment, ReplicaSet, dan Pod
- Deployment → ReplicaSet → Pod.
- ReplicaSet memastikan Pod selalu sesuai jumlah yang ditentukan.
- Jika Pod mati atau dihapus, ReplicaSet akan otomatis membuat Pod baru.
- Bahkan jika kita hanya ingin satu Pod, ReplicaSet tetap bisa menjaga Pod tersebut agar tetap hidup (
replicas: 1).
Behavior Pod di Deployment
- Pod di bawah Deployment bisa bersifat stateless atau stateful, tergantung ada tidaknya volume.
- Tanpa volume: jika Pod mati, Pod baru dibuat, tapi data lama hilang.
- Dengan PersistentVolume: Pod baru tetap bisa mengakses data lama, sehingga aplikasi menjadi stateful.
Operasi penting Deployment
- Create: bisa imperative (
kubectl create deployment) atau declarative (kubectl apply -f).
- Update: rolling update via
kubectl set image atau ubah YAML + kubectl apply.
- Scale: ubah jumlah replicas, bisa imperative (
kubectl scale) atau declarative (ubah YAML).
- Delete: menghapus Deployment otomatis menghapus Pod yang dikelola ReplicaSet.