# metallb/metallb

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/metallb-metallb).**

8,064 stars · 1,021 forks · Go · apache-2.0

## Links

- GitHub: https://github.com/metallb/metallb
- Homepage: https://metallb.io
- awesome-repositories: https://awesome-repositories.com/repository/metallb-metallb.md

## Topics

`arp` `bare-metal` `bgp` `frr` `hacktoberfest` `keepalived` `kubernetes` `load-balancer` `vrrp`

## Description

MetalLB is a Kubernetes load balancer implementation and IP address manager designed for bare metal clusters. It functions as a networking tool that provides external connectivity and traffic distribution by assigning external IPv4 and IPv6 addresses to services.

The project differentiates itself by providing two distinct advertisement modes. It can operate as a BGP routing controller, using the Border Gateway Protocol to announce service IPs to external routers with support for bidirectional forwarding detection and VRF-aware routing. Alternatively, it can act as a Layer 2 network advertiser, responding to ARP and NDP requests to route traffic without requiring router configuration.

The system covers comprehensive IP address management, including the definition of CIDR-based pools, static and dynamic allocation policies, and dual-stack networking support. It also includes capabilities for monitoring network telemetry, managing service failover, and integrating with various Kubernetes network plugins.

Installation and lifecycle management are supported through a Kubernetes Operator, with specific deployment adaptations available for OpenShift and OpenStack environments.

## Tags

### Networking & Communication

