Belajar Kubernetes ( Mengkonfigurasi Name-based Virtual Hosting dengan Nginx Ingress Controller di Kubernetes)
Dalam Kubernetes, sumber daya Ingress memberikan cara untuk mengekspos rute HTTP dan HTTPS dari luar cluster ke layanan di dalam cluster. Untuk mengelola lalu lintas Ingress dengan efisien, tersedia berbagai Ingress controller, dan salah satu pilihan populer adalah Nginx-based Ingress Controller. Dalam artikel ini, kita akan menjelajahi cara mengkonfigurasi Nginx Ingress Controller untuk Name-based virtual hosting, yang memungkinkan beberapa nama domain dilayani oleh layanan backend yang berbeda.
Persyaratan
Sebelum kita memulai konfigurasi, pastikan Anda memiliki persyaratan berikut:
- Cluster Kubernetes yang berjalan.
- Command line tools
kubectl
terinstal dan dikonfigurasi untuk terhubung ke cluster Anda. - Nginx Ingress Controller sudah diterapkan di cluster Anda. Jika belum terpasang, Anda dapat mengikuti dokumentasi resmi untuk instruksi instalasi.
Mengkonfigurasi Name-based Virtual Hosting dengan Nginx Ingress Controller
Untuk mengkonfigurasi Name-based virtual hosting dengan Nginx Ingress Controller, kita akan menggunakan sumber daya Ingress Kubernetes. Berikut ini contoh konfigurasi YAML:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: www.engineerpalsu.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web-service
port:
number: 80
- host: www.blog.engineerpalsu.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: blog-service
port:
number: 80
Mari kita pahami setiap bagian dari konfigurasi tersebut:
- Bagian
metadata
: Menyediakan informasi metadata untuk sumber daya Ingress, termasuk namanya. - Bagian
annotations
: Memungkinkan Anda menambahkan opsi konfigurasi tambahan. Pada contoh ini, kita menggunakan annotasinginx.ingress.kubernetes.io/rewrite-target
untuk mengubah kembali path URL. - Bagian
spec
: Mendefinisikan keadaan yang diinginkan untuk sumber daya Ingress. - Bagian
rules
: Menentukan aturan rute untuk Ingress. Setiap aturan terdiri dari host dan konfigurasi backend yang sesuai. host
: Menentukan domain atau nama host yang aturannya berlaku.- Bagian
http
: Mendefinisikan konfigurasi rute HTTP untuk host tersebut. - Bagian
paths
: Menentukan aturan rute berdasarkan path untuk host tersebut. path
: Menentukan path URL yang harus cocok dengan aturan ini.pathType
: Menentukan jenis pencocokan yang digunakan untuk path. Pada contoh ini, kami menggunakan tipePrefix
untuk mencocokkan semua path yang memiliki awalan yang diberikan.- Bagian
backend
: Menentukan konfigurasi backend untuk path yang cocok. - Bagian
service
: Menentukan Service Kubernetes yang harus menerima lalu lintas untuk path yang cocok. name
: Menentukan nama Service.port
: Menentukan port Service yang akan menerima lalu lintas.
Menerapkan Konfigurasi
Untuk menerapkan konfigurasi Ingress, ikuti langkah-langkah berikut:
- Simpan konfigurasi YAML di atas dalam sebuah file, misalnya
my-ingress.yaml
. - Buka terminal dan navigasikan ke direktori di mana Anda menyimpan file YAML tersebut.
- Jalankan
kubectl apply -f my-ingress.yaml
.