MetalLB adalah project open-source LoadBalancer dalam environment Kubernetes. Fungsi utama dari MetalLB adalah load balancing untuk services yang di-host di dalam kluster Kubernetes.
Fungsi Umum MetalLB LoadBalancer
- Memberikan IP Address untuk Services Kubernetes: MetalLB memberikan IP untuk service-service di-host di dalam kluster Kubernetes. Dengan ini, aplikasi yang berjalan di dalam kluster dapat diakses dari luar kluster melalui IP yang dikelola oleh MetalLB.
- Load Balancing Eksternal.
- Mode Layer2 dan Layer3: Mempunyai pilihan mode tergantung pada kebutuhan dan konfigurasi jaringan kluster.
Dokumentasi ini adalah langkah-langkah lanjutan dari Implementasi Kubernetes HA Cluster dengan K3s
- Cara Install Helm Packages Manager Kubernetes.
- Cara Install LoadBalancer dengan MetalLB di Kubernetes. << you are in here
- Cara Install INGRESS Controller dengan NGINX di Kubernetes.
- Cara Setting StorageClass dengan LONGHORN di Kubernetes.
- Cara Deploy Manifest Aplikasi di Kubernetes.
- Cara Setting Let’s Encrypt SSL dengan CERT MANAGER di Kubernetes.
Install MetalLB Menggunakan Helm
Kita bisa lihat dokumentasi sebelumnya yaitu Cara Install Helm Packages Manager Kubernetes untuk dapat mengikuti panduan dalam dokumentasi ini.
Tambahkan repositori MetalLB dengan perintah:
helm repo add metallb https://metallb.github.io/metallb
Untuk cek repositori yang sudah kita tambahkan:
$ helm repo ls
NAME URL
metallb https://metallb.github.io/metallb
jalankan perintah untuk install LoadBalancer MetalLB:
$ helm install metallb metallb/metallb -n metallb-system --create-namespace --debug
Service metallb saya buat di dalam namespace baru yang bernama metallb-system
dengan parameter -n metallb-system --create-namespace
Kita cek status service nya dengan perintah:
$ kubectl -n metallb-system get pods
NAME READY STATUS RESTARTS AGE
metallb-controller-5f9bb77dcd-wtkcq 0/1 ContainerCreating 0 3m22s
metallb-speaker-jsdwx 0/4 Init:0/3 0 3m22s
metallb-speaker-mbk8b 0/4 Init:0/3 0 3m22s
metallb-speaker-pppxr 0/4 Init:0/3 0 3m22s
metallb-speaker-t4cb9 0/4 Init:0/3 0 3m22s
metallb-speaker-wsk66 0/4 Init:0/3 0 3m22s
Terlihat status service/pod MetalLB yang kita install masih dalam proses. Tunggu saja beberapa saat sampai status RUNNING.
IP Address Pool dan L2 Advertisement
Terakhir kita deploy untuk konfigurasi IP Pool dan Advertisement yang dibutuhkan MetalLB untuk expose service pod.
IP Address Pool
Buat file dengan nama ipaddresspool.yaml.
$ nano ipaddresspool.yaml
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: default-pool
namespace: metallb-system
spec:
addresses:
- 192.168.10.0/24
- 192.168.9.1-192.168.9.5
- fc00:f853:0ccd:e799::/124
Sesuaikan dengan namespace
dan pool ip service aplikasi kita pada parameter addresses
. Kemudian deploy dengan perintah :
kubectl apply -f ipaddresspool.yaml
L2 Advertisement
Lanjut buat file dengan nama l2advertisement.yaml
$ nano l2advertisement.yaml
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: default
namespace: metallb-system
spec:
ipAddressPools:
- default-pool
Sesuaikan namespace
dan ipAddressPools
nya, kemudian deploy dengan perintah:
kubectl apply -f l2advertisement.yaml
Sampai tahap ini kita sudah melakukan Install LoadBalancer di Kubernetes menggunakan MetalLB, selanjutkan kita lanjut ke tahap berikut nya yaitu Cara Install INGRESS Controller dengan NGINX.
Official Website : https://metallb.universe.tf