Deckhouse Kubernetes Platform (DKP) поддерживает гибкий механизм обновлений. Вы можете выбрать канал обновлений и настроить режим установки новых версий. Каналы обновлений помогают сбалансировать скорость получения новых функций и стабильность.
Настроив режим обновлений, можно включить автоматическую установку новых версий или управлять ею вручную, а также задать окна обновлений — допустимые интервалы времени для выполнения обновлений. Такая настройка исключает установку в неподходящее время и обеспечивает контроль над переходом на новые релизы.
Актуальная информация о версиях DKP на разных каналах обновлений доступна на сайте releases.deckhouse.ru.
Проверка текущего канала обновлений
Чтобы узнать, какой канал обновлений используется в кластере, выполните следующую команду:
d8 k get mc deckhouse -o yaml | grep releaseChannel
Пример вывода:
releaseChannel: Stable
Смена канала обновлений
Чтобы сменить канал обновлений, укажите его название в параметре settings.releaseChannel
модуля deckhouse
.
Пример конфигурации с каналом Stable
:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: deckhouse
spec:
version: 1
settings:
releaseChannel: Stable
Режимы обновления
DKP поддерживает три режима обновления, которые определяют порядок перехода на новую версию:
- Автоматический режим (без окон обновлений) — кластер обновляется сразу после появления новой версии на используемом канале обновлений.
- Автоматический режим (с окнами обновлений) — кластер обновляется в ближайшее доступное окно после появления новой версии на канале обновлений.
- Ручной режим — для применения обновления его необходимо подтвердить вручную.
Проверка текущего режима обновления
Чтобы узнать, какой режим обновления используется в кластере,
проверьте конфигурацию модуля deckhouse
с помощью следующей команды:
d8 k get mc deckhouse -o yaml
Пример вывода:
spec:
settings:
releaseChannel: Stable
update:
windows:
- days:
- Mon
from: "19:00"
to: "20:00"
Автоматическое обновление
Автоматический режим активируется при указании параметра releaseChannel
в конфигурации модуля deckhouse
.
При выполнении этого условия:
- DKP раз в минуту проверяет канал обновлений на наличие нового релиза.
- При появлении нового релиза DKP скачивает его в кластер и создает кастомный ресурс DeckhouseRelease.
- После появления кастомного ресурса DeckhouseRelease в кластере DKP выполняет обновление на соответствующую версию согласно установленным параметрам обновления (по умолчанию — автоматически, в любое время).
Чтобы посмотреть список и состояние всех релизов в кластере, воспользуйтесь командой:
d8 k get deckhousereleases
Начиная с версии DKP 1.70, патч-версии обновлений (например, обновление на версию 1.70.2
при установленной версии 1.70.1
) устанавливаются с учетом окон обновлений. До версии DKP 1.70 патч-версии обновлений устанавливаются без учета режима и окон обновлений.
Закрепление релиза
Под закреплением релиза подразумевается полное или частичное отключение автоматического обновления.
Есть три варианта ограничения автоматического обновления Deckhouse:
-
Установить режим ручного подтверждения обновлений.
В этом случае DKP будет получать обновления в кластер, но для применения патч-версий и минорных версий потребуется ручное подтверждение.
Чтобы установить режим ручного подтверждения обновлений, задайте значение
Manual
для параметраsettings.update.mode
в настройках модуляdeckhouse
с помощью следующей команды:d8 k patch mc deckhouse --type=merge -p='{"spec":{"settings":{"update":{"mode":"Manual"}}}}'
Чтобы подтвердить обновление, выполните следующую команду, указав необходимую версию DKP вместо
<DECKHOUSE-VERSION>
:d8 k patch DeckhouseRelease <DECKHOUSE-VERSION> --type=merge -p='{"approved": true}'
-
Установить режим автоматического обновления для патч-версий.
В этом случае DKP будет получать обновления в кластер, но для применения минорных версий потребуется ручное подтверждение. Патч-версии в рамках текущей минорной версии будут устанавливаться автоматически с учётом окон обновлений, если они заданы.
Например, если у вас установлена версия DKP
v1.70.1
, после установки этого режима Deckhouse сможет автоматически обновиться до версииv1.70.2
, но не будет обновляться до версииv1.71.*
без ручного подтверждения.Чтобы установить режим автоматического обновления для патч-версий, задайте значение
AutoPatch
для параметраsettings.update.mode
в настройках модуляdeckhouse
с помощью следующей команды:d8 k patch mc deckhouse --type=merge -p='{"spec":{"settings":{"update":{"mode":"AutoPatch"}}}}'
Чтобы подтвердить обновление для минорной версии, выполните следующую команду, указав необходимую версию DKP вместо
<DECKHOUSE-VERSION>
:d8 k patch DeckhouseRelease <DECKHOUSE-VERSION> --type=merge -p='{"approved": true}'
-
Установить тег необходимой версии DKP для Deployment
deckhouse
и удалить параметрreleaseChannel
из конфигурации модуляdeckhouse
.В этом случае DKP останется на указанной версии и никакая информация о новых доступных версиях (объекты DeckhouseRelease) в кластере появляться не будет.
Важно. Этот режим заблокирует установку патч-релизов, которые могут содержать исправления критических уязвимостей и ошибок.
Пример установки версии
v1.66.3
для DKP EE и удаления параметраreleaseChannel
из конфигурации модуляdeckhouse
:d8 k -ti -n d8-system exec svc/deckhouse-leader -c deckhouse -- kubectl set image deployment/deckhouse deckhouse=registry.deckhouse.ru/deckhouse/ee:v1.66.3 d8 k patch mc deckhouse --type=json -p='[{"op": "remove", "path": "/spec/settings/releaseChannel"}]'
Ручное подтверждение обновлений
Ручное подтверждение обновления версии DKP предусмотрено в следующих случаях:
-
Включен режим подтверждения обновлений DKP.
Это значит, что для параметра
settings.update.mode
модуляdeckhouse
задано значениеManual
(подтверждение как патч-версии, так и минорной версии DKP) илиAutoPatch
(подтверждение минорной версии DKP).Для подтверждения обновления выполните следующую команду, указав необходимую версию DKP вместо
<DECKHOUSE-VERSION>
:d8 k patch DeckhouseRelease <DECKHOUSE-VERSION> --type=merge -p='{"approved": true}'
-
Если для какой-либо группы узлов отключено автоматическое применение обновлений, которые могут привести к кратковременному простою в работе системных компонентов.
Это значит, что для параметра
spec.disruptions.approvalMode
у соответствующего ресурса NodeGroup задано значениеManual
.Для обновления узлов в такой группе установите аннотацию
update.node.deckhouse.io/disruption-approved=
на каждый узел.Пример:
d8 k annotate node ${NODE_1} update.node.deckhouse.io/disruption-approved=
Окна обновлений
DKP позволяет задавать окна обновлений — временные интервалы, в которые будет выполняться установка обновлений в автоматическом режиме. Используя окна обновлений, вы исключаете вероятность установки нового релиза в неподходящее время или в периоды высокой нагрузки на кластер.
Установка обновлений при настроенных окнах обновлений
- Если окна обновлений настроены, DKP будет устанавливать новые версии только в указанные временные интервалы.
- Если окна обновлений не настроены, установка начнется сразу после появления новой версии в настроенном канале обновлений.
Настройка окон обновлений
Управлять окнами обновлений DKP можно следующими способами:
- для общего управления обновлениями используйте параметр
update.windows
модуляdeckhouse
; - для управления обновлениями, которые могут привести к кратковременному простою в работе системных компонентов, используйте параметры
disruptions.automatic.windows
иdisruptions.rollingUpdate.windows
ресурса NodeGroup.
Примеры конфигурации
-
Два ежедневных окна обновлений с 8:00 до 10:00 и c 20:00 до 22:00 (UTC):
apiVersion: deckhouse.io/v1alpha1 kind: ModuleConfig metadata: name: deckhouse spec: version: 1 settings: releaseChannel: EarlyAccess update: windows: - from: "8:00" to: "10:00" - from: "20:00" to: "22:00"
-
Окна обновлений по вторникам и субботам с 18:00 до 19:30 (UTC):
apiVersion: deckhouse.io/v1alpha1 kind: ModuleConfig metadata: name: deckhouse spec: version: 1 settings: releaseChannel: Stable update: windows: - from: "18:00" to: "19:30" days: - Tue - Sat