The KubeLB Manager is deployed in the management cluster and is responsible for:
Hosting the Envoy xDS control plane
Receiving load balancer configurations from tenant clusters
Deploying and configuring Envoy proxy instances
Managing LoadBalancer and Route resources
Prerequisites
Before installing the Manager, ensure you have:
A Kubernetes cluster meeting the management cluster requirements
kubectl configured to access the management cluster
Helm 3.x installed
The kubelb namespace created
Installation Steps
Create the namespace
Create a dedicated namespace for KubeLB Manager: kubectl create namespace kubelb
Pull the Helm chart
Download the KubeLB Manager Helm chart from the OCI registry: helm pull oci://quay.io/kubermatic/helm-charts/kubelb-manager --version=v1.3.1 --untardir "." --untar
Apply CRDs
Install the Custom Resource Definitions (CRDs) before installing the chart: kubectl apply -f kubelb-manager/crds/
CRDs must be installed separately as they are not managed by Helm to prevent accidental deletion.
Create values file
Create a values.yaml file with your configuration. Here’s a minimal example: kubelb :
# Enable debug logging (set to false in production)
debug : true
logLevel : info
# Envoy proxy configuration
envoyProxy :
topology : shared
replicas : 2
singlePodPerNode : true
# Resource limits
resources :
limits :
cpu : 500m
memory : 512Mi
requests :
cpu : 100m
memory : 128Mi
The shared topology deploys one Envoy proxy per tenant cluster, which is the recommended configuration.
Install the Helm chart
Install KubeLB Manager using Helm: helm install kubelb-manager kubelb-manager/ \
--namespace kubelb \
-f values.yaml \
--create-namespace
Configuration Options
Envoy Proxy Topology
KubeLB supports different Envoy proxy deployment topologies:
Shared (Recommended)
High Availability
DaemonSet Mode
kubelb :
envoyProxy :
topology : shared
replicas : 2
singlePodPerNode : true
Gateway API Support
To enable Gateway API controllers:
kubelb :
enableGatewayAPI : true
Gateway API CRDs must be installed before enabling this feature, otherwise the controller will fail to start.
Annotation Propagation
Control which annotations are propagated from LoadBalancer resources to services:
Specific Annotations
All Annotations
kubelb :
propagatedAnnotations :
metallb.universe.tf/loadBalancerIPs : "true"
external-dns.alpha.kubernetes.io/hostname : "true"
Resource Configuration
Configure resources for both the Manager and Envoy proxy:
# Manager resources
resources :
limits :
cpu : 1000m
memory : 1Gi
requests :
cpu : 200m
memory : 256Mi
# Envoy proxy resources
kubelb :
envoyProxy :
resources :
limits :
cpu : 2000m
memory : 2Gi
requests :
cpu : 500m
memory : 512Mi
Monitoring
Enable Prometheus ServiceMonitor:
serviceMonitor :
enabled : true
metrics :
port : 9443
Enable Grafana dashboards:
grafana :
dashboards :
enabled : true
annotations :
grafana_folder : "KubeLB"
Requires Grafana to be deployed with sidecar.dashboards.enabled=true.
Security
Chart Signature Verification
All KubeLB Helm charts are cryptographically signed using Sigstore Cosign. Verify the chart before installation:
cosign verify quay.io/kubermatic/helm-charts/kubelb-manager:v1.3.1 \
--certificate-identity-regexp= "^https://github.com/kubermatic/kubelb/.github/workflows/release.yml@refs/tags/v.*" \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com
Image Signature Verification
Verify the Manager container image:
cosign verify quay.io/kubermatic/kubelb-manager:v1.3.1 \
--certificate-identity-regexp= "^https://github.com/kubermatic/kubelb/.github/workflows/release.yml@refs/tags/v.*" \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com
Security Context
The Manager runs with restrictive security settings by default:
podSecurityContext :
runAsNonRoot : true
seccompProfile :
type : RuntimeDefault
securityContext :
allowPrivilegeEscalation : false
capabilities :
drop :
- ALL
runAsUser : 65532
Advanced Configuration
KKP Integration
For Kubermatic Kubernetes Platform integration:
kkpintegration :
rbac : true
Leader Election
Configure leader election for high availability:
kubelb :
enableLeaderElection : true
replicaCount : 2
Skip Config Generation
To manage the Config CR manually:
kubelb :
skipConfigGeneration : true
Upgrading
To upgrade KubeLB Manager to a new version:
Update CRDs
kubectl apply -f kubelb-manager/crds/
Upgrade Helm release
helm upgrade kubelb-manager oci://quay.io/kubermatic/helm-charts/kubelb-manager \
--version=v1.3.1 \
--namespace kubelb \
-f values.yaml
Troubleshooting
Check Manager Status
kubectl get pods -n kubelb -l app.kubernetes.io/name=kubelb-manager
View Manager Logs
kubectl logs -n kubelb -l app.kubernetes.io/name=kubelb-manager -f
Check Envoy Proxy Status
kubectl get pods -n kubelb -l app=envoy-proxy
Common Issues
If the Manager fails to start with Gateway API errors, ensure Gateway API CRDs are installed or disable Gateway API support by setting kubelb.enableGatewayAPI: false.
Next Steps
After installing the Manager:
Install KubeLB CCM in your tenant clusters
Verify the installation to ensure components are working correctly