claudie icon indicating copy to clipboard operation
claudie copied to clipboard

Feature: Support LoadBalancer Service Type

Open Despire opened this issue 2 years ago • 1 comments

Description

Services of type LoadBalancer are not working at the moment. When creating a LoadBalancer service it will get stuck on <pending> external IP.

Instead of:

  • user hardcoding the LB configuration in the InputManifest

We'll have:

  • an operator component similar to how our autoscaler is done, we can reuse the architecture
  • The operator will watch and react to "serviceType: LoadBalancer" within the cluster, then update LB configuration accordingly, and e.g. populate the "External Address" of the service status field

One of many decisions we'll have to make here:

  • Have this operator create an LB if it doesn't exist, or force the user to create the LB in the inputManifest? I think the user should still create the LB via the inputManifest, and the operator would only control the configuration

Exit criteria

  • [ ] Services of type LoadBalancer work

Despire avatar Sep 05 '23 06:09 Despire

Which LB pool should be modified when a service of type LoadBalancer is created? Is an annotation required (or use .spec.LoadBalancerClass)?

If there are multiple services of type LoadBalancer created, which IPs and/or hostnames and/or ports are they going to be exposed on? How does this work on managed K8s (GKE/EKS/...)?

Claudie inherently has limitations here compared to managed K8s, but our implementation should be close to the general approach in the managed K8s world.

bernardhalas avatar Sep 08 '23 14:09 bernardhalas