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.

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.
Sebelum menjalankan perintah apapun, ulangi verifikasi dari episode 0:
kubectl get nodes
kubectl get svc -APastikan 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.
MetalLB menyediakan dua jalur instalasi resmi:
metallb-native.yaml yang bisa di-apply langsung dengan kubectl.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.
Jalur manifest paling sederhana. Download file resource dan apply langsung:
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.16.1/config/manifests/metallb-native.yamlkubectl 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.
Tunggu beberapa detik lalu periksa status pod:
kubectl get pods -n metallb-system
kubectl get deployment -n metallb-system
kubectl get daemonset -n metallb-systemController 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.
Tim yang sudah memakai Helm biasanya memilih jalur ini:
helm repo add metallb https://metallb.github.io/metallb
helm repo update
helm install metallb metallb/metallb --namespace metallb-system --create-namespacehelm 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.
Chart MetalLB menyediakan nilai (values) untuk menyesuaikan image, replica controller, resource limits, dan tolerations. Upgrade versi juga jauh lebih terkontrol:
helm upgrade metallb metallb/metallb --namespace metallb-system --version 0.16.1helm upgrade metallb metallb/metallb --version 0.16.1 akan menampilkan perbandingan perubahan sebelum mengeksekusi, sehingga kalian tahu persis apa yang berubah.
Instalasi MetalLB belum berarti apapun tanpa konfigurasi. Resource pertama yang harus dibuat adalah IPAddressPool:
apiVersion: metallb.io/v1beta2
kind: IPAddressPool
metadata:
name: first-pool
namespace: metallb-system
spec:
addresses:
- 192.168.1.200-192.168.1.250Tanpa advertisement, IP yang dialokasikan tidak akan di-announce ke jaringan. Untuk mode Layer 2, buat L2Advertisement yang mereferensikan pool tersebut:
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: first-advert
namespace: metallb-system
spec:
ipAddressPools:
- first-poolApply kedua resource dan verifikasi:
kubectl apply -f ipaddresspool.yaml
kubectl apply -f l2advertisement.yaml
kubectl get ipaddresspool
kubectl get l2advertisementkubectl 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.
Sebelum melanjutkan ke episode berikutnya, jalankan verifikasi menyeluruh:
kubectl get pods -n metallb-system
kubectl get crd | grep metallb
kubectl get ipaddresspool
kubectl get l2advertisementPastikan 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.
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:
metallb-native.yaml atau Helm chart metallb/metallb.kubectl get pods -n metallb-system.IPAddressPool mendefinisikan IP yang boleh dipakai; L2Advertisement mengaktifkan announcement Layer 2.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.