-
Feature Request
-
Resolution: Unresolved
-
Undefined
-
None
-
None
-
None
-
None
-
Product / Portfolio Work
-
None
-
False
-
-
None
-
None
-
None
-
-
None
-
None
-
None
-
None
-
None
Currently MetalLB only looks to see if a service is healthy before it advertises a route for said service. When the service is unhealthy it withdraws the route.
When we map a loadbalancer object directly to a service object this works and the route for the service is withdrawn when there are no pods available to take traffic.
When GatewayAPI requests a loadbalancer IP via MetalLB, it will instantly get assigned an IP from the MetalLB address pool, and begin advertising that address into BGP, whether or not the service(s) that are being served by GatewayAPI are up or down.
This leads to a scenario where MetalLB will continue advertising a IP address associated with GatewayAPI, even if it is demonstrably unhealthy.
The desired outcome is:
If a GatewayAPI service is using a LoadBalancer IP from a MetalLB address pool, and all of the services that it is proxying/load-balancing to are down/unhealthy, then GatewayAPI should mark itself in a way that causes MetalLB to withdraw the route for the address associated.
We see this pattern for customers who want to use GatewayAPI in conjunction with MetalLB, usually in conjuction with anycast.