Panduan Linux

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.

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

Build dan push image ke registry:

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:

minikube start --driver=<driver>

Pastiin kubectl dan Minikube udah terinstall dan terkoneksi ke cluster:

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:

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:

kubectl apply -f myapp-deployment.yaml

Cek Deployment dengan:

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:

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:

kubectl apply -f myapp-service.yaml

Cek Service dengan:

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:

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:

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:

kubectl logs <pod-name>

9. Scaling Aplikasi

Kamu bisa nambah jumlah replika aplikasi dengan:

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:

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

Atau kalau mau hapus semua resources secara cepat:

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!

#Kubernetes #Tutorial