Skip to content

spec(platform): add ManagedLoadBalancer kind - #119

Closed
JuanmaBM wants to merge 2 commits into
openshift-online:mainfrom
JuanmaBM:spec/managed-loadbalancer
Closed

spec(platform): add ManagedLoadBalancer kind#119
JuanmaBM wants to merge 2 commits into
openshift-online:mainfrom
JuanmaBM:spec/managed-loadbalancer

Conversation

@JuanmaBM

Copy link
Copy Markdown
Collaborator

Summary

  • Adds ManagedLoadBalancer spec (specs/platform/managed-loadbalancer.spec.md) defining a fleet-scoped managed resource for shared cloud load balancers
  • Updates data-model.spec.md with the new entity, ERD, FK on Gateway (load_balancer_id), API endpoints, and design decision
  • Updates index.spec.md with the new spec registry entry

Motivation

Each OpenShell Gateway provisions its own Gateway API Gateway + cloud load balancer. On AWS, each ELB requires 8+ free IPs in the subnet. The staging cluster has exhausted its subnet IPs — 3 out of 6 tenant gateways are stuck in Pending with InvalidSubnet.

ManagedLoadBalancer follows the ManagedCluster/ManagedDatabase pattern: a fleet-scoped resource with a simple FK from Gateway. Multiple gateways share one LB via GRPCRoutes. The existing GATEWAY_API_GATEWAY_NAME env var is the interim mechanism; this spec replaces it with a first-class API resource.

Key Design Points

  • Optional FK: Gateway.load_balancer_id is optional — existing gateways without it keep per-tenant LB behavior (backward compat)
  • Wildcard listener: shared Gateway uses *.apps.example.com with allowedRoutes.namespaces.from: All
  • Deletion protection: API rejects deleting a ManagedLoadBalancer that still has Gateways referencing it
  • Read-only hostname: populated by the reconciler from the cloud provider, same pattern as route_address on Gateway

Test plan

  • Review spec requirements and scenarios for completeness
  • Verify ERD in data-model.spec.md renders correctly
  • Discuss naming (ManagedLoadBalancer vs alternatives) in comments

🤖 Generated with Claude Code

JuanmaBM and others added 2 commits August 14, 2026 12:09
Introduce ManagedLoadBalancer as a fleet-scoped managed resource
representing a shared cloud load balancer. Multiple Gateways route
through a single LB via GRPCRoutes, replacing the per-gateway LB model
that exhausts subnet IPs.

Follows the ManagedCluster/ManagedDatabase pattern with a simple FK
(Gateway.load_balancer_id). Backward compatible: gateways without the
FK keep existing per-tenant behavior.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Cloud drivers provision load balancers via cloud APIs (AWS SDK, IBM
Cloud SDK) instead of only through Kubernetes resources. Required for
multi-cloud support and the gateway/sandbox cluster split.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@JuanmaBM JuanmaBM closed this Aug 20, 2026
@JuanmaBM

Copy link
Copy Markdown
Collaborator Author

Won't implemented

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant