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

Управлять обновлением DKP можно следующими способами:

  • С помощью параметра settings.update ModuleConfig deckhouse;
  • С помощью секции параметров disruptions NodeGroup.

Конфигурация окон обновлений

Управлять временными окнами, когда Deckhouse будет устанавливать обновления автоматически, можно следующими способами:

Пример настройки двух ежедневных окон обновлений: с 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

Ручное подтверждение обновлений

Ручное подтверждение обновления версии Deckhouse предусмотрено в следующих случаях:

  • Включен режим подтверждения обновлений Deckhouse.

    Это значит, что параметр settings.update.mode ModuleConfig deckhouse установлен в Manual (подтверждение как patch-версии, так и минорной версии Deckhouse) или в AutoPatch (подтверждение минорной версии Deckhouse).

    Для подтверждения обновления необходимо выполнить следующую команду, указав необходимую версию Deckhouse:

    kubectl patch DeckhouseRelease v1.66.2 --type=merge -p='{"approved": true}'
    
  • Включено подтверждение потенциально опасных обновлений (disruptive-обновлений).

    Это значит, что параметр update.disruptionApprovalMode ModuleConfig deckhouse установлен в Manual. Вы можете использовать следующую команду, чтобы установить его в Manual:

    kubectl patch mc deckhouse --type=merge -p='{"spec":{"update":{"disruptionApprovalMode":"Manual"}}}'
    

    Для подтверждения потенциального опасного обновления необходимо установить аннотацию release.deckhouse.io/disruption-approved=true на соответствующем ресурсе DeckhouseRelease.

    Пример:

    kubectl annotate DeckhouseRelease v1.66.2 release.deckhouse.io/disruption-approved=true
    
  • Если для какой-либо группы узлов отключено автоматическое применение потенциально опасных обновлений.

    Это значит, что у NodeGroup, соответствующего группе узлов, установлен параметр spec.disruptions.approvalMode в Manual.

    Для обновления каждого узла в такой группе на узел нужно установить аннотацию update.node.deckhouse.io/disruption-approved=.

    Пример:

    kubectl annotate node ${NODE_1} update.node.deckhouse.io/disruption-approved=
    

Оповещение об обновлении Deckhouse

В режиме обновлений Auto можно настроить вызов webhook’а для получения оповещения о предстоящем обновлении минорной версии Deckhouse.

Пример настройки оповещения:

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: deckhouse
spec:
  version: 1
  settings:
    update:
      releaseChannel: Stable
      mode: Auto
      notification:
        webhook: https://release-webhook.mydomain.com

После появления новой минорной версии Deckhouse на используемом канале обновлений, но до момента применения ее в кластере на адрес webhook’а будет выполнен POST-запрос.

Чтобы всегда иметь достаточно времени для реакции на оповещение об обновлении Deckhouse, достаточно настроить параметр minimalNotificationTime. В этом случае обновление случится по прошествии указанного времени с учетом окон обновлений.

Пример:

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: deckhouse
spec:
  version: 1
  settings:
    update:
      releaseChannel: Stable
      mode: Auto
      notification:
        webhook: https://release-webhook.mydomain.com
        minimalNotificationTime: 8h

Если не указать адрес в параметре update.notification.webhook, но указать время в параметре update.notification.minimalNotificationTime, применение новой версии все равно будет отложено как минимум на указанное в параметре minimalNotificationTime время. В этом случае оповещением о появлении новой версии можно считать появление в кластере ресурса DeckhouseRelease, имя которого соответствует новой версии.

Сбор информации для отладки

О сборе отладочной информации читайте в FAQ.