oneke_lb - OpenNebula/one-apps GitHub Wiki

Load Balancing

OneKE includes the following load balancing components:

  • Cilium
  • MetalLB

Cilium

When ONEAPP_K8S_CNI_PLUGIN is set to "cilium" and ONEAPP_K8S_CILIUM_RANGE is specified (for example 172.20.0.240/28), then OneKE should be capable of deploying LoadBalancer services (without MetalLB). Fore more information on using BGP load balancers in Cilium please refer to the official documentation.

MetalLB

---
apiVersion: v1
kind: Namespace
metadata:
  name: metallb-system
---
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
  name: one-metallb
  namespace: kube-system
spec:
  targetNamespace: metallb-system
  chartContent: <BASE64 OF A METALLB HELM CHART TGZ FILE>
  valuesContent: |
    controller:
      image:
        pullPolicy: IfNotPresent
    speaker:
      image:
        pullPolicy: IfNotPresent
  • A dedicated namespace metallb-system is provided.
  • Image Pull Policy is optimized for airgapped deployments.
  • Precreated CRD configuration objects are provided (managed by RKE2 with Helm Integration installed in /var/lib/rancher/rke2/server/manifests/one-metallb-config.yaml). For information on MetalLB use cases please refer to the official documentation on MetalLB's configuration.

[!IMPORTANT] To deploy MetalLB:

  • Set ONEAPP_K8S_METALLB_ENABLED to "YES".

[!WARNING] MetalLB is not suitable for use in AWS Edge Clusters, since AWS VPC is API-oriented and doesn't fully support networking protocols such as ARP or BGP in a standard way. For more information please refer to the MetalLB's Cloud Compatibility.