Helm provides full configuration control and is recommended for production deployments.

Add the Helm Repository#

helm repo add purelb https://purelb.io/charts
helm repo update

Install#

helm install --create-namespace --namespace=purelb-system purelb purelb/purelb

Install Without BGP#

helm install --create-namespace --namespace=purelb-system purelb purelb/purelb \
    --set gobgp.enabled=false

Install via OCI Registry (Helm 3.8+)#

helm install --create-namespace --namespace=purelb-system purelb \
    oci://ghcr.io/purelb/purelb/charts/purelb --version v0.16.3

Key Configuration Values#

ValueDefaultDescription
gobgp.enabledtrueEnable k8gobgp BGP sidecar
lbnodeagent.localInterfacedefaultInterface for local address announcement
lbnodeagent.dummyInterfacekube-lb0Dummy interface for remote addresses
leaseConfig.leaseDuration10sElection lease duration
leaseConfig.renewDeadline7sLease renewal deadline
leaseConfig.retryPeriod2sLease renewal retry interval
serviceGroup.createfalseCreate a default ServiceGroup during install
defaultAnnouncerPureLBLoadBalancer controller name

See the Helm Values Reference for the complete list.

Overriding Values#

Create a YAML file with your overrides:

---
allocator:
  tolerations:
  - effect: NoSchedule
    key: node-role.kubernetes.io/control-plane

lbnodeagent:
  garpConfig:
    enabled: true
    count: 3
    interval: 500ms

Install with the overrides file:

helm install --create-namespace --namespace=purelb-system \
    --values=my-values.yaml purelb purelb/purelb

Upgrading#

helm repo update
helm upgrade --namespace=purelb-system purelb purelb/purelb

Existing services retain their allocated addresses during the upgrade.