Этот модуль настраивает в 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 уже поменялся на новую версию, но при этом процесс обновления всех компонентов кластера идет асинхронно, так как зависит от многих настроек.
  • Superseded — релиз устарел и больше не используется.
  • 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/ee:v1.30.5.

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

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