Этот модуль настраивает в Deckhouse:

  • Уровень логирования
  • Набор модулей, включенных по умолчанию

    Обычно используется набор модулей Default, который подходит в большинстве случаев.

    Независимо от используемого набора включенных по умолчанию модулей, любой модуль может быть явно включен или выключен в конфигурации Deckhouse (подробнее про включение и отключение модуля).

  • Канал обновлений

    В Deckhouse реализован механизм автоматического обновления. Этот механизм использует 5 каналов обновлений, различающиеся стабильностью и частотой выхода версий. Ознакомьтесь подробнее с тем, как работает механизм автоматического обновления и как установить желаемый канал обновлений.

  • Режим обновлений и окна обновлений

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

    В ручном режиме обновлений автоматически применяются только важные исправления (patch-релизы), и для перехода на более свежий релиз Deckhouse требуется ручное подтверждение.

    В автоматическом режиме обновлений, если в кластере не установлены окна обновлений, переход на более свежий релиз Deckhouse осуществляется сразу после его появления на соответствующем канале обновлений. Если же в кластере установлены окна обновлений, то переход на более свежий релиз Deckhouse начнется в ближайшее доступное окно обновлений, после появления свежего релиза на соответствующем канале обновлений.

  • Сервис валидирования custom resource’ов

    Сервис валидирования предотвращает создание custom resource’ов с некорректными данными или внесение таких данных в уже существующие custom resource’ы. Отслеживаются только custom resource’ы, находящиеся под управлением модулей Deckhouse.

Обновление релизов Deckhouse

Просмотр статуса релизов Deckhouse

Список последних релизов в кластере можно получить командной kubectl get deckhousereleases. По-умолчанию хранятся 10 последних релизов и все будущие. Каждый релиз может иметь один из следующих статусов:

  • Pending - релиз находится в ожидании, ждет окна обновления, настроек канареечного развертывания и т.д. Подробности можно увидеть с помощью команды kubectl describe deckhouserelease $name.
  • Deployed - релиз применен. Это значит, что образ deckhouse уже поменялся на новую версию, но при этом процесс обновления всех компонентов кластера идет асинхронно, так как зависит от многих настроек.
  • Outdated - релиз устарел и больше не используется.
  • Suspended - релиз был отменен (например в нем обнаружилась ошибка). Релиз переходит в этот статус, если его отменили и при этом он еще был применен в кластере.

Процесс обновления

В момент перехода в статус Deployed релиз меняет версию (tag) образа Deckhouse. После запуска Deckhouse начнет проверку обновление всех модулей, которые поменялись с предыдущего релиза. Длительность обновления сильно зависит от настроек и размера кластера Например, если у вас много NodeGroup, они будут обновляться продолжительное время, если много IngressNginxController - они будут обновляться по одному и это тоже займет некоторое время.

Ручное применение релизов

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

“Закрепление” релиза

“Закрепление” релиза нужно, если вы по какой-то причине не хотите обновлять Deckhouse.

Есть три варианта “закрепления” релиза:

  • Установить ручной режим обновления. В этом случае вы остановитесь на текущем релизе, но будете получать patch-релизы, а minor-релиз не будет обновляться без явного одобрения.

    Например: текущий релиз v1.29.3, после установки ручного режима обновлений Deckhouse сможет обновиться до версии v1.29.9, но не будет обновляться на релиз v1.30.0

  • Установить конкретный тэг для deployment/deckhouse. В таком случае, Deckhouse останется на этом релизе до выхода следующего patch/minor релиза. Это может понадобиться, если в какой-то версии Deckhouse обнаружилась ошибка, которой не было раньше, и вы хотите откатиться на предыдущий релиз, но обновиться, как только выйдет релиз с исправлением данной ошибки.

    Например: kubectl -n d8-system set image deployment/deckhouse deckhouse=registry.deckhouse.io/deckhouse/fe:v1.30.5

  • Установить конкретный тэг для deployment/deckhouse и удалить releaseChannel из ConfigMap deckhouse. В таком случае вы останетесь на конкретной версии Deckhouse и не будете получать обновлений.

      $ kubectl -n d8-system set image deployment/deckhouse deckhouse=registry.deckhouse.io/deckhouse/fe:v1.30.5
      $ kubectl -n d8-system edit cm deckhouse
        // удалить releaseChannel