Модуль включен по умолчанию в наборах модулей: Default, Managed, Minimal.

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

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

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

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

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

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

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

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

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

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

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

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

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

Параметры

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

  • settings
    объект
    • settings.bundle
      строка

      Набор модулей Deckhouse. Определяет включенные по умолчанию модули:

      • Default — рекомендованный набор модулей для работы кластера: мониторинга, контроля авторизации, организации работы сети и других потребностей.
      • Managed — набор для managed-кластеров от облачных провайдеров (например, Google Kubernetes Engine).
      • Minimal — минимально возможный набор, который включает единственный модуль (этот). Обратите внимание, что в набор модулей Minimal не включен ряд базовых модулей (например, модуль работы с CNI). Deckhouse с набором модулей Minimal без включения базовых модулей сможет работать только в уже развернутом кластере.

      По умолчанию: "Default"

      Допустимые значения: Default, Minimal, Managed

      Пример:

      bundle: Default
      
    • settings.highAvailability
      булевый

      Ручное управление режимом отказоустойчивости.

      По умолчанию режим отказоустойчивости определяется автоматически. Подробнее про режим отказоустойчивости.

      Пример:

      highAvailability: true
      
    • settings.logLevel
      строка

      Уровень логирования Deckhouse.

      По умолчанию: "Info"

      Допустимые значения: Debug, Info, Error

      Пример:

      logLevel: Info
      
    • settings.nodeSelector
      объект

      Структура, аналогичная spec.nodeSelector пода Kubernetes.

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

      Внимание! Deckhouse перестанет работать, если в nodeSelector указать несуществующий лейбл. Для восстановления работоспособности необходимо изменить значения на правильные в ModuleConfig/deckhouse и deployment/deckhouse.

    • settings.releaseChannel
      строка

      Желаемый канал обновлений Deckhouse (переключение на него произойдет при появлении такой возможности).

      Порядок возрастания стабильности канала обновлений (от наименее стабильного к наиболее стабильному): Alpha, Beta, EarlyAccess, Stable, RockSolid.

      Допустимые значения: Alpha, Beta, EarlyAccess, Stable, RockSolid

      Пример:

      releaseChannel: Stable
      
    • settings.tolerations
      массив объектов

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

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

      Внимание! Deckhouse перестанет работать, если указать некорректные tolerations. Для восстановления работоспособности необходимо изменить значения на корректные в ModuleConfig/deckhouse и deployment/deckhouse.

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

      Настройки режима и окон обновления Deckhouse.

      Пример:

      update:
        windows:
        - from: '8:00'
          to: '15:00'
          days:
          - Tue
          - Sat
        disruptionApprovalMode: Manual
        notification:
          webhook: https://release-webhook.mydomain.com
          minimalNotificationTime: 6h
          auth:
            basic:
              username: user
              password: password
      
      • settings.update.disruptionApprovalMode
        строка

        Режим обновления версий Deckhouse, имеющих disruptions (потенциально опасные изменения):

        • Auto — автоматический режим обновления.
        • Manual — ручной режим обновления. Для применения обновления нужно установить аннотацию release.deckhouse.io/disruption-approved=true на соответствующий ресурс DeckhouseRelease.

        По умолчанию: "Auto"

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

      • settings.update.mode
        строка

        Режим обновления минорных версий Deckhouse (обновление релиза). Не влияет на обновление patch-версий (patch-релизов).

        • AutoPatch — автоматический режим обновления для патч-версий. Ручной режим обновления для минорных версий (например, обновление релиза с v1.62.* на v1.63.*).

          Для подтверждения обновления минорной версии, в соответствующем custom resource DeckhouseRelease необходимо установить поле approved в true.

        • Auto — автоматический режим обновления.

          Обновления минорной версии Deckhouse (обновление релиза, например, с v1.26.* на v1.27.*) применяются с учетом заданных окон обновлений либо, если окна обновлений не заданы, по мере появления обновлений на соответствующем канале обновлений.

        • Manual — ручной режим обновления минорной версии Deckhouse (обновление релиза, например, с v1.26.* на v1.27.*) необходимо подтверждение.

          Для подтверждения обновления в соответствующем custom resource DeckhouseRelease необходимо установить поле approved в true.

        По умолчанию: "AutoPatch"

        Допустимые значения: AutoPatch, Auto, Manual

      • settings.update.notification
        объект

        Настройка оповещений о запланированном обновлении Deckhouse.

        Имеет эффект только при установленном автоматическом режиме обновлений.

        Пример:

        notification:
          webhook: https://release-webhook.mydomain.com
          minimalNotificationTime: 8h
        
        • settings.update.notification.auth
          объект

          Структура, описывающая способ авторизации на webhook.

          Если не указано, авторизация не используется.

          • settings.update.notification.auth.basic
            объект

            Basic-аутентификация на webhook.

            • settings.update.notification.auth.basic.password
              строка

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

              Пароль для авторизации на webhook.

              Имя и пароль пользователя будут в заголовке Authorization в формате Basic <base64(username:password)>.

            • settings.update.notification.auth.basic.username
              строка

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

              Имя пользователя для авторизации на webhook.

              Имя и пароль пользователя будут в заголовке Authorization в формате Basic <base64(username:password)>.

          • settings.update.notification.auth.bearerToken
            строка

            Токен для авторизации на webhook.

            Токен будет в заголовке Authorization в формате Bearer <token>.

        • settings.update.notification.minimalNotificationTime
          строка

          Минимальное время, которое должно пройти перед обновлением с момента появления новой минорной версии Deckhouse на используемом канале обновлений.

          Задается в виде строки с указанием часов и минут: 30m, 1h, 2h30m, 24h.

          Механизм обновления гарантирует, что Deckhouse не обновится, пока не пройдет указанный период времени.

          При использовании окон обновлений обновление Deckhouse произойдет в ближайшее возможное окно обновлений, но не ранее чем истечет указанное в minimalNotificationTime время.

          Шаблон: ^([0-9]+h([0-9]+m)?|[0-9]+m)$

          Пример:

          minimalNotificationTime: 6h
          
        • settings.update.notification.releaseType
          строка

          Определяет тип версии, о которой будет отправлено оповещение:

          • Minor — только для обновления минорной версии.
          • All — для любых обновлений, включая обновление патч-версии.

          По умолчанию: "Minor"

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

          Пример:

          releaseType: All
          
        • settings.update.notification.tlsSkipVerify
          булевый

          Пропустить валидацию TLS-сертификата при запросе webhook.

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

        • settings.update.notification.webhook
          строка

          URL-адрес webhook’а.

          Вызов webhook’а произойдет после появления новой минорной версии Deckhouse на используемом канале обновлений, но до момента ее применения в кластере.

          Используйте параметр minimalNotificationTime при необходимости установить минимальное время, которое должно пройти перед обновлением с момента появления новой минорной версии Deckhouse на используемом канале обновлений.

          На адрес webhook’а выполняется POST-запрос с Content-Type: application/json. Пример содержания запроса:

          {
            "subject":"Deckhouse",
            "version": "1.36.0",
            "requirements":  {"k8s": "1.20.0"},
            "changelogLink": "https://github.com/deckhouse/deckhouse/changelog/1.36.md",
            "applyTime": "2023-01-01T14:30:00Z00:00",
            "message": "New Deckhouse Release 1.36.0 is available. Release will be applied at: Friday, 01-Jan-23 14:30:00 UTC"
          }
          

          Описание полей POST-запроса:

          • subject — строка, тип события обновления. Возможные значения: Deckhouse, Module;
          • moduleName — строка, имя модуля. Устанавливается только если subject: Module
          • version — строка в формате x.y.z (семантическое версионирование);
          • requirements — объект, требования к версии;
          • changelogLink — строка, ссылка на список изменений (changelog) минорной версии;
          • applyTime — строка, дата и время запланированного обновления (с учетом установленных окон обновлений) в формате RFC3339;
          • message — строка, текстовое сообщение о доступности новой минорной версии и запланированном времени обновления.

          Шаблон: ^https?://[^\s/$.?#].[^\s]*$

          Пример:

          webhook: https://webhook.site/#!/bc8f71ac-c182-4181-9159-6ba6950afffa
          
      • settings.update.windows
        массив объектов

        Список окон обновлений в течение суток.

        • settings.update.windows.days
          массив строк

          Дни недели, в которые применяется окно обновлений.

          Пример:

          days:
          - Mon
          - Wed
          
          • Элемент массива
            строка

            День недели.

            Допустимые значения: Mon, Tue, Wed, Thu, Fri, Sat, Sun

            Пример:

            Mon
            
        • settings.update.windows.from
          строка

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

          Время начала окна обновления (в часовом поясе UTC).

          Должно быть меньше времени окончания окна обновления.

          Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

          Пример:

          from: '13:00'
          
        • settings.update.windows.to
          строка

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

          Время окончания окна обновления (в часовом поясе UTC).

          Должно быть больше времени начала окна обновления.

          Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

          Пример:

          to: '18:30'