Available with limitations in: SE, SE+, CSE Lite (1.67)
Available without limitations in: EE
The module has 7 alerts.
The module is not enabled by default in any bundles.
Conversions
The module is configured using the ModuleConfig resource, the schema of which contains a version number. When you apply an old version of the ModuleConfig schema in a cluster, automatic transformations are performed. To manually update the ModuleConfig schema version, the following steps must be completed sequentially for each version :
- Updates from version 1 to 2:
Remove all
addressPoolelements with thelayer2protocol.
Settings
The module is configured using the ModuleConfig custom resource named metallb (learn more about setting up Deckhouse…).
Example of the ModuleConfig/metallb resource for configuring the module:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: metallb
spec:
version: 2
enabled: true
settings: # <-- Module parameters from the "Parameters" section below.
Parameters
Schema version: 2
Example:
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: my-pool-bgp
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
- objectsettings
- array of objectssettings.addressPools
Required value
A list of IP ranges to assign to services.
Format — a data array similar to that of MetalLB’s.
Default:
[]- array of stringssettings.addressPools.addresses
Required value
A list of ranges, where each range can look like a subnet/mask or a numeric address range (with “-“ as a delimiter).
- booleansettings.addressPools.auto-assign
Auto-assign flag used to prevent metallb from automatic allocation for a pool.
Default:
true - booleansettings.addressPools.avoid-buggy-ips
Prevents addresses ending with
.0and.255to be used by a pool.Default:
false - array of objectssettings.addressPools.bgp-advertisements
Defines BGP advertisements.
- integersettings.addressPools.bgp-advertisements.aggregation-length
The aggregation-length advertisement option lets you “roll up” prefix into a larger one.
Works for IPv4 addresses.
Default:
32Allowed values:
1 <= X - array of stringssettings.addressPools.bgp-advertisements.communities
Keys from the bgpCommunities parameter to be associated with the announcement.
Example:
communities: - no-advertise - integersettings.addressPools.bgp-advertisements.localpref
The
BGP LOCAL_PREFattribute which is used by BGP best path algorithm.Path with higher localpref is preferred over one with lower localpref.
- stringsettings.addressPools.name
Required value
The name of the pool. 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])?)*$ - stringsettings.addressPools.protocol
Required value
The protocol used by the speaker to announce services.
Allowed values:
bgp,layer2
- objectsettings.bgpCommunities
Available in editions: EE
The BGP communities list.
Example:
bgpCommunities: no-advertise: 65535:65282 - array of objectssettings.bgpPeers
Available in editions: EE
A list of external BGP routers to use with the module.
Format — a data array similar to that of MetalLB’s.
Default:
[]- integer or stringsettings.bgpPeers.hold-time
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 to90s(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)?)$ - integersettings.bgpPeers.my-asn
Required value
The AS number in the cluster.
Allowed values:
0 <= X <= 4294967295 - objectsettings.bgpPeers.node-selector
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.nodeSelectorandnodeSelector.An optional parameter.
The format is
matchLabelsormatchExpressions.- array of objectssettings.bgpPeers.node-selector.matchExpressions
- stringsettings.bgpPeers.node-selector.matchExpressions.key
- stringsettings.bgpPeers.node-selector.matchExpressions.operator
- array of stringssettings.bgpPeers.node-selector.matchExpressions.values
- objectsettings.bgpPeers.node-selector.matchLabels
- stringsettings.bgpPeers.password
Authentication password for BGP-routers enforcing TCP MD5 authenticated sessions.
- stringsettings.bgpPeers.peer-address
Required value
The IP address of the external BGP router.
Pattern:
^([0-9]{1,3}\.){3}[0-9]{1,3}$ - integersettings.bgpPeers.peer-asn
Required value
The AS number on the external BGP router.
Allowed values:
0 <= X <= 4294967295 - integersettings.bgpPeers.peer-port
Port to dial when establishing the session.
Default:
179Allowed values:
0 <= X <= 16384 - stringsettings.bgpPeers.router-id
BGP router ID to advertise to the peer.
- stringsettings.bgpPeers.source-address
The source IP address for outbound connections.
Pattern:
^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$
- stringsettings.loadBalancerClass
An optional field describing the LoadBalancer class. The LoadBalancerClass field should be used in L2 LoadBalancer mode to specify the MetalLoadBalancerClass that defines the balancer parameters for the Service.
- objectsettings.nodeSelector
A selector for the main controller. It is the same as the Pod’s
spec.nodeSelectorparameter in Kubernetes.If the parameter is omitted or
false, it will be determined automatically. - objectsettings.speaker
Settings for the
speakercomponent that implements the LoadBalancer’s IPs publishing protocol for external infrastructure.- objectsettings.speaker.nodeSelector
Required value
A selector for the speaker DaemonSet. It is the same as the Pod’s
spec.nodeSelectorparameter in Kubernetes.If the parameter is omitted or
false, it will be determined automatically. - array of objectssettings.speaker.tolerations
Tolerations for the speaker DaemonSet. They are the same as the Pod’s
spec.tolerationsparameter in Kubernetes.If the parameter is omitted or
false, it will be determined automatically.- stringsettings.speaker.tolerations.effect
- stringsettings.speaker.tolerations.key
- stringsettings.speaker.tolerations.operator
- integersettings.speaker.tolerations.tolerationSeconds
- stringsettings.speaker.tolerations.value
- array of objectssettings.tolerations
Tolerations for the main controller. They are the same as the Pod’s
spec.tolerationsparameter in Kubernetes.If the parameter is omitted or
false, it will be determined automatically.- stringsettings.tolerations.effect
- stringsettings.tolerations.key
- stringsettings.tolerations.operator
- integersettings.tolerations.tolerationSeconds
- stringsettings.tolerations.value