Panduan Deploy Aplikasi Pertama ke Kubernetes

calendar_today
schedule 3 min read

Panduan Deploy Aplikasi Pertama ke Kubernetes

Deploy aplikasi ke Kubernetes mungkin terdengar ribet, tapi tenang, kita bakal jelasin cara ngedeploy aplikasi pertama kamu ke Kubernetes dengan gampang. Artikel ini bakal guide kamu dari awal banget sampai aplikasi kamu jalan di dalam cluster Kubernetes. Yuk, langsung aja!

1. Persiapan Aplikasi

Pertama, kamu harus punya aplikasi yang siap untuk dideploy. Misalnya, kita punya aplikasi web sederhana yang udah kita dockerize jadi image Docker. Pastiin image Docker kamu udah di-push ke registry seperti Docker Hub atau Google Container Registry (GCR), biar Kubernetes bisa akses image tersebut.

code
FROM node:14-alpine
WORKDIR /app
COPY package.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]

Build dan push image ke registry:

code
docker build -t <username>/myapp:v1 .
docker push <username>/myapp:v1

2. Persiapan Cluster Kubernetes

Kalau belum punya cluster Kubernetes, kamu bisa setup cluster di lokal pakai Minikube atau KinD (Kubernetes in Docker) untuk testing. Atau kamu bisa pake cloud provider seperti GKE, EKS, atau AKS.

Misal, kamu pake Minikube buat testing lokal:

code
minikube start --driver=<driver>

Pastiin kubectl dan Minikube udah terinstall dan terkoneksi ke cluster:

code
kubectl get nodes

3. Buat Deployment YAML

Bikin file YAML buat Deployment. Deployment bakal manage Pod dan ReplicaSet dan pastiin aplikasi kamu running dengan jumlah replika yang diinginkan.

Buat file myapp-deployment.yaml:

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

Ganti <username>/myapp:v1 dengan image kamu yang udah di-push ke registry.

4. Deploy Aplikasi ke Kubernetes

Terapkan Deployment ke cluster Kubernetes:

code
kubectl apply -f myapp-deployment.yaml

Cek Deployment dengan:

code
kubectl get deployments
kubectl get pods

5. Buat Service

Aplikasi kamu sekarang jalan di dalam Pod, tapi belum bisa diakses dari luar cluster. Supaya bisa diakses, kita butuh Service dengan tipe LoadBalancer atau NodePort (tergantung lingkungan). Misal, kita pake NodePort buat testing lokal.

Buat file myapp-service.yaml:

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

Terapkan Service ke cluster:

code
kubectl apply -f myapp-service.yaml

Cek Service dengan:

code
kubectl get services

Kamu bakal dapetin port NodePort (misal: 30080) dan bisa akses aplikasi kamu pake Minikube IP atau localhost dengan port tersebut.

6. Akses Aplikasi

Kalau pake Minikube, kamu bisa dapetin URL akses dengan:

code
minikube service myapp-service --url

Terus buka URL yang muncul di browser. Kalau semua lancar, aplikasi kamu bakal muncul di browser!

7. Update Aplikasi

Kalau kamu mau update aplikasi, kamu tinggal build image Docker baru (misal v2), push ke registry, lalu update Deployment:

code
kubectl set image deployment/myapp-deployment myapp=<username>/myapp:v2

Kubernetes bakal rolling update replika aplikasi ke versi baru.

8. Monitoring dan Logging

Pastiin kamu punya monitoring dan logging yang oke. Kamu bisa pake tool seperti Prometheus untuk monitoring dan ELK Stack untuk logging. Di Kubernetes, kamu bisa pake kubectl logs <pod> buat ngecek log aplikasi kamu:

code
kubectl logs <pod-name>

9. Scaling Aplikasi

Kamu bisa nambah jumlah replika aplikasi dengan:

code
kubectl scale deployment myapp-deployment --replicas=5

Ini bakal nambah jumlah Pod yang running jadi 5.

10. Clean Up

Kalau udah selesai, jangan lupa bersihin Deployment dan Service ya:

code
kubectl delete -f myapp-deployment.yaml
kubectl delete -f myapp-service.yaml

Atau kalau mau hapus semua resources secara cepat:

code
kubectl delete all --all

Itu dia, mudah banget kan ngedeploy aplikasi pertama ke Kubernetes! Jangan lupa eksplorasi fitur lain Kubernetes seperti Ingress, ConfigMaps, dan lain-lain biar makin jago. Happy deploying!

A

Written by Ariful

Full-stack engineer obsessed with web performance.