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

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

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

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

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

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

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

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

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

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

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

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

Чтобы настроить модуль, используйте custom resource ModuleConfig с именем network-gateway (подробнее о настройке Deckhouse…).

Пример ресурса ModuleConfig/network-gateway для настройки модуля:

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: network-gateway
spec:
  version: 1
  enabled: true
  settings: # <-- Параметры модуля из раздела "Параметры" ниже.

Параметры

Версия схемы: 1

  • settings
    объект
    • settings.disableDHCP
      булевый

      Отключает DHCP-сервер.

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

    • settings.dns
      объект

      Настройки, которые будут переданы клиентам через DHCP.

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

        Список search-доменов.

        Пример:

        search:
        - office.example.com
        - srv.example.com
        
      • settings.dns.servers
        массив строк

        Список DNS-серверов.

        Пример:

        servers:
        - 4.2.2.2
        - 8.8.8.8
        
    • settings.nodeSelector
      объект

      Cелектор, который идентифицирует узлы, на которых будут настроены правила iptables и на которых будет работать DHCP-сервер.

      Структура, аналогичная spec.nodeSelector пода Kubernetes. Поды инстанса унаследуют это поле как есть.

      Пример:

      nodeSelector:
        type: network-gateway
      
    • settings.publicAddress
      строка

      Адрес, на который будет заменен src-адрес исходящих из локальной сети пакетов.

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

      Пример:

      publicAddress: 10.220.203.240
      
    • settings.storageClass
      строка

      Имя StorageClass’а, который будет использоваться для хранения DHCP lease.

      Если не указано, используется StorageClass существующей PVC, а если PVC пока нет, используется или глобальный StorageClass, или global.discovery.defaultStorageClass, а если и их нет, данные сохраняются в emptyDir.

      global.discovery.defaultStorageClass применяется только при включении модуля, смена StorageClass по умолчанию в кластере не приведет к перезаказу диска.

      Dnsmasq, на котором основан наш DHCP-сервер, имеет свои механизмы защиты от дублирования IP-адресов в случае утери базы с lease’ами, но лучше ее не терять.

    • settings.subnet
      строка

      Адрес локальной подсети, которую должен обслуживать шлюз.

      На основе этого адреса будут сформированы DHCP-опции для выдачи клиентам:

      • пул адресов — номера с 50 по последний;
      • роутер — первый адрес в подсети.

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

      Пример:

      subnet: 192.168.42.0/24
      
    • settings.tolerations
      массив объектов

      Toleration’ы для подов c DHCP и с настройщиками iptables.

      Стандартный список toleration. Поды инстанса унаследуют это поле как есть.

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