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!