Обновление платформы конфигурируется в ресурсе ModuleConfig deckhouse.

Посмотреть текущую конфигурацию настроек обновления можно с помощью команды:

d8 k get mc deckhouse -oyaml

Пример вывода:

...
spec:
  settings:
    releaseChannel: Stable
    update:
      windows:
        - days:
            - Mon
          from: "19:00"
          to: "20:00"
...

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

Платформа поддерживает три режима обновления:

  • Автоматический + окна обновлений не заданы. Кластер обновится сразу после появления новой версии на соответствующем канале обновлений.
  • Автоматический + заданы окна обновлений. Кластер обновится в ближайшее доступное окно после появления новой версии на канале обновлений.
  • Ручной режим. Для применения обновления требуются ручные действия.

Пример фрагмента конфигурации для включения автоматического обновления платформы:

update:
  mode: Auto

Пример фрагмента конфигурации для включения автоматического обновления платформы с окнами обновлений:

update:
  mode: Auto
  windows:
    - from: "8:00"
      to: "15:00"
      days:
        - Tue
        - Sat

Пример фрагмента конфигурации для включения ручного режима обновления платформы:

update:
  mode: Manual

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

Платформа использует пять каналов обновлений, предназначенных для использования в разных окружениях. Компоненты платформы могут обновляться автоматически, либо с ручным подтверждением по мере выхода обновлений в каналах обновления.

При обновлении платформы компоненты можно разделить на две категории:

  • компоненты управления ресурсами виртуализации (управляющий слой);
  • компоненты запуска виртуальных машин («прошивка»).

Обновление компонентов управляющего слоя не влияет на работу уже запущенных виртуальных машин, но может привести к кратковременному разрыву установленных соединений по VNC/последовательному порту на время рестарта компонента управляющего слоя.

Обновления в прошивке виртуальных машин в процессе обновления платформы могут потребовать миграции виртуальных машин для перехода на новую версию «прошивки». Миграция при обновлении осуществляется один раз. Если она проходит неуспешно, владельцу виртуальной машины потребуется выполнить её самостоятельно, выполнив evict, либо перезагрузку виртуальной машины.

Информацию по версиям, доступным на каналах обновления, можно получить на сайте https://releases.deckhouse.ru/.

Чтобы перейти на другой канал обновлений, в конфигурации модуля deckhouse нужно установить параметр .spec.settings.releaseChannel.

Пример конфигурации модуля deckhouse с установленным каналом обновлений Stable:

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: deckhouse
spec:
  version: 1
  settings:
    releaseChannel: Stable
  • При смене канала обновлений на более стабильный (например, с Alpha на EarlyAccess) Deckhouse скачивает данные о релизе (в примере — из канала EarlyAccess) и сравнивает их с данными из существующих в кластере ресурсов DeckhouseRelease:
    • Более поздние релизы, которые еще не были применены (в статусе Pending), удаляются.
    • Если более поздние релизы уже применены (в статусе Deployed), смены релиза не происходит. В этом случае платформа останется на таком релизе до тех пор, пока на канале обновлений EarlyAccess не появится более поздний релиз.
  • При смене канала обновлений на менее стабильный (например, с EarlyAcess на Alpha):
    • Deckhouse скачивает данные о релизе (в примере — из канала Alpha) и сравнивает их с данными из существующих в кластере ресурсов DeckhouseRelease.
    • Затем платформа выполняет обновление согласно установленным параметрам обновления.

Посмотреть список релизов платформы можно с использованием следующих команд:

d8 k get deckhouserelease
d8 k get modulereleases

Для отключения механизма обновления платформы, удалите в конфигурации модуля deckhouse параметр .spec.settings.releaseChannel. В этом случае платформа не проверяет обновления и обновление на patch-релизы не выполняется.

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

Немедленное применение обновлений

Чтобы применить обновление немедленно, установите в соответствующем ресурсе DeckhouseRelease аннотацию release.deckhouse.io/apply-now: "true".

В этом случае будут проигнорированы окна обновления, настройки canary-release и режим ручного обновления кластера. Обновление применится сразу после установки аннотации.

Пример команды установки аннотации пропуска окон обновлений для версии v1.56.2:

d8 k annotate deckhousereleases v1.56.2 release.deckhouse.io/apply-now="true"

Пример ресурса с установленной аннотацией пропуска окон обновлений:

apiVersion: deckhouse.io/v1alpha1
kind: DeckhouseRelease
metadata:
  annotations:
    release.deckhouse.io/apply-now: "true"