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