Requirements

Versions

See the Compatibility Matrix for the tested Kubernetes, Gateway API, and Envoy Gateway versions. The KubeLB Helm charts do not enforce a kubeVersion constraint, so version mismatches are not caught at install time.

Management cluster

Use a dedicated cluster as the KubeLB management cluster. It hosts the data plane for all tenants and should not run unrelated workloads.

KubeLB Manager must be installed in the kubelb namespace. The Envoy Proxy pods connect to the xDS control plane at the hard-coded address envoycp.kubelb.svc:8001, so installing the manager in any other namespace breaks the data plane.

Network connectivity

DirectionSourceDestinationPort/ProtocolPurposeRequired
Tenant to ManagementKubeLB CCMManagement cluster Kubernetes API serverHTTPS, typically 6443The CCM connects to the management cluster using the kubeconfig stored in the kubelb-cluster secret. The API endpoint advertised in the management cluster’s kube-public/cluster-info ConfigMap must be reachable from all tenant clusters.Always
Management to TenantEnvoy Proxy podsTenant cluster node addressesNodePort range, default 30000-32767/TCP,UDPDirect backend transport mode (default). Traffic is forwarded to the node address selected by nodeAddressType.Direct mode
Management to TenantEnvoy Proxy podsTenant proxyTenant proxy NodePort, or 15443/TCP with serviceType: LoadBalancermTLS backend transport mode (Enterprise Edition). All backend traffic goes through the encrypted tenant proxy instead of plain NodePorts.mTLS mode
Clients to ManagementApplication clientsLoadBalancer services and Gateway listeners in the management clusterService-defined ports; Envoy data plane listener ports are allocated from 10000-65535Application traffic provisioned by KubeLB.Always
Tenant/CLI to ManagementTunnel agents and kubelb CLITunnel connection manager, exposed via Ingress or HTTPRouteHTTPS, 443Tunneling (Enterprise Edition). Connections are outbound-only from the tenant side.Tunneling

Component ports

PortProtocolComponentScopePurpose
8001TCPKubeLB ManagerIn-clusterEnvoy xDS control plane (envoycp service)
9443TCPKubeLB ManagerPodMetrics endpoint, exposed via kube-rbac-proxy service on 8443
8081TCPKubeLB ManagerPodHealth and readiness probes
9445TCPKubeLB CCMPodMetrics endpoint, exposed via kube-rbac-proxy service on 8443
8081TCPKubeLB CCMPodHealth and readiness probes
9001TCPEnvoy Proxy podLocalhost, unless debug mode is enabledEnvoy admin interface
19001TCPEnvoy Proxy podPodStats endpoint (/stats/prometheus)
19002TCPEnvoy Proxy podPodShutdown manager
19003TCPEnvoy Proxy podPodReadiness
19004TCPEnvoy Proxy podPodHealth check listener
15443TCPTenant proxy (EE)Tenant cluster, reachable from management clustermTLS backend transport listener
19000TCPTenant proxy (EE)PodEnvoy admin interface
19001TCPTenant proxy (EE)PodStats endpoint
19002TCPTenant proxy (EE)PodShutdown manager
19003TCPTenant proxy (EE)PodReadiness
19004TCPTenant proxy (EE)PodHealth check listener
8080TCPConnection manager (EE)In-cluster, exposed via Ingress or HTTPRouteHTTP server for Envoy and tunnel connections

Resource sizing

ComponentRequestsLimits
kubelb-manager100m CPU / 128Mi500m CPU / 512Mi
kubelb-ccm100m CPU / 128Mi500m CPU / 512Mi
Connection manager (EE)250m CPU / 128Mi500m CPU / 256Mi
Envoy Proxy podsnonenone
Tenant proxy Envoy (EE)100m CPU / 128Mi1 CPU / 512Mi

The managed Envoy Proxy pods ship with no default requests or limits (kubelb.envoyProxy.resources: {}). Set them for production so the data plane gets scheduled with guaranteed capacity and cannot starve other workloads. Envoy Proxy defaults to 2 replicas with one pod per node.

Next steps