Доступно только в 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 deploy/deckhouse -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 deploy/deckhouse -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

  • disableDHCPбулевый

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

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

  • dnsобъект

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

    • dns.searchмассив строк

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

      Пример:

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

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

      Пример:

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

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

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

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

    Пример:

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

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

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

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

    Пример:

    publicAddress: 10.220.203.240
    
  • storageClassстрока

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

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

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

  • 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
    
  • tolerationsмассив объектов

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

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

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