Feature: Support LoadBalancer Service Type
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
LoadBalancerwork
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.