zks:metallb-setup-guide
Table of Contents
MetalLB Setup on ZEDEDA EVE-K
Overview
MetalLB provides load balancer functionality for bare-metal Kubernetes clusters. On ZEDEDA EVE-K, the MetalLB operator is installed manually via kubectl. The IP pool and L2 advertisement are managed via ZedCloud GitOps (Fleet).
Installation
Step 1 — Install MetalLB Operator (manual)
MetalLB must be installed manually on the cluster. Fleet cannot manage the operator directly because its manifest includes the namespace definition, which creates a bootstrap conflict with Helm.
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.5/config/manifests/metallb-native.yaml
Verify the operator is running:
kubectl get pods -n metallb-system
Step 2 — Configure via GitOps
Once the operator is running, Fleet deploys the IP pool and L2 advertisement
automatically via the metallb-config bundle.
Repository Structure
demo/charts/
└── infrastructure/
└── metallb-config/ ← managed by Fleet
├── Chart.yaml
├── fleet.yaml
├── values.yaml
└── templates/
├── ip-pool.yaml
└── l2adv.yaml
metallb-config Bundle
fleet.yaml
helm: chart: . releaseName: metallb-config
values.yaml
ipPool: name: main-pool addresses: 172.16.8.251-172.16.8.254 l2Advertisement: name: main-l2
templates/ip-pool.yaml
apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: {{ .Values.ipPool.name }} namespace: metallb-system spec: addresses: - {{ .Values.ipPool.addresses }}
templates/l2adv.yaml
apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: {{ .Values.l2Advertisement.name }} namespace: metallb-system spec: ipAddressPools: - {{ .Values.ipPool.name }}
Verify
kubectl get pods -n metallb-system kubectl get ipaddresspool -n metallb-system kubectl get l2advertisement -n metallb-system
zks/metallb-setup-guide.txt · Last modified: by mc
