Docker menjalankan satu container di satu mesin, sedangkan Kubernetes mengorkestrasi ratusan container di banyak mesin dengan scheduling, self-healing, dan scaling; di episode ini kalian mengenal Pod, Deployment, Service, ConfigMap/Secret, dan Ingress, lalu men-deploy aplikasi pertama ke cluster

Di episode 7 kita membungkus aplikasi menjadi image Docker dan menjalankannya dengan docker run. Sekarang bayangkan skala produksi: bukan satu container, tapi seratus container yang harus jalan di lima belas mesin, dengan request yang naik turun, node yang mati mendadak, dan rilis yang harus berjalan tanpa downtime. docker run tidak cukup — ini masalah yang diselesaikan Kubernetes (K8s), orkestrator container yang menjadi standar de facto industri.
Kubernetes adalah salah satu proyek terbesar di ekosistem CNCF dan hampir selalu menjadi syarat wajib lowongan DevOps Engineer. Di episode ini kalian membangun fondasi: mengenal arsitektur cluster dan objek inti, lalu men-deploy aplikasi nyata. Versi lanjutannya — Helm, RBAC, autoscaling, service mesh — menunggu di episode 13.
Sebuah cluster Kubernetes terdiri dari dua kelompok mesin dengan peran yang sangat berbeda:
Kalian berinteraksi dengan cluster melalui kubectl, yang semua perintahnya menuju API Server. Tidak ada akses langsung ke node.
Sebelum praktik, kenali lima objek yang akan kalian pakai setiap hari:
| Objek | Fungsi |
|---|---|
| Pod | Unit terkecil: satu atau beberapa container yang berbagi network dan storage |
| Deployment | Mengelola sekumpulan replica Pod: rolling update, rollback, self-healing |
| Service | Alamat tetap (virtual IP/DNS) yang meneruskan traffic ke Pod |
| ConfigMap / Secret | Menyimpan konfigurasi dan rahasia secara terpisah dari image |
| Ingress | Gerbang HTTP masuk dari luar cluster menuju Service |
Pola penting yang harus kalian pahami: Deployment → Pod → Service. Deployment membuat Pod; Pod bersifat sementara dan IP-nya bisa berubah; Service menyediakan alamat stabil di depannya.
Mari deploy aplikasi dari episode 7. Mulai dengan mengelompokkan konfigurasi ke ConfigMap:
apiVersion: v1
kind: ConfigMap
metadata:
name: myapp-config
data:
NODE_ENV: production
APP_PORT: "3000"Lalu Deployment yang menjalankan image kita dengan tiga replica:
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
labels:
app: myapp
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: ghcr.io/username/myapp:1.2.0
ports:
- containerPort: 3000
envFrom:
- configMapRef:
name: myapp-configDan Service yang membuat Pod terhubung ke dunia luar dengan alamat stabil:
apiVersion: v1
kind: Service
metadata:
name: myapp
spec:
selector:
app: myapp
ports:
- port: 80
targetPort: 3000
type: ClusterIPTerapkan dan amati:
kubectl apply -f configmap.yaml
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
kubectl get pods
kubectl get deployments
kubectl get svc myapp
kubectl port-forward svc/myapp 8080:80Untuk menguji self-healing, hapus salah satu Pod dan perhatikan Deployment langsung membuat penggantinya:
kubectl delete pod myapp-<id>
kubectl get pods -wClusterIP hanya bisa diakses dari dalam cluster. Untuk menerima traffic HTTP dari pengguna, pasang Ingress — gerbang L7 yang bisa mengatur path, host, dan TLS:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myapp-ingress
spec:
rules:
- host: app.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: myapp
port:
number: 80kubectl apply -f ingress.yaml
kubectl get ingressTip
Untuk latihan lokal, gunakan kind atau minikube seperti yang kalian siapkan di episode 0. Keduanya menjalankan cluster Kubernetes di dalam container/VM lokal sehingga seluruh praktik di episode ini bisa dicoba tanpa biaya cloud.
latest akan menimbulkan perilaku tidak terduga saat rollout.Inti yang harus dibawa pulang:
kubectl apply membuat state yang diminta; controller di control plane yang mewujudkannya.Di episode 9 selanjutnya kita belajar Infrastructure as Code dengan Terraform — cara memprovision seluruh infrastruktur (VM, network, registry, bahkan cluster Kubernetes itu sendiri) sebagai kode yang bisa direview, diuji, dan di-reproduce. Konsep "desired state" yang kalian lihat di Kubernetes ternyata berulang di Terraform.