Модуль не включен по умолчанию в каком-либо наборе модулей.
Чтобы настроить модуль используйте 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.bgp-advertisements.aggregation-lengthцелочисленный
- addressPools.nameстрока
Имя пула, которое можно уточнять с помощью аннотации к сервису
metallb.universe.tf/address-pool: <name>
. Имя должно соответствовать RFC 1123: разделенные точками части в нижнем регистре, состоящие of из букв, ‘-‘. Каждое имя должно начинаться и заканчиваться буквой алфавита.Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- addressPools.protocolстрока
Технология публикации сервисов, которую должен реализовать speaker.
Допустимые значения:
bgp
,layer2
- addressPools.addressesмассив строк
- 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.matchExpressions.keyстрока
- bgpPeers.node-selector.matchLabelsобъект
- bgpPeers.node-selector.matchExpressionsмассив объектов
- 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}$
- bgpPeers.hold-timeстрока или число
- nodeSelectorобъект
Селектор узлов, на которых будет работать главный контроллер. Структура, аналогичная параметру
spec.nodeSelector
Pod’ов Kubernetes.Если ничего не указано или указано
false
— будет использоваться автоматика. - speakerобъект
Настройки компонента
speaker
, который реализует протокол публикации (bgp
илиlayer2
(LVS)) и направляет на свой узел прикладной трафик сервисов.- speaker.nodeSelectorобъект
Обязательный параметр
Селектор узлов, на которых будет работать DaemonSet speaker. Структура, аналогичная параметру
spec.nodeSelector
Pod’ов Kubernetes.Если ничего не указано или указано
false
— будет использоваться автоматика. - speaker.tolerationsмассив объектов
Структура, аналогичная параметру
spec.tolerations
Pod’ов Kubernetes для DaemonSet’а speaker.Если ничего не указано или указано
false
— будет использоваться автоматика.- speaker.tolerations.effectстрока
- speaker.tolerations.keyстрока
- speaker.tolerations.operatorстрока
- speaker.tolerations.tolerationSecondsцелочисленный
- speaker.tolerations.valueстрока
- speaker.nodeSelectorобъект
- tolerationsмассив объектов
Структура, аналогичная параметру
spec.tolerations
Pod’ов Kubernetes для главного контроллера.Если ничего не указано или указано
false
— будет использоваться автоматика.- tolerations.effectстрока
- tolerations.keyстрока
- tolerations.operatorстрока
- tolerations.tolerationSecondsцелочисленный
- tolerations.valueстрока