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

Examples:

bgpPeers:
- peer-address: 192.168.1.1
  peer-asn: 1111
  my-asn: 2222
  source-address: 192.168.1.2
  hold-time: 10s
  node-selector:
    matchLabels:
      node: test
addressPools:
- name: myPoolBGP
  protocol: bgp
  addresses:
  - 192.168.100.1-192.168.100.10
  - 192.168.101.0/24
  bgp-advertisements:
  - aggregation-length: 32
    localpref: 100
    communities:
    - no-advertise
bgpCommunities:
  no-advertise: 65535:65282
speaker:
  nodeSelector:
    mylabel: speaker
addressPools:
- name: myPoolL2
  protocol: layer2
  addresses:
  - 192.168.100.1-192.168.100.10
  - 192.168.101.0/24
speaker:
  nodeSelector:
    mylabel: speaker
  tolerations:
  - key: dedicated
    operator: Equal
    value: speaker
  • addressPoolsarray of objects

    Required value

    A list of IP ranges to assign to services.

    Format — a data array similar to that of MetalLB’s.

    Default: []

    • addressesarray of strings

      A list of ranges, where each range can look like a subnet/mask or a numeric address range (with “-“ as a delimiter).

    • auto-assignboolean

      Auto-assign flag used to prevent MetallB from automatic allocation for a pool.

      Default: true

    • avoid-buggy-ipsboolean

      Prevents addresses ending with .0 and .255 to be used by a pool.

      Default: false

    • bgp-advertisementsarray of objects

      Defines BGP advertisements.

      • aggregation-lengthinteger

        The aggregation-length advertisement option lets you “roll up” prefix into a larger one.

        Works for IPv4 addresses.

        Default: 32

        Allowed values: 1 <= X

      • communitiesarray of strings

        Keys from the bgpCommunities parameter to be associated with the announcement.

        Example:

        communities:
        - no-advertise
        
      • localprefinteger

        The BGP LOCAL_PREF attribute which is used by BGP best path algorithm.

        Path with higher localpref is preferred over one with lower localpref.

    • namestring

      The name of the pool (you can specify it using the service annotation as follows: metallb.universe.tf/address-pool: <name>).

    • protocolstring

      The protocol used by the speaker to announce services.

      Allowed values: bgp, layer2

  • bgpCommunitiesobject

    The BGP communities list.

    Example:

    bgpCommunities:
      no-advertise: 65535:65282
    
  • bgpPeersarray of objects

    A list of external BGP routers to use with the module.

    Format — a data array similar to that of MetalLB’s.

    The parameter is optional if only the layer2 mode is used to announce services.

    Default: []

    • hold-timeinteger or string

      The timeout after which the neighboring BGP peer is considered dead. 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 values lower than this. By default, the parameter is set to 90s (i.e., keep-alive packets are sent every 30 seconds).

      Pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$

    • my-asninteger

      Required value

      The AS number in the cluster.

      Allowed values: 0 <= X <= 4294967295

    • node-selectorobject

      The additional pseudo-selector implemented by the speaker application. It selects nodes that are allowed to connect to external BGP routers. Do not confuse it with speaker.nodeSelector and nodeSelector.

      An optional parameter.

      The format is matchLabels or matchExpressions.

      • matchExpressionsarray of objects
        • keystring

          Required value

        • operatorstring

          Required value

        • valuesarray of strings
      • matchLabelsobject
    • passwordstring

      Authentication password for routers enforcing TCP MD5 authenticated sessions.

    • peer-addressstring

      Required value

      The IP address of the external BGP router.

      Pattern: ^([0-9]{1,3}\.){3}[0-9]{1,3}$

    • peer-asninteger

      Required value

      The AS number on the external BGP router.

      Allowed values: 0 <= X <= 4294967295

    • peer-portinteger

      Port to dial when establishing the session.

      Default: 179

      Allowed values: 0 <= X <= 16384

    • router-idstring

      BGP router ID to advertise to the peer.

    • source-addressstring

      The source IP address for outbound connections.

      Pattern: ^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$

  • nodeSelectorobject

    A selector for the main controller. It is the same as the Pod’s spec.nodeSelector parameter in Kubernetes.

    If the parameter is omitted or false, it will be determined automatically.

  • speakerobject

    Parameters of the speaker component, which announces services (using bgp or layer2 (LVS) routing protocol) and routes application traffic to its node.

    • nodeSelectorobject

      Required value

      A selector for the speaker DaemonSet. It is the same as the Pod’s spec.nodeSelector parameter in Kubernetes.

      If the parameter is omitted or false, it will be determined automatically.

    • tolerationsarray of objects

      Tolerations for the speaker DaemonSet. They are the same as the Pod’s spec.tolerations parameter in Kubernetes.

      If the parameter is omitted or false, it will be determined automatically.

      • effectstring
      • keystring
      • operatorstring
      • tolerationSecondsinteger
      • valuestring
  • tolerationsarray of objects

    Tolerations for the main controller. They are the same as the Pod’s spec.tolerations parameter in Kubernetes.

    If the parameter is omitted or false, it will be determined automatically.

    • effectstring
    • keystring
    • operatorstring
    • tolerationSecondsinteger
    • valuestring