Настройка режима обновления
Управлять обновлением DKP можно следующими способами:
- С помощью параметра settings.update ModuleConfig
deckhouse
; - С помощью секции параметров disruptions NodeGroup.
Конфигурация окон обновлений
Управлять временными окнами, когда Deckhouse будет устанавливать обновления автоматически, можно следующими способами:
- в параметре update.windows ModuleConfig
deckhouse
, для общего управления обновлениями; - в параметрах disruptions.automatic.windows и disruptions.rollingUpdate.windows NodeGroup, для управления обновлениями, которые могут привести к кратковременному простою в работе системных компонентов.
Пример настройки двух ежедневных окон обновлений: с 8:00 до 10:00 и c 20:00 до 22:00 (UTC):
1apiVersion: deckhouse.io/v1alpha1
2kind: ModuleConfig
3metadata:
4 name: deckhouse
5spec:
6 version: 1
7 settings:
8 releaseChannel: EarlyAccess
9 update:
10 windows:
11 - from: "8:00"
12 to: "10:00"
13 - from: "20:00"
14 to: "22:00"
Также можно настроить обновления в определенные дни, например по вторникам и субботам с 18:00 до 19:30 (UTC):
1apiVersion: deckhouse.io/v1alpha1
2kind: ModuleConfig
3metadata:
4 name: deckhouse
5spec:
6 version: 1
7 settings:
8 releaseChannel: Stable
9 update:
10 windows:
11 - from: "18:00"
12 to: "19:30"
13 days:
14 - Tue
15 - Sat
Ручное подтверждение обновлений
Ручное подтверждение обновления версии Deckhouse предусмотрено в следующих случаях:
-
Включен режим подтверждения обновлений Deckhouse.
Это значит, что параметр settings.update.mode ModuleConfig
deckhouse
установлен вManual
(подтверждение как patch-версии, так и минорной версии Deckhouse) или вAutoPatch
(подтверждение минорной версии Deckhouse).Для подтверждения обновления необходимо выполнить следующую команду, указав необходимую версию Deckhouse:
1kubectl patch DeckhouseRelease v1.66.2 --type=merge -p='{"approved": true}'
-
Если для какой-либо группы узлов отключено автоматическое применение обновлений, которые могут привести к кратковременному простою в работе системных компонентов.
Это значит, что у NodeGroup, соответствующего группе узлов, установлен параметр spec.disruptions.approvalMode в
Manual
.Для обновления каждого узла в такой группе на узел нужно установить аннотацию
update.node.deckhouse.io/disruption-approved=
.Пример:
1kubectl annotate node ${NODE_1} update.node.deckhouse.io/disruption-approved=
Оповещение об обновлении Deckhouse
В режиме обновлений Auto
можно настроить вызов webhook’а для получения оповещения о предстоящем обновлении минорной версии Deckhouse.
Пример настройки оповещения:
1apiVersion: deckhouse.io/v1alpha1
2kind: ModuleConfig
3metadata:
4 name: deckhouse
5spec:
6 version: 1
7 settings:
8 update:
9 releaseChannel: Stable
10 mode: Auto
11 notification:
12 webhook: https://release-webhook.mydomain.com
После появления новой минорной версии Deckhouse на используемом канале обновлений, но до момента применения ее в кластере на адрес webhook’а будет выполнен POST-запрос.
Чтобы всегда иметь достаточно времени для реакции на оповещение об обновлении Deckhouse, достаточно настроить параметр minimalNotificationTime. В этом случае обновление случится по прошествии указанного времени с учетом окон обновлений.
Пример:
1apiVersion: deckhouse.io/v1alpha1
2kind: ModuleConfig
3metadata:
4 name: deckhouse
5spec:
6 version: 1
7 settings:
8 update:
9 releaseChannel: Stable
10 mode: Auto
11 notification:
12 webhook: https://release-webhook.mydomain.com
13 minimalNotificationTime: 8h
Если не указать адрес в параметре update.notification.webhook, но указать время в параметре update.notification.minimalNotificationTime, применение новой версии все равно будет отложено как минимум на указанное в параметре minimalNotificationTime
время. В этом случае оповещением о появлении новой версии можно считать появление в кластере ресурса DeckhouseRelease, имя которого соответствует новой версии.
Сбор информации для отладки
О сборе отладочной информации читайте в FAQ.