- [Border Gateway Protocol Configurations](https://awesome-repositories.com/f/networking-communication/network-infrastructure-routing/network-routing-traffic-management/network-routing-protocols/border-gateway-protocol-configurations.md) — Uses the Border Gateway Protocol to announce service IP addresses to external network routers.
- [ARP and NDP Responders](https://awesome-repositories.com/f/networking-communication/arp-and-ndp-responders.md) — Advertises IP addresses to a local network by responding to ARP and NDP requests. ([source](https://metallb.io/concepts/layer2/))
- [IPv6 Prefix Advertisements](https://awesome-repositories.com/f/networking-communication/communication-protocols-architectures/communication-protocols-standards/network-protocols/ipv6-network-stacks/ipv6-prefix-advertisements.md) — Broadcasts IPv6 network prefixes to neighboring routers to enable external connectivity for services. ([source](https://metallb.io))
- [Layer 2 IP Advertisements](https://awesome-repositories.com/f/networking-communication/domain-to-ip-mappings/layer-2-ip-advertisements.md) — Responds to local network requests to route traffic to services without requiring router configuration. ([source](https://metallb.io/apis/))
- [IP Address Management Systems](https://awesome-repositories.com/f/networking-communication/ip-address-management-systems.md) — Defines and allocates pools of IPv4 and IPv6 addresses to Kubernetes services.
- [Layer 2 Network Advertisers](https://awesome-repositories.com/f/networking-communication/layer-2-network-advertisers.md) — Responds to ARP and NDP requests on a local network to route traffic without router configuration.
- [Load Balancers](https://awesome-repositories.com/f/networking-communication/load-balancers.md) — Assigns external IP addresses to services in bare metal Kubernetes clusters to distribute network traffic.
- [Load Balancer IP Address Management](https://awesome-repositories.com/f/networking-communication/network-infrastructure-routing/network-infrastructure-configuration/network-infrastructure/load-balancer-ip-address-management.md) — Automates the allocation and announcement of IPv4 and IPv6 addresses for load balancer services.
- [BGP Peer Configuration](https://awesome-repositories.com/f/networking-communication/network-infrastructure-routing/network-routing-traffic-management/bgp-and-spine-leaf-architectures/bgp-peer-configuration.md) — Sets up connections with external routers to exchange routing information for network load balancing. ([source](https://metallb.io/apis/))
- [Network Routing Protocols](https://awesome-repositories.com/f/networking-communication/network-infrastructure-routing/network-routing-traffic-management/network-routing-protocols.md) — Broadcasts the location of assigned IP addresses to the external network using routing protocols. ([source](https://metallb.io/concepts/))
- [Service IP Advertisements](https://awesome-repositories.com/f/networking-communication/network-infrastructure-routing/network-routing-traffic-management/network-routing-protocols/border-gateway-protocol-configurations/service-ip-advertisements.md) — Broadcasts service IP addresses to external routers using the Border Gateway Protocol to direct traffic.
- [Service Exposure](https://awesome-repositories.com/f/networking-communication/service-exposure.md) — Assigns external IP addresses to make internal cluster services reachable from outside networks. ([source](https://metallb.io/usage/))
- [BGP Route Distribution](https://awesome-repositories.com/f/networking-communication/traffic-routing/bgp-route-distribution.md) — Distributes network routes to external routers using the Border Gateway Protocol to direct traffic to services. ([source](https://metallb.io/configuration/calico/))
- [Traffic Distribution](https://awesome-repositories.com/f/networking-communication/traffic-shaping/scaling/traffic-distribution.md) — Establishes peering sessions with routers to distribute incoming traffic across multiple nodes. ([source](https://metallb.io/concepts/))
- [BFD-BGP Integration](https://awesome-repositories.com/f/networking-communication/bfd-bgp-integration.md) — Links routing sessions with bidirectional forwarding detection to trigger rapid route convergence upon failure. ([source](https://metallb.io))
- [BGP Autonomous System Overrides](https://awesome-repositories.com/f/networking-communication/bgp-autonomous-system-overrides.md) — Presents a specific autonomous system number to a peer for multi-tenant network scenarios. ([source](https://metallb.io/configuration/_advanced_bgp_configuration/))
- [Bidirectional Forwarding Detection](https://awesome-repositories.com/f/networking-communication/bidirectional-forwarding-detection.md) — Uses bidirectional forwarding detection to identify path failures faster than standard BGP keep-alive timers. ([source](https://metallb.io/configuration/))
- [Service Registration and Failover](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/distributed-systems-coordination/distributed-systems-infrastructure/distributed-coordination-services/service-registration-and-failover.md) — Detects node failures and reassigns IP addresses to healthy nodes to maintain service availability. ([source](https://metallb.io/concepts/layer2/))
- [Next-Hop Node Selection](https://awesome-repositories.com/f/networking-communication/exit-node-routing/next-hop-node-selection.md) — Restricts which nodes act as next-hops for specific IP pools using node selectors. ([source](https://metallb.io/configuration/_advanced_bgp_configuration/))
- [Priority-Based Allocation Policies](https://awesome-repositories.com/f/networking-communication/ip-address-management-systems/priority-based-allocation-policies.md) — Controls how IP addresses are assigned using priority levels and selectors to restrict specific pools. ([source](https://metallb.io/configuration/_advanced_ipaddresspool_configuration/))
- [Shared IP Address Assignments](https://awesome-repositories.com/f/networking-communication/ip-address-management-systems/shared-ip-address-assignments.md) — Colocates multiple services on a single IP address using shared keys and distinct ports. ([source](https://metallb.io/usage/))
- [Static IP Enforcement](https://awesome-repositories.com/f/networking-communication/ip-address-management-systems/static-ip-enforcement.md) — Assigns fixed, predetermined IP addresses to specific services to ensure DNS consistency. ([source](https://metallb.io/usage/example/))
- [Static IP Requests](https://awesome-repositories.com/f/networking-communication/ip-address-management-systems/static-ip-requests.md) — Allows services to request a precise IP address or pool to ensure consistent external routing. ([source](https://metallb.io/usage/))
- [BGP Session Management](https://awesome-repositories.com/f/networking-communication/network-infrastructure-routing/network-routing-traffic-management/bgp-and-spine-leaf-architectures/bgp-session-management.md) — Handles session lifecycles and pairs them with failure detection to ensure high availability of routing. ([source](https://metallb.io/))
- [Multi-Protocol Routing](https://awesome-repositories.com/f/networking-communication/network-transport-protocols/multi-protocol-routing.md) — Configures sessions with support for multi-protocol routing to ensure stable and flexible network connectivity. ([source](https://metallb.io/concepts/bgp/))
- [Node Peering Restrictions](https://awesome-repositories.com/f/networking-communication/peer-connection-policies/node-peering-restrictions.md) — Limits which nodes establish connections with specific peers using label selectors. ([source](https://metallb.io/configuration/_advanced_bgp_configuration/))
- [Peer-Based Advertisement Limits](https://awesome-repositories.com/f/networking-communication/peer-to-peer-optimization-tools/peer-based-advertisement-limits.md) — Constrains the advertisement of specific IP pools to a designated subset of BGP peers. ([source](https://metallb.io/configuration/_advanced_bgp_configuration/))
- [BGP Advertisement Policies](https://awesome-repositories.com/f/networking-communication/proxy-routing-services/service-specific-routing-rules/bgp-advertisement-policies.md) — Assigns different advertisement attributes to specific services based on label selectors. ([source](https://metallb.io/configuration/_advanced_bgp_configuration/))
- [Traffic Routing Controllers](https://awesome-repositories.com/f/networking-communication/traffic-routing-controllers.md) — Implements announcement modes based on traffic policies to determine how external requests reach pods. ([source](https://metallb.io/usage/))
- [Route Attribute Management](https://awesome-repositories.com/f/networking-communication/traffic-routing-controllers/route-attribute-management.md) — Adjusts routing attributes to manage how address pools are advertised across diverse network topologies. ([source](https://metallb.io/usage/example/))
- [VRF Routing Support](https://awesome-repositories.com/f/networking-communication/vrf-routing-support.md) — Establishes routing sessions using interfaces assigned to a virtual routing and forwarding table. ([source](https://metallb.io/configuration/_advanced_bgp_configuration/))

### Part of an Awesome List

- [IP Address Management](https://awesome-repositories.com/f/awesome-lists/data/ip-address-management.md) — Establishes peering sessions with routers to announce external IP addresses and distribute incoming traffic. ([source](https://metallb.io/concepts/bgp/))
- [BGP IP Advertisements](https://awesome-repositories.com/f/awesome-lists/data/ip-address-management/bgp-ip-advertisements.md) — Broadcasts IP addresses from selected pools to network peers using the Border Gateway Protocol. ([source](https://metallb.io/apis/))

### DevOps & Infrastructure

- [Dual-Stack Networking](https://awesome-repositories.com/f/devops-infrastructure/container-orchestration/networking/dual-stack-networking.md) — Implements simultaneous support for IPv4 and IPv6 addressing within Kubernetes cluster networking. ([source](https://metallb.io/configuration/_advanced_ipaddresspool_configuration/))
- [Bare Metal Environments](https://awesome-repositories.com/f/devops-infrastructure/infrastructure/private-enterprise-management/virtualization-bare-metal/bare-metal-environments.md) — Provides external connectivity and traffic distribution for Kubernetes clusters running on physical hardware.
- [Bare Metal Address Advertisement](https://awesome-repositories.com/f/devops-infrastructure/infrastructure/private-enterprise-management/virtualization-bare-metal/bare-metal-environments/bare-metal-address-advertisement.md) — Uses routing protocols to announce service addresses specifically in bare metal environments. ([source](https://metallb.io/))
- [Operator-Based Lifecycles](https://awesome-repositories.com/f/devops-infrastructure/deployment-lifecycle-managers/operator-based-lifecycles.md) — Simplifies installation and lifecycle management by using custom resource definitions via a Kubernetes Operator. ([source](https://metallb.io/installation/))
- [Resource Controllers](https://awesome-repositories.com/f/devops-infrastructure/kubernetes-cluster-management/resource-controllers.md) — Uses custom controllers to synchronize desired network state from Kubernetes API objects to runtime configuration.
- [Kubernetes Network Operators](https://awesome-repositories.com/f/devops-infrastructure/kubernetes-network-operators.md) — Connects with standard CNI network plugins to automate service exposure and connectivity. ([source](https://metallb.io/installation/network-addons/))

### Operating Systems & Systems Programming

- [Dynamic IP Address Allocators](https://awesome-repositories.com/f/operating-systems-systems-programming/dynamic-identity-allocators/dynamic-ip-address-allocators.md) — Automatically allocates available IP addresses from defined ranges to services for dynamic environment assignment. ([source](https://metallb.io/usage/example/))
