Files
Timofei Larkin 522513f65c feat(metallb-iad): fence the driver-managed MetalLB annotations
A reservation is only as good as the annotations that express it. The
driver parks an address on a placeholder Service and hands it over by
pinning the workload's Service with metallb.io/loadBalancerIPs — ordinary
MetalLB annotations that any writer of a Service can set, so a tenant able
to set them can steer MetalLB at an address reserved for someone else. The
driver notices and marks the address Conflict, but only after the fact, and
during the handoff gap the address is briefly unheld in MetalLB's books
with admission the only thing in front of it.

The driver's design leaves this policy to the installation rather than the
controller, since who is allowed to pin is a property of the deployment;
this package is that installation, so the policy ships beside the chart it
protects and is withdrawn with it.

Presence of an annotation is deliberately not what is forbidden: the driver
writes the pin onto the tenant's own Service, and the tenant must stay able
to edit the rest of it. The comparison is against oldObject, so an
unchanged value always passes, while CREATE sees a null oldObject and reads
as absent. spec.loadBalancerIP needs no clause — MetalLB stopped honouring
it in v0.14 and this tree vendors v0.16.1.

Assisted-by: LLM
Signed-off-by: Timofei Larkin <lllamnyp@gmail.com>
2026-10-13 13:38:01 +02:00
..