This feature is available in Enterprise Edition only.

This module is disabled by default. To enable it, add the following lines to the deckhouse ConfigMap:

data:
  metallbEnabled: "true"

Parameters

The module has the following parameters in the deckhouse CM:

  • speaker — parameters of the speaker component that announces services (using bgp or layer2 (LVS) routing protocol) and routes application traffic to its node;
    • nodeSelector — selects nodes where the speaker DaemonSet is active;
      • A mandatory parameter;
    • tolerations — allow (but do not require) the pods to schedule onto nodes with matching taints;
      • An optional parameter;
  • bgpPeers — a list of external BGP routers to use with the module;
    • Format — a data array similar to that of MetalLB’s. Main parameters:
      • peer-address — the IP address of the external BGP router;
      • peer-asn — the AS number on the external BGP router;
      • my-asn — the AS number in the cluster;
      • hold-time — the timeout after which the neighboring BGP peer is considered lost. This value is divided by three to get the keep-alive interval;
        • The recommended value is 3s (i.e., keep-alive packets are sent once per second). Note that the BGP protocol does not support lower values;
        • By default, the parameter is set to 90s (i.e., keep-alive packets are sent every 30 seconds);
      • node-selector — the additional pseudo-selector implemented by the speaker application. It selects nodes allowed to connect to external BGP routers. Do not confuse it with speaker.nodeSelector and nodeSelector;
    • The parameter is optional if only the layer2 mode is used to announce services;
  • addressPools — a list of IP ranges to assign to services;
    • Format — a data array similar to that of MetalLB’s. Main parameters:
      • name — the name of the pool (you can specify it using the service annotation as follows: metallb.universe.tf/address-pool: <name>);
      • protocol — the protocol used by the speaker to announce services. Possible values:
        • bgp;
        • layer2 — use the L2 LVS mode;
      • addresses — a list of ranges, where each range can look like a subnet/mask or a numeric address range (with a “-“ delimiter);
  • nodeSelector — a selector for the main controller. It is the same as the pods’ spec.nodeSelector parameter in Kubernetes;
    • If the parameter is omitted or false, it will be determined automatically.
  • tolerations — tolerations for the main controller. They are the same as the pods’ spec.tolerations parameter in Kubernetes;
    • If the parameter is omitted or false, it will be determined automatically.