Доступно только в Enterprise Edition.

Модуль по умолчанию выключен. Для включения добавьте в ConfigMap deckhouse:

data:
  metallbEnabled: "true"

Параметры

Примеры:

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: myPoolBGP
  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: myPoolL2
  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.

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

    • addressesмассив строк

      Список диапазонов, где диапазон — это либо подсеть с маской, либо диапазон значений с “-“ в качестве разделителя.

    • auto-assignбулевый

      Флаг auto-assign используется для предотвращения автоматического выделения IP из пула.

      По умолчанию: true

    • avoid-buggy-ipsбулевый

      Запрещает использование адресов из пула, заканчивающихся на .0 и .255.

      По умолчанию: false

    • bgp-advertisementsмассив объектов

      Определяет BGP advertisements.

      • aggregation-lengthцелочисленный

        Опция aggregation-length позволяет “свернуть” префикс в более крупный.

        Работает для адресов IPv4.

        По умолчанию: 32

        Допустимые значения: 1 <= X

      • communitiesмассив строк

        BGP communities связанные с анонсом. Каждый элемент это ключ из параметра bgpCommunities.

        Пример:

        communities:
        - no-advertise
        
      • localprefцелочисленный

        Атрибут BGP LOCAL_PREF используется алгоритмом BGP best path.

        Путь с более высоким localpref предпочтительнее пути с более низким localpref.

    • nameстрока

      Имя пула, которое можно уточнять с помощью аннотации к сервису metallb.universe.tf/address-pool: <name>.

    • protocolстрока

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

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

  • bgpCommunitiesобъект

    Список BGP communities.

    Пример:

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

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

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

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

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

    • 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)?)$

    • my-asnцелочисленный

      Обязательный параметр

      Номер автономной системы для кластера.

      Допустимые значения: 0 <= X <= 4294967295

    • node-selectorобъект

      Дополнительный псевдо-селектор, который реализуется приложением speaker-а. Говорит о том, с каких узлов стоит устанавливать связь с внешними BGP-роутерами. Не путать с speaker.nodeSelector и nodeSelector.

      Опциональный параметр.

      Формат — matchLabels или matchExpressions.

      • matchExpressionsмассив объектов
        • keyстрока

          Обязательный параметр

        • operatorстрока

          Обязательный параметр

        • valuesмассив строк
      • matchLabelsобъект
    • passwordстрока

      Пароль для аутентификациии для роутеров, требующих TCP MD5 авторизованных сессий.

    • peer-addressстрока

      Обязательный параметр

      IP внешнего BGP-роутера.

      Шаблон: ^([0-9]{1,3}\.){3}[0-9]{1,3}$

    • peer-asnцелочисленный

      Обязательный параметр

      Номер автономной системы на внешнем BGP-роутере.

      Допустимые значения: 0 <= X <= 4294967295

    • peer-portцелочисленный

      Порт, к которому устанавливать сессию.

      По умолчанию: 179

      Допустимые значения: 0 <= X <= 16384

    • router-idстрока

      ID BGP-роутера для анонса.

    • source-addressстрока

      IP-адрес для исходящих соединений.

      Шаблон: ^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$

  • nodeSelectorобъект

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

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

  • speakerобъект

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

    • nodeSelectorобъект

      Обязательный параметр

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

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

    • tolerationsмассив объектов

      Структура, аналогичная параметру spec.tolerations Pod’ов Kubernetes для DaemonSet’а speaker.

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

      • effectстрока
      • keyстрока
      • operatorстрока
      • tolerationSecondsцелочисленный
      • valueстрока
  • tolerationsмассив объектов

    Структура, аналогичная параметру spec.tolerations Pod’ов Kubernetes для главного контроллера.

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

    • effectстрока
    • keyстрока
    • operatorстрока
    • tolerationSecondsцелочисленный
    • valueстрока