MetalLB is a Kubernetes-native load balancer for bare-metal clusters. Two cooperating workloads implement the system: a cluster-scoped controller that allocates IP addresses from CRD-defined IPAddressPools and writes Service status updates, and a DaemonSet of speaker pods on each node that announce assigned IPs to the physical network. Announcement is either BGP (via a from-scratch native Go BGP stack, a deprecated FRR sidecar mode, or the newer FRR-K8s API that generates FRRConfiguration CRs) or Layer2 (ARP/NDP responders with memberlist-based fast failover detection and deterministic speaker election). All user configuration flows through CRDs — IPAddressPool, BGPPeer, BGPAdvertisement, L2Advertisement, Community, BFDProfile, and ConfigurationState — validated by admission webhooks, with a configmaptocrs tool migrating legacy ConfigMap configuration to the CRD model. The controller/speaker split, a listener abstraction that delivers config changes to protocol handlers, and a common bgp.Session interface across backends give the architecture a clean, modular shape.