Эти возможности доступны только в Enterprise Edition.

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

data:
  metallbEnabled: "true"

Параметры

Для настройки модуля предусмотрены следующие параметры в CM deckhouse:

  • speaker — настройки компонента speaker, который реализует протокол публикации (bgp или layer2 (LVS)) и направляет на свой узел прикладной трафик сервисов.
    • nodeSelector — селектор нод, на которых будет работать DaemonSet speaker.
      • Обязательный параметр.
    • tolerations — противоядие против taints на нодах.
      • Опциональный параметр.
  • bgpPeers — список внешних BGP-роутеров, которые будут работать с этим модулем.
    • Формат — массив как у оригинального MetalLB. Основные параметры:
      • peer-address — IP внешнего BGP-роутера.
      • peer-asn — номер автономной системы на внешнем BGP-роутере.
      • my-asn — номер автономной системы на вашем кластере.
      • hold-time — таймаут, после которого партнёрский BGP-пир считается утерянным. Это значение делится на три и получается интервал для keep-alive.
        • Рекомендуемое значение — 3s (keep-alive раз в секунду), протокол BGP не поддерживает значения меньше.
        • По умолчанию — 90s (keep-alive раз в 30 секунд).
      • node-selector — дополнительный псевдо-селектор, который реализуется приложением speaker-а. Говорит о том, с каких нод стоит устанавливать связь с внешними BGP-роутерами. Не путать с speaker.nodeSelector и nodeSelector.
    • Если используется только протокол публикации сервисов layer2, то параметр — необязательный.
  • addressPools — список диапазонов IP, которые будут выдаваться сервисам.
    • Формат — массив как у оригинального MetalLB. Основные параметры:
      • name — имя пула, которое можно уточнять с помощью аннотации к сервису metallb.universe.tf/address-pool: <name>.
      • protocol — технология публикации сервисов, которую должен реализовать speaker. Варианты:
        • bgp.
        • layer2 — использовать L2 LVS.
      • addresses — список диапазонов, где диапазон — это либо подсеть с маской, либо диапазон через “-“.
  • nodeSelector — селектор для основного контроллера. Как в Kubernetes в spec.nodeSelector у pod’ов.
  • tolerations — толерейшны для основного контроллера. Как в Kubernetes в spec.tolerations у pod’ов.