☸️ Orchestration dengan Kubernetes

Level: Intermediate

Kubernetes adalah platform open-source untuk mengelola container dalam skala besar. Ia mengatur deployment, scaling, dan manajemen container secara otomatis. Bayangkan Kubernetes seperti dirigen orkestra: setiap container adalah pemain musik, dan Kubernetes memastikan semuanya bermain harmonis sesuai partitur.

📖 Konsep Utama Kubernetes

⚙️ Workflow Kubernetes

  1. Developer menulis file manifest (YAML) untuk mendefinisikan pod/deployment.
  2. Kubernetes API menerima definisi tersebut.
  3. Scheduler menempatkan pod ke node yang tersedia.
  4. Kubelet di node menjalankan container sesuai instruksi.
  5. Service mengatur akses & load balancing.

🔹 Contoh Deployment YAML

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myuser/myapp:latest
        ports:
        - containerPort: 3000

🔹 Contoh Service YAML

apiVersion: v1
kind: Service
metadata:
  name: myapp-service
spec:
  selector:
    app: myapp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 3000
  type: LoadBalancer

🛠️ Praktik Kecil

Coba jalankan aplikasi sederhana di Kubernetes (minikube):

  1. Install kubectl dan minikube.
  2. Jalankan cluster lokal: minikube start.
  3. Deploy aplikasi dengan file YAML di atas: kubectl apply -f deployment.yaml.
  4. Expose service: kubectl apply -f service.yaml.
  5. Akses aplikasi melalui URL yang diberikan minikube.

🎮 Mini Challenge

Buat aplikasi sederhana (misalnya API Node.js) lalu:

Tugas tambahan: Implementasikan Horizontal Pod Autoscaler (HPA) untuk menambah pod otomatis saat beban CPU tinggi.