HAProxy mampu mendistribusikan lalu lintas secara efisien ke berbagai Pod atau layanan di dalam cluster kubernetes, sehingga meningkatkan kinerja dan responsivitas aplikasi.
Dengan menggabungkan HAProxy dan Ingress Nginx dapat membangun infrastuktur jaringan yang sangat handal, fleksibel dan aman untuk aplikasi kubernetes. Untuk membuat load balancer dedicated HAProxy, pastikan Anda telah memiliki layanan DKubes.
Berikut adalah beberapa langkah konfigurasi yang dapat dilakukan.
- Pada panduan ini, diberikan contoh jika menggunakan 3 Simpul Pekerja, dengan topologi sebagai berikut.

Topology - Pastikan kubectl telah terinstal dan dapat melakukan query pada klaster kubernetes.
- Untuk melihat klaster kubernetes yang dimiliki, Anda dapat mengetikkan perintah berikut.
Kubectl get nodes

Pengecekan Node Klaster - Selanjutnya, Anda dapat membuat instance DCloud untuk mendapatkan instance yang akan digunakan sebagai HAProxy. Pada panduan ini digunakan contoh menggunakan OS Ubuntu.
- Setelah instance DCloud yang digunakan sebagai HAProxy sudah aktif, Anda dapat mengakses layanan DCloud dan login mengunakan kredensial yang telah dibuat.
- Kemudian lakukan update terlebih dahulu untuk memastikan semua paket dan kemanan sudah ter-update. Berikut perintah untuk melakukan update.
sudo apt update

Update Paket - Setelah terupdate, lakukan pencarian paket yang bernama HAProxy dengan mengetikkan perintah berikut.
apt search haproxy
Pencarian HaProxy - Jika haproxy ada pada pencarian, silakan install haproxy dengan mengetikkan perintah berikut
sudo apt install haproxy - Jika haproxy tidak ada, silakan tambahkan repository dan install paket dengan mengetikkan beberapa perintah berikut
sudo apt install software-properties-common
sudo add-apt-repository ppa:vbernat/haproxy-2.8
sudo apt update
sudo apt install haproxy - Selanjutnya, lakukan penginstallan helm pada klaster kubernetes. Helm merupakan manajemen paket untuk kubernetes untuk menginstall Ingress-Nginx. Untuk menginstall helm dapat mengetikkan beberapa perintah berikut.
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

Install Helm - Selanjutnya, tambahkan repo ingress-nginx dengan mengetikkan beberapa perintah berikut.
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
helm repo list

Install Repo Ingress-nginx - Kemudian, lakukan install ingress-nginx dan ganti IP di bawah ini dengan IP instance DCloud yang digunakan sebagai HAProxy, dapat mengetikkan perintah berikut.
helm install ingress-nginx \ --set controller.kind=DaemonSet \ --set controller.service.externalIPs[0]= 38.47.74.231 \ --namespace ingress-nginx \ --create-namespace \ ingress-nginx/ingress-nginx

Install Ingress-nginx - Jika penginstallan berhasil, Anda akan mendapatkan informasi seperti berikut.

Install Ingress-nginx Berhasil - Berikut adlaah external IP untuk service yang akan diubah ke IP HAProxy.

IP HAProxy - Selanjutnya, Anda dapat mencatat port service ingress nginx controller yang Anda dapatkan karena nantinya akan digunakan pada konfigurasi HAProxy.

IP Port HAProxy - Langkah selanjutnya, lakukan konfigurasi HAProxy dengan mengedit file HAProxy pada instance DCloud yang digunakan sebagai HAProxy dengan mengetikkan perintah berikut.
sudo vim /etc/haproxy/haproxy.cfg - Pada baris akhir saat edit HAProxy, Anda harus menambahkan informasi berikut jika jumlah worker lebih dari satu.

Edit HAProxy Catatan:
– IP 103.179.32.203, 103.179.32.108 & 103.179.32.205 merupakan IP Worker Node.
– Port 32556 & 32158 merupakan port service ingress-nginx-controller. - Setelah diedit, simpan perubahan dan melakukan restart service HAProxy dengan menggunakan perintah berikut.
sudo systemctl restart haproxy.service - Sebelum memulai proses pembuatan Ingress, pastikan terlebih dahulu bahwa domain yang akan digunakan telah tersedia. Dalam panduan ini, akan menggunakan contoh domain haproxy.deploy-ke.cloud
- Langkah selanjutnya, buatlah deployment sederhana yang akan menjalankan aplikasi nginx dengan mengetikkan perintah berikut.
kubectl create deployment nginx-deployment --image=nginx
kubectl expose deployment nginx-deployment --port=80

Kubectl - Agar domain yang telah ditentukan dapat mengarah ke layanan yang dituju, diperlukan konfigurasi untuk memetakan domain tersebut ke salah satu IP dari Load Balancer.

Konfigurasi Domain - Kemudian, silakan Anda buat ingress melalui file YAML. Dalam panduan ini akan menggunakan contoh file ingress.yaml. dengan perintah berikut.
kubectl apply –f ingress.yaml

File Yaml - Untuk melihat daftar ingress yang telah dibuat, Anda dapat mengetikkan perintah berikut.
kubectl get ingress
- Setelah konfigurasi selesai, akan tampil seperti gambar di bawah ini.

- Selanjutnya, silakan akses domain yang telah di konfigurasikan. Jika konfigurasi berhasil, halaman web akan menampilkan pesan “Welcome to Nginx”.

Welcome to Nginx