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.
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