MetalLB 0.16 dirilis Mei 2026 sebagai stable release, sementara v0.15 resmi end of life. Episode ini membahas penyempurnaan CRD v1beta2, manajemen IP pool dan observability, perbaikan BGP dan Layer 2, serta pentingnya upgrade ke v0.16.x.

Teknologi yang tidak berkembang akan tertinggal — dan MetalLB jelas berkembang. MetalLB 0.16 dirilis pada Mei 2026, menandai stable release terbaru setelah v0.15 yang resmi memasuki masa end of life di bulan yang sama. Episode 20 membahas apa saja yang berubah di seri 0.16, mengapa upgrade penting, dan bagaimana melakukannya dengan aman.
Kalau kalian baru memulai dengan MetalLB sekarang, kalian langsung memakai v0.16.1 — versi terbaru yang stabil. Kalau kalian masih di v0.15 atau lebih tua, episode ini adalah alasan sekaligus panduan untuk segera melakukan upgrade.
Seri 0.16 melanjutkan pematangan CRD v1beta2 yang diperkenalkan sejak v0.14. Versi ini membawa perbaikan konsistensi dan kejelasan pada field-field CRD, terutama untuk IPAddressPool yang kini menggunakan metallb.io/v1beta2 sebagai versi utamanya. Perubahan utamanya lebih pada kematangan daripada fitur baru yang revolusioner — hal yang wajar untuk release yang fokus pada stabilitas.
Cek versi CRD yang aktif di cluster kalian:
kubectl get crd ipaddresspools.metallb.io -o jsonpath='{.spec.versions[*].name}'
kubectl get crd | grep metallb.iokubectl get crd ipaddresspools.metallb.io -o jsonpath='{.spec.versions[*].name}' menampilkan versi yang dilayani oleh CRD — seharusnya ada v1beta1 dan v1beta2. Kolom versi pada output kubectl get crd | grep metallb.io menegaskan versi mana yang menjadi storage.
Manajemen pool di v0.16 difokuskan pada stabilitas alokasi. Perilaku autoAssign dan avoidBuggyIPs tetap dipertahankan dan diuji lebih menyeluruh, sehingga alokasi IP antar banyak pool lebih dapat diprediksi. Untuk pengguna, tidak ada perubahan cara kerja yang wajib dipelajari ulang — justru ini kabar baiknya.
Seri 0.16 memperbaiki observability: metric Prometheus lebih konsisten penamaannya, dan status pada resource seperti IPAddressPool dan BGPPeer lebih informatif. Ini mempermudah pemantauan yang sudah kita bangun di episode 11.
kubectl get ipaddresspool
kubectl get bgppeerkubectl get ipaddresspool dan kubectl get bgppeer menampilkan status resource dengan lebih jelas. Pemanfaatan metric untuk alert tetap mengikuti pola yang sama seperti episode 11 dan 17.
Di mode BGP, v0.16 menghadirkan perbaikan pada stabilitas sesi dan penanganan kondisi edge — misalnya perilaku yang lebih baik saat peer berubah konfigurasi atau saat node kehilangan konektivitas. Bagi yang memakai FRR sebagai backend BGP (default sejak v0.13), perbaikan ini mengurangi flapping sesi yang tidak diinginkan.
Di mode Layer 2, perbaikan difokuskan pada announcement yang lebih responsif saat terjadi failover dan pengurangan gangguan pada traffic yang sedang berjalan. Pengalaman failover Layer 2 di v0.16 umumnya lebih mulus dibanding versi-versi awal.
Keputusan penting dari rilis ini: v0.15 resmi end of life sejak Mei 2026. Artinya:
Bagi kalian yang masih menjalankan v0.15 atau lebih lama, upgrade bukan lagi pilihan — ini keharusan keamanan.
Sebelum upgrade, pastikan versi yang sedang berjalan di cluster:
kubectl get deployment metallb-controller -n metallb-system -o jsonpath='{.spec.template.spec.containers[0].image}'
kubectl get daemonset metallb-speaker -n metallb-system -o jsonpath='{.spec.template.spec.containers[0].image}'Output kubectl get deployment metallb-controller -n metallb-system -o jsonpath='{.spec.template.spec.containers[0].image}' menunjukkan image tag controller saat ini — misalnya v0.15.0. Jika bukan v0.16.1, saatnya upgrade.
Cara paling aman dan terkontrol adalah melalui Helm:
helm repo update
helm upgrade metallb metallb/metallb --namespace metallb-system --version 0.16.1
kubectl get pods -n metallb-systemhelm upgrade metallb metallb/metallb --version 0.16.1 menerapkan semua perubahan resource sekaligus. Setelah selesai, kubectl get pods -n metallb-system memastikan semua komponen kembali sehat.
Jangan berhenti di pod yang sehat. Verifikasi juga bahwa konfigurasi tetap berfungsi:
kubectl get ipaddresspool
kubectl get l2advertisement
kubectl get bgppeer
kubectl get svc -Akubectl get ipaddresspool, kubectl get l2advertisement, dan kubectl get bgppeer memastikan semua konfigurasi masih terbaca. kubectl get svc -A memastikan IP LoadBalancer yang sudah ada tidak hilang setelah upgrade.
Warning
Jika upgrade gagal di tengah jalan, jangan panik — tetap pada rilis resmi dan gunakan release notes untuk menyelesaikan konflik field. Data IP yang dialokasikan tidak hilang karena alokasi disimpan di status Service, bukan di konfigurasi.
Episode 20 menuntaskan fitur stabil terbaru: MetalLB 0.16 yang dirilis Mei 2026, penyempurnaan CRD v1beta2, manajemen pool dan observability yang lebih baik, perbaikan BGP dan Layer 2, serta urgensi upgrade karena v0.15 sudah end of life.
Inti yang harus dibawa pulang:
Di episode 21 selanjutnya kita akan membahas production-ready architecture — perencanaan pool IP, pemilihan mode L2 versus BGP, integrasi router, high availability, upgrade strategy, pipeline GitOps, observability dengan Prometheus dan dashboard, sizing, serta runbook insiden.