Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions docs/baremetal/kubernetes/metal-loadbalancer-controller.md
Original file line number Diff line number Diff line change
@@ -1 +1,24 @@
# Metal Loadbalancer Controller

The [metal-loadbalancer-controller](https://github.com/ironcore-dev/metal-load-balancer-controller) is responsible
for managing the lifecycle of `Services` of type `LoadBalancer` in a Kubernetes cluster running on bare metal servers.
The project consists of two main components:
- **Controller**: The main component that watches for changes in `Service` resources and manages the lifecycle of load balancers.
- **Speaker**: Is responsible for announcing the load balancer IP address to `metalbond` which acts as a route reflector
to the bare metal servers.

The `metal-loadbalancer-controller` is designed to work in an IPv6 only environment.

## Controller

The controller component has the following responsibilities:
- Watches for changes in `Service` resources of type `LoadBalancer` and uses the `ClusterIP` of a `Service` and patches the
`LoadBalancer` status using this `ClusterIP`.
- Setting the `PodCIDRs` on the `Node` resources to ensure that the load balancer can route traffic to the pods. Here it
takes the main `Node` IP address and the configured `node-cidr-mask-size` and patches the `Node.spec.podCIDRs` field.

## Metalbond-Speaker

The speaker is typically deployed as a `DaemonSet` in a bare metal cluster. It is responsible for announcing
the load balancer IP address to the `metalbond` service, which acts as a route reflector to the bare metal servers.
The speaker can be configured to which `VNI` the load balancer IP address should be announced.
Loading