Uploaded image for project: 'OpenShift Request For Enhancement'
  1. OpenShift Request For Enhancement
  2. RFE-8556

Enhance GatewayAPI and MetalLB integration

XMLWordPrintable

    • Icon: Feature Request Feature Request
    • Resolution: Unresolved
    • Icon: Undefined Undefined
    • None
    • None
    • Network - IngressDNS
    • None
    • None
    • Product / Portfolio Work
    • None
    • False
    • Hide

      None

      Show
      None
    • 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.

              mcurry@redhat.com Marc Curry
              bmarlow@redhat.com Brandon Marlow
              None
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                None
                None