The module is not enabled by default in any bundles.

How to explicitly enable the module…

Set the spec.enabled module parameter to true or false in the ModuleConfig/l2-load-balancer resource (create it, if necessary) to explicitly enable or disable the module, or use the deckhouse-controller module command in the d8-system/deckhouse pod.

Example of enabling the module:

  • by using the ModuleConfig resource:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: l2-load-balancer
    spec:
      enabled: true
    
  • by using the deckhouse-controller command (you need a kubectl, configured to work with the cluster):

    kubectl -ti -n d8-system exec deploy/deckhouse -c deckhouse -- deckhouse-controller module enable l2-load-balancer
    

Example of disabling the module:

  • by using the ModuleConfig resource:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: l2-load-balancer
    spec:
      enabled: false
    
  • by using the deckhouse-controller command (you need a kubectl, configured to work with the cluster):

    kubectl -ti -n d8-system exec deploy/deckhouse -c deckhouse -- deckhouse-controller module disable l2-load-balancer
    

The module is configured using the ModuleConfig custom resource named l2-load-balancer (learn more about setting up Deckhouse…).

Example of the ModuleConfig/l2-load-balancer resource for configuring the module:

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: l2-load-balancer
spec:
  version: 1
  enabled: true
  settings: # <-- Module parameters from the "Parameters" section below.

Parameters

Schema version: 1

Example:

addressPools:
- name: my-l2-loadbalancer-pool
  addresses:
  - 192.168.100.1-192.168.100.10
  - 192.168.101.0/24
  • 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: []

    • addressPools.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).

      Caution! The address ranges must be available for use on frontend nodes and must not overlap with the addresses of existing cluster nodes.

    • addressPools.avoid-buggy-ipsboolean

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

      Default: false

    • addressPools.namestring

      The name of the pool (you can specify it using the service annotation as follows: metallb.universe.tf/address-pool: <name>). It should conform to RFC 1123: dot-separated parts in lowercase, consists of alphanumeric characters, ‘-‘. Each part must start and end with an alphanumeric character.

      Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$