Belajar MetalLB - Setup & Installasi
Episode 3 of 23

Belajar MetalLB - Setup & Installasi

Episode ini memandu instalasi MetalLB dengan dua cara: manifest metallb.yaml dan Helm chart. Setelah install, kalian memverifikasi pod controller dan speaker, lalu membuat konfigurasi awal berupa IPAddressPool dan L2Advertisement pertama.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Semua teori di episode 2 sekarang akan kalian buktikan. Episode 3 memandu setup dan instalasi MetalLB secara nyata: memilih antara manifest atau Helm chart, menginstall, memverifikasi bahwa controller dan speaker berjalan, lalu membuat konfigurasi awal berupa IPAddressPool dan advertisement pertama.

Di akhir episode ini, cluster kalian akan memiliki fondasi MetalLB yang berfungsi — siap menerima Service LoadBalancer pertama di episode 7. Instalasi yang benar di sini akan menghindarkan kalian dari segudang masalah aneh di episode-episode berikutnya.

Persiapan Sebelum Install

Memastikan Cluster dan Blok IP Siap

Sebelum menjalankan perintah apapun, ulangi verifikasi dari episode 0:

Verifikasi prasyarat instalasi
kubectl get nodes
kubectl get svc -A

Pastikan semua node Ready dan tidak ada Service yang bentrok. Catat kembali blok IP yang sudah kalian siapkan — dalam contoh series ini kita memakai 192.168.1.200 sampai 192.168.1.250.

Menentukan Cara Install

MetalLB menyediakan dua jalur instalasi resmi:

  • Manifest: file metallb-native.yaml yang bisa di-apply langsung dengan kubectl.
  • Helm chart: chart metallb/metallb yang lebih mudah di-versioning dan di-upgrade.

Keduanya menghasilkan resource yang sama. Pilih sesuai workflow tim kalian; series ini akan menunjukkan keduanya.

Instalasi via Manifest

Download dan Apply Manifest

Jalur manifest paling sederhana. Download file resource dan apply langsung:

Install MetalLB via manifest
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.16.1/config/manifests/metallb-native.yaml

kubectl apply -f terhadap URL manifest resmi akan membuat namespace metallb-system, semua CRD, RBAC, Deployment controller, dan DaemonSet speaker sekaligus. Selalu gunakan tag versi (di sini v0.16.1), bukan cabang main, agar reproducible.

Verifikasi Pod Controller dan Speaker

Tunggu beberapa detik lalu periksa status pod:

Verifikasi pod setelah install
kubectl get pods -n metallb-system
kubectl get deployment -n metallb-system
kubectl get daemonset -n metallb-system

Controller harus menampilkan status Running dengan jumlah ready 1/1 (atau 2/2 jika konfigurasi HA), dan speaker harus Running di setiap node. Jika ada pod yang CrashLoopBackOff, periksa log dengan kubectl logs — episode 19 akan membahas troubleshooting semacam ini.

Instalasi via Helm

Tambahkan Repository dan Install

Tim yang sudah memakai Helm biasanya memilih jalur ini:

Install MetalLB via Helm chart
helm repo add metallb https://metallb.github.io/metallb
helm repo update
helm install metallb metallb/metallb --namespace metallb-system --create-namespace

helm repo add metallb https://metallb.github.io/metallb mendaftarkan repository resmi MetalLB, dan perintah helm install membuat release bernama metallb di namespace metallb-system. Verifikasi dengan helm list -n metallb-system dan kubectl get pods -n metallb-system.

Keuntungan Helm

Chart MetalLB menyediakan nilai (values) untuk menyesuaikan image, replica controller, resource limits, dan tolerations. Upgrade versi juga jauh lebih terkontrol:

Upgrade MetalLB ke versi terbaru
helm upgrade metallb metallb/metallb --namespace metallb-system --version 0.16.1

helm upgrade metallb metallb/metallb --version 0.16.1 akan menampilkan perbandingan perubahan sebelum mengeksekusi, sehingga kalian tahu persis apa yang berubah.

Konfigurasi Awal: IPAddressPool dan Advertisement

Membuat Pool IP Pertama

Instalasi MetalLB belum berarti apapun tanpa konfigurasi. Resource pertama yang harus dibuat adalah IPAddressPool:

IPAddressPool pertama
apiVersion: metallb.io/v1beta2
kind: IPAddressPool
metadata:
  name: first-pool
  namespace: metallb-system
spec:
  addresses:
    - 192.168.1.200-192.168.1.250

Membuat Advertisement Pertama (Layer 2)

Tanpa advertisement, IP yang dialokasikan tidak akan di-announce ke jaringan. Untuk mode Layer 2, buat L2Advertisement yang mereferensikan pool tersebut:

L2Advertisement pertama
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: first-advert
  namespace: metallb-system
spec:
  ipAddressPools:
    - first-pool

Apply kedua resource dan verifikasi:

Apply dan verifikasi konfigurasi awal
kubectl apply -f ipaddresspool.yaml
kubectl apply -f l2advertisement.yaml
kubectl get ipaddresspool
kubectl get l2advertisement

kubectl get ipaddresspool harus menampilkan pool dengan status siap, dan kubectl get l2advertisement menampilkan advertisement yang mereferensikan pool tersebut. Pada titik ini, MetalLB siap digunakan.

Tip

Urutan membuat pool dulu baru advertisement adalah kebiasaan yang baik, tetapi sebenarnya tidak wajib — advertisement bisa mereferensikan pool yang belum ada karena validasi MetalLB memungkinkan referensi ke depan.

Verifikasi Instalasi Secara Keseluruhan

Sebelum melanjutkan ke episode berikutnya, jalankan verifikasi menyeluruh:

Verifikasi menyeluruh instalasi MetalLB
kubectl get pods -n metallb-system
kubectl get crd | grep metallb
kubectl get ipaddresspool
kubectl get l2advertisement

Pastikan pod sehat, semua CRD terdaftar, dan pool serta advertisement dalam status yang benar. Jika semua hijau, instalasi kalian sudah benar dan siap digunakan untuk episode 4.

Penutup

Episode 3 membawa kalian dari teori ke praktik: MetalLB sekarang terinstall di cluster, controller dan speaker berjalan, dan konfigurasi awal berupa IPAddressPool dan L2Advertisement sudah diterapkan.

Inti yang harus dibawa pulang:

  • Instalasi bisa dilakukan via manifest metallb-native.yaml atau Helm chart metallb/metallb.
  • Controller adalah Deployment; speaker adalah DaemonSet.
  • Verifikasi selalu dimulai dari kubectl get pods -n metallb-system.
  • IPAddressPool mendefinisikan IP yang boleh dipakai; L2Advertisement mengaktifkan announcement Layer 2.
  • Blok IP harus cocok dengan jaringan fisik kalian agar traffic bisa mencapai Service.

Di episode 4 selanjutnya kita akan membedah IPAddressPool & IPAM — bagaimana pool didefinisikan dalam bentuk range dan CIDR, peran autoAssign dan avoidBuggyIPs, cara controller memilih IP, hingga perilaku pembebasan IP saat Service dihapus. Konfigurasi pool yang tepat adalah fondasi dari semua yang akan kalian bangun berikutnya.

Belajar MetalLB - Setup & Installasi | Belajar MetalLB