В модуле реализовано 8 алертов.

Модуль не включен по умолчанию в каком-либо наборе модулей.

Как явно включить или отключить модуль…

Чтобы явно включить или выключить модуль metallb, установите spec.enabled в true или false в ModuleConfig/metallb (создайте, при необходимости), или воспользуйтесь командой deckhouse-controller module в поде d8-system/deckhouse.

Пример включения модуля:

  • с помощью ресурса ModuleConfig:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: metallb
    spec:
      enabled: true
    
  • с помощью команды deckhouse-controller (требуется kubectl, настроенный на работу с кластером):

    kubectl -ti -n d8-system exec svc/deckhouse-leader -c deckhouse -- deckhouse-controller module enable metallb
    

Пример выключения модуля:

  • с помощью ресурса ModuleConfig:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: metallb
    spec:
      enabled: false
    
  • с помощью команды deckhouse-controller (требуется kubectl, настроенный на работу с кластером):

    kubectl -ti -n d8-system exec svc/deckhouse-leader -c deckhouse -- deckhouse-controller module disable metallb
    

Чтобы настроить модуль, используйте 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
  • 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
        строка

        Имя пула, которое можно уточнять с помощью аннотации к сервису 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])?)*$

      • settings.addressPools.protocol
        строка

        Технология публикации сервисов, которую должен реализовать speaker.

        Допустимые значения: bgp, layer2

    • settings.bgpCommunities
      объект

      Список BGP communities.

      Пример:

      bgpCommunities:
        no-advertise: 65535:65282
      
    • settings.bgpPeers
      массив объектов

      Список внешних BGP-роутеров, которые будут работать с этим модулем.

      Формат — массив, как у оригинального MetalLB.

      Необязательный параметр, если используется только протокол публикации сервисов layer2.

      По умолчанию: []

      • 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
        строка

        Пароль для аутентификациии для роутеров, требующих 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 обязательно для заполнении при одновременном использовании модулей metallb и l2-load-balancer. Также рекомендуется его заполнять, если в кластере есть сторонние контроллеры, которые обслуживают ресурсы Service с типом LoadBalancer.

    • settings.nodeSelector
      объект

      Селектор узлов, на которых будет работать главный контроллер. Структура, аналогичная параметру spec.nodeSelector пода Kubernetes.

      Если значение не указано или указано false, будет использоваться автоматика.

    • settings.speaker
      объект

      Настройки компонента speaker, который реализует протокол публикации (bgp или layer2 (LVS)) и направляет на свой узел прикладной трафик сервисов.

      • 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
        строка