Модуль включен по умолчанию в наборах модулей: 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 deploy/deckhouse -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 deploy/deckhouse -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

  • bundleстрока

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

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

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

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

    Пример:

    bundle: Default
    
  • logLevelстрока

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

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

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

    Пример:

    logLevel: Info
    
  • nodeSelectorобъект

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

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

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

  • releaseChannelстрока

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

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

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

    Пример:

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

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

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

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

    • tolerations.effectстрока
    • tolerations.keyстрока
    • tolerations.operatorстрока
    • tolerations.tolerationSecondsцелочисленный
    • tolerations.valueстрока
  • 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
    
    • update.disruptionApprovalModeстрока

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

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

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

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

    • update.modeстрока

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

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

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

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

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

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

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

    • update.notificationобъект

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

      Имеет эффект только при установленном автоматическом режиме обновлений и только при смене минорных версий Deckhouse (при изменении patch-версий настройки параметра notifications игнорируются).

      Пример:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        Пример:

        minimalNotificationTime: 6h
        
      • update.notification.tlsSkipVerifyбулевый

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

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

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

        URL-адрес webhook’а.

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

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

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

        {
          "version": "1.36",
          "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 is available. Release will be applied at: Friday, 01-Jan-23 14:30:00 UTC"
        }
        

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

        • version — строка, номер минорной версии;
        • requirements — объект, требования к версии;
        • changelogLink — строка, ссылка на список изменений (changelog) минорной версии;
        • applyTime — строка, дата и время запланированного обновления (с учетом установленных окон обновлений) в формате RFC3339;
        • message — строка, текстовое сообщение о доступности новой минорной версии и запланированном времени обновления.

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

        Пример:

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

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

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

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

        Пример:

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

          День недели.

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

          Пример:

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

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

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

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

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

        Пример:

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

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

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

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

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

        Пример:

        to: '18:30'