Bagikan :
clip icon

Panduan Lengkap Kubernetes Deployment: Strategi, Contoh, dan Praktik Terbaik

AI Morfo
foto : Morfogenesis Teknologi Indonesia Creative Team
Kubernetes telah menjadi standar de facto dalam mengelola aplikasi berbasis kontainer secara produktif. Namun, bagi banyak tim, proses deployment masih menjadi titik kebingungan tersendiri. Deployment bukan sekadar menjalankan perintah kubectl apply, melainkan keseluruhan alur yang mencakup perencanaan sumber daya, penentuan strategi roll-out, pemantauan kesehatan, serta kebijakan rollback jika terjadi kegagalan. Pada panduan ini, kita akan mempelajari seluk-beluk Kubernetes Deployment, mulai dari konsep dasar hingga pola-pola lanjutan yang dapat langsung diterapkan di klaster production.

1. Deployment, ReplicaSet, dan Pod: Hubungan Ketiganya
Ketika Anda membuat objek Deployment, Kubernetes secara otomatis membuat ReplicaSet baru yang kemudian menjalankan Pod sesuai replica yang diminta. ReplicaSet memastikan jumlah Pod yang berjalan selalu sesuai, sedangkan Deployment mengatur versi image dan strategi pembaruan. Dengan memahami hierarki ini, Anda dapat men-debug masalah dengan lebih cepat, misalnya mengetahui apakah kegagalan terjadi pada tahap ReplicaSet atau Pod.

2. Menyusun Manifest YAML yang Handal
Manifest yang baik memiliki informasi minimal: selector.matchLabels, template.metadata.labels, container.image, dan resource.request. Tambahkan readinessProbe dan livenessProbe agar Service hanya mengalirkan trafik ke Pod yang benar-benar siap. Contoh potongan YAML untuk aplikasi Node.js:
apiVersion: apps/v1
kind: Deployment
metadata: name: nodeapp
spec: replicas: 3
selector: matchLabels: app: nodeapp
template: metadata: labels: app: nodeapp
spec: containers: - name: nodeapp image: ghcr.io/demo/nodeapp:1.0.0 ports: - containerPort: 3000
resources: requests: cpu: 100m memory: 128Mi
readinessProbe: httpGet: path: /health port: 3000 initialDelaySeconds: 5 periodSeconds: 5

3. Strategi Rollout: RollingUpdate vs Recreate
RollingUpdate cocok untuk aplikasi yang mendukung concurrent connection karena Pod lama baru dihentikan setelah Pod baru siap. Recreate lebih sederhana tetapi menyebabkan downtime singkat karena semua Pod lama dihapus sebelum Pod baru dibuat. Atur parameter maxSurge dan maxUnavailable untuk mengontrol kecepatan rollout. Contoh:
strategy: type: RollingUpdate
RollingUpdate: maxSurge: 1 maxUnavailable: 0
Pengaturan di atas menjamin selalu ada tiga replika yang aktif selama proses update.

4. Zero-Downtime Deployment dengan Readiness Gate
Kadang kala Pod sudah Ready menurut kubelet, namun belum siap menerima trafik karena butuh waktu untuk sinkronisasi data atau warming cache. Gunakan readiness gate tambahan agar Pod baru benar-benar siap sebelum dimasukkan ke endpoint Service. Tambahkan label khusus pada Pod, lalu buat controller kecil yang memantau kondisi aplikasi dan mem-patch status readiness gate. Pola ini menurunkan angka 5xx drastis di lingkungan production.

5. Rolling Back dengan Cepat
Kehilangan toleransi kesalahan manusia menjadi biang kegagalan deployment. Kubernetes menyimpan hingga 10 revisi Deployment secara default. Gunakan kubectl rollout history deployment/namadeployment untuk melihat daftar revisi. Jika trafik meningkat tajam atau error rate melonjak, Anda bisa kembali ke revisi sebelumnya lewat kubectl rollout undo deployment/namadeployment --to-revision=2. Selalu sertakan version atau changeme SHA di annotation agar Anda tahu perbedaan antar revisi tanpa menelusuri log Git.

6. Continuous Deployment dan GitOps
Integrasikan pipeline CI/CD Anda—bisa GitLab CI, GitHub Actions, atau Argo CD—untuk menerapkan prinsip GitOps. Setiap kali ada perubahan pada branch main, sistem akan membandingkan state klaster dengan manifest di repositori dan melakukan otomatisasi deployment. Simpan manifest di folder yang terstruktur, misalnya k8s/base, k8s/overlays/production, dan k8s/overlays/staging. Gunakan Kustomize untuk patch image tag agar tidak menulis ulang file penuh tiap kali release.

7. Pemantauan dan Alerting Post-Deployment
Deployment yang berhasil belum tentu berjalan mulus selanjutnya. Gunakan Prometheus untuk mengumpulkan metrik, Grafana untuk visualisasi, dan Alertmanager untuk mengirim notifikasi ke Slack atau Microsoft Teams. Metrik penting: kube_deployment_status_replicas_unavailable, container_cpu_usage_seconds_total, dan container_memory_working_set_bytes. Atur SLO keberhasilan rollout, misalnya 99.9 % Pod harus Ready dalam lima menit setelah image baru diterapkan. Jika SLO tidak tercapai, pipeline dapat memicu rollback otomatis.

Kesimpulannya, penerapan Deployment di Kubernetes yang andal memerlukan kombinasi manifest yang tepat, strategi rollout yang sesuai kebutuhan bisnis, serta kesiapan tim untuk memantau dan melakukan rollback cepat. Mulai dari menyusun YAML sederhana, memilih strategi RollingUpdate, memanfaatkan readiness gate, hingga mengintegrasikan prinsip GitOps, semua langkah tersebut saling berkesinambungan untuk meminimalkan risiko kegagalan di production. Dengan menguasai panduan ini, Anda siap memimpin tim menuju proses deployment yang lebih cepat, aman, dan tentunya tanpa downtime yang tidak terencana.

Ingin fokus pada pengembangan fitur tanpa pusing mengelola infrastruktur Kubernetes? Morfotech.id siap membantu. Kami adalah developer aplikasi berpengalaman yang juga menyediakan jasa deployment, otomasi CI/CD, serta pemantauan 24/7 untuk aplikasi cloud-native. Diskusikan kebutuhan Anda melalui WhatsApp +62 811-2288-8001 atau kunjungi https://morfotech.id untuk melihat portofolio dan layanan kami lainnya.
Sumber:
AI Morfotech - Morfogenesis Teknologi Indonesia AI Team
Selasa, Oktober 7, 2025 1:03 AM
Logo Mogi