В модуле реализовано 3 алерта.
Модуль не включен по умолчанию в каком-либо наборе модулей.
Чтобы настроить модуль, используйте custom resource ModuleConfig
с именем metallb
(подробнее о настройке Deckhouse…).
Пример ресурса ModuleConfig/metallb
для настройки модуля:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: metallb
spec:
version: 1
enabled: true
settings: # <-- Параметры модуля из раздела "Параметры" ниже.
Параметры
Версия схемы: 1
Примеры:
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
addressPools:
- name: my-pool-l2
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
- addressPools
Обязательный параметр
Список диапазонов IP, которые будут выдаваться сервисам.
Формат — массив, как у оригинального MetalLB.
По умолчанию:
[]
- addressPools.addresses
Список диапазонов, где диапазон — это либо подсеть с маской, либо диапазон значений с “-“ в качестве разделителя.
- addressPools.auto-assign
Флаг auto-assign используется для предотвращения автоматического выделения IP из пула.
По умолчанию:
true
- addressPools.avoid-buggy-ips
Запрещает использование адресов из пула, заканчивающихся на
.0
и.255
.По умолчанию:
false
- addressPools.bgp-advertisements
Определяет BGP advertisements.
- addressPools.bgp-advertisements.aggregation-length
Опция aggregation-length позволяет «свернуть» префикс в более крупный.
Работает для адресов IPv4.
По умолчанию:
32
Допустимые значения:
1 <= X
- addressPools.bgp-advertisements.communities
BGP communities, связанные с анонсом. Каждый элемент — это ключ из параметра bgpCommunities.
Пример:
communities: - no-advertise
- addressPools.bgp-advertisements.localpref
Атрибут
BGP LOCAL_PREF
используется алгоритмом BGP best path.Путь с более высоким localpref предпочтительнее пути с более низким localpref.
- addressPools.name
Имя пула, которое можно уточнять с помощью аннотации к сервису
metallb.universe.tf/address-pool: <name>
. Имя должно соответствовать RFC 1123: разделенные точками части в нижнем регистре, состоящие из букв и ‘-‘. Каждое имя должно начинаться и заканчиваться буквой алфавита.Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- addressPools.protocol
Технология публикации сервисов, которую должен реализовать speaker.
Допустимые значения:
bgp
,layer2
- bgpCommunities
Список BGP communities.
Пример:
bgpCommunities: no-advertise: 65535:65282
- bgpPeers
Список внешних BGP-роутеров, которые будут работать с этим модулем.
Формат — массив, как у оригинального MetalLB.
Необязательный параметр, если используется только протокол публикации сервисов
layer2
.По умолчанию:
[]
- bgpPeers.hold-time
Таймаут, после которого партнерский BGP-пир считается утерянным. Это значение делится на 3 и получается интервал для keep-alive.
Рекомендуемое значение —
3s
(keep-alive раз в секунду), протокол BGP не поддерживает меньшие значения. По умолчанию —90s
(keep-alive раз в 30 секунд).Шаблон:
^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
- bgpPeers.my-asn
Обязательный параметр
Номер автономной системы для кластера.
Допустимые значения:
0 <= X <= 4294967295
- bgpPeers.node-selector
Дополнительный псевдоселектор, который реализуется приложением speaker’а. Говорит о том, с каких узлов стоит устанавливать связь с внешними BGP-роутерами. Не путать с
speaker.nodeSelector
иnodeSelector
.Опциональный параметр.
Формат —
matchLabels
илиmatchExpressions
.- bgpPeers.node-selector.matchExpressions
- bgpPeers.node-selector.matchExpressions.key
- bgpPeers.node-selector.matchExpressions.operator
- bgpPeers.node-selector.matchExpressions.values
- bgpPeers.node-selector.matchLabels
- bgpPeers.password
Пароль для аутентификациии для роутеров, требующих TCP MD5 авторизованных сессий.
- bgpPeers.peer-address
Обязательный параметр
IP внешнего BGP-роутера.
Шаблон:
^([0-9]{1,3}\.){3}[0-9]{1,3}$
- bgpPeers.peer-asn
Обязательный параметр
Номер автономной системы на внешнем BGP-роутере.
Допустимые значения:
0 <= X <= 4294967295
- bgpPeers.peer-port
Порт, к которому устанавливать сессию.
По умолчанию:
179
Допустимые значения:
0 <= X <= 16384
- bgpPeers.router-id
ID BGP-роутера для анонса.
- bgpPeers.source-address
IP-адрес для исходящих соединений.
Шаблон:
^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$
- loadBalancerClass
Необязательное поле, описывающее класс LoadBalancer. Поле LoadBalancerClass обязательно для заполнении при одновременном использовании модулей metallb и l2-load-balancer. Также рекомендуется его заполнять, если в кластере есть сторонние контроллеры, которые обслуживают ресурсы Service с типом LoadBalancer.
- nodeSelector
Селектор узлов, на которых будет работать главный контроллер. Структура, аналогичная параметру
spec.nodeSelector
пода Kubernetes.Если ничего не указано или указано
false
, будет использоваться автоматика. - speaker
Настройки компонента
speaker
, который реализует протокол публикации (bgp
илиlayer2
(LVS)) и направляет на свой узел прикладной трафик сервисов.- speaker.nodeSelector
Обязательный параметр
Селектор узлов, на которых будет работать DaemonSet speaker. Структура, аналогичная параметру
spec.nodeSelector
пода Kubernetes.Если ничего не указано или указано
false
, будет использоваться автоматика. - speaker.tolerations
Структура для DaemonSet speaker’а, аналогичная параметру
spec.tolerations
пода Kubernetes.Если ничего не указано или указано
false
, будет использоваться автоматика.- speaker.tolerations.effect
- speaker.tolerations.key
- speaker.tolerations.operator
- speaker.tolerations.tolerationSeconds
- speaker.tolerations.value
- tolerations
Структура, аналогичная параметру
spec.tolerations
пода Kubernetes для главного контроллера.Если ничего не указано или указано
false
, будет использоваться автоматика.- tolerations.effect
- tolerations.key
- tolerations.operator
- tolerations.tolerationSeconds
- tolerations.value