Konfigurasi Ingress Controller pada Kubernetes Cluster
Halo guys! Hari ini kita bakal bahas tentang konfigurasi Ingress Controller di Kubernetes Cluster. Pasti kalian udah nggak asing lagi dong sama Kubernetes, yang jadi alat andalan buat manage aplikasi di lingkungan cloud. Nah, Ingress Controller ini punya peran penting buat nge-“routing” traffic dari luar ke dalam cluster. Yuk, kita gali lebih dalam!
Apa itu Ingress Controller?
Jadi, Ingress Controller adalah sebuah komponen yang bertugas mengatur akses ke layanan dalam Kubernetes cluster. Biasanya, kita butuh ini buat ngehandle request HTTP/HTTPS yang masuk dari luar ke service yang ada di dalam cluster. Pake Ingress Controller, kita bisa ngedefine aturan routing (disebut Ingress Resource) buat ngearahin traffic sesuai path atau domain.
Kenapa Butuh Ingress Controller?
Kalian pasti nanya-nanya, “Kenapa sih nggak pake Service aja langsung?” Nah, kalau pake Service (kaya NodePort atau LoadBalancer) memang bisa, tapi kurang fleksibel kalo butuh routing yang lebih kompleks. Misalnya, kita punya dua aplikasi, dan ingin request ke /app1
diarahin ke aplikasi satu, dan /app2
ke aplikasi dua. Nah, itu bisa banget pake Ingress.
Pilih-Pilih Ingress Controller
Ada beberapa pilihan Ingress Controller yang bisa dipake:
- Nginx Ingress Controller: Ini yang paling populer. Pakenya Nginx sebagai reverse proxy.
- Traefik: Juga keren, fiturnya banyak dan mudah dikonfigurasi.
- HAProxy: Buat yang suka performa tinggi dan stabil.
- Istio Ingress: Kalau udah pake service mesh Istio, bisa dipake juga nih.
Di artikel ini, kita bakal contohin pake Nginx Ingress Controller, karena banyak dipake dan mudah di-setup.
Step-by-Step Konfigurasi Nginx Ingress Controller
Oke, kita mulai aja step by step-nya. Pastiin kalian udah punya Kubernetes cluster ya! Kalo belum, bisa bikin dulu pake minikube atau cloud provider favorit kalian.
1. Install Nginx Ingress Controller
Pertama, kita install dulu Nginx Ingress Controller-nya. Caranya gampang, tinggal apply manifest dari repositori resmi Nginx Ingress. Bisa pake perintah:
kubectl apply -f <https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.0.4/deploy/static/provider/cloud/deploy.yaml>
Perhatiin, versinya bisa berubah, jadi cek dulu di dokumentasi resminya ya!
2. Verifikasi Instalasi
Setelah di-install, kita liat dulu apa berhasil atau nggak. Cek pake perintah:
kubectl get pods -n ingress-nginx
Kalo keliatan pod-nya Running
, berarti sukses. Kalo nggak, mungkin ada masalah di cluster atau konfigurasinya.
3. Buat Ingress Resource
Nah, sekarang kita buat aturan routingnya. Misalnya, ada dua aplikasi: myapp1
dan myapp2
yang ter-expose lewat service dengan nama yang sama. Kita pake host myapp.example.com
, dan /app1
diarahin ke myapp1
, /app2
ke myapp2
.
Buat file YAML (misalnya ingress.yaml
) dengan isi:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: myapp.example.com
http:
paths:
- path: /app1
pathType: Prefix
backend:
service:
name: myapp1
port:
number: 80
- path: /app2
pathType: Prefix
backend:
service:
name: myapp2
port:
number: 80
Terus apply pake kubectl apply -f ingress.yaml
.
4. Testing Ingress
Untuk testing, kita bisa pake curl
atau nambahin entry di /etc/hosts
biar domain myapp.example.com
ngarah ke IP Ingress Controller. Dapetin IP-nya pake:
kubectl get services -n ingress-nginx
Liat di bagian EXTERNAL-IP
dari service ingress-nginx-controller
. Terus, akses pake curl:
curl <http://myapp.example.com/app1>
Kalo konfigurasi bener, harusnya bisa akses ke app1.
Tips & Trik
- Gunakan Anotasi: Nginx Ingress punya banyak fitur lewat anotasi (annotations). Misalnya, buat rewrite path, SSL termination, atau bahkan rate limiting. Cek dokumentasi Nginx Ingress biar lebih lengkap.
- HTTPS: Jangan lupa buat enable HTTPS! Bisa pake Let’s Encrypt atau SSL certificate sendiri. Pake
kubernetes.io/tls
di Ingress Resource. - Monitoring: Monitor akses ke Ingress pake tools kaya Prometheus atau ELK stack. Penting buat tau performa sama troubleshooting.