Как узнать все параметры Deckhouse?

Все ключевые настройки Deckhouse, включая параметры модулей, хранятся в ConfigMap deckhouse namespace d8-system. Посмотреть содержимое:

kubectl -n d8-system get cm deckhouse -o yaml

Как найти документацию по установленной у меня версии?

Документация запущенной в кластере версии Deckhouse доступна по адресу deckhouse.<cluster_domain>, где <cluster_domain> - DNS имя в соответствии с шаблоном из параметра global.modules.publicDomainTemplate конфигурации.

Как установить желаемый канал обновлений?

Чтобы перейти на другой канал обновлений автоматически, минимизировав переключение версий в кластере, нужно у модуля изменить (установить) параметр releaseChannel. В этом случае включится механизм автоматической стабилизации релизного канала.

Пример конфигурации модуля:

deckhouse: |
  releaseChannel: RockSolid

Как работает автоматическая стабилизация релизного канала?

При указании в конфигурации параметра releaseChannel, Deckhouse сам переключит свой image на соответствующий тег Docker-образа. Дополнительных действий со стороны пользователя не требуется.

Внимание: переключение не происходит мгновенно и зависит от обновлений Deckhouse.

Каждые 10 минут запускается скрипт стабилизации канала обновлений, который реализует следующую логику:

  • Если указанный канал обновлений соответствует тегу Docker-образа Deckhouse — ничего не произойдет;
  • При смене канала обновлений на более стабильный (например с Alpha на EarlyAccess) будет произведен плавный переход:

    • Сначала проверяется равенство digest для тегов Docker-образов, соответствующих текущему каналу обновлений и ближайшему к нему более стабильному (в примере — это каналы Alpha и Beta).

    • Если digest’ы равны, будет проверен следующий по очереди тег (в примере, это тэг соответствующий каналу обновлений EarlyAccess).

    • В результате, Deckhouse будет переключен на более стабильный канал обновлений c digest’ом, равным текущему.

  • Если указан менее стабильный канал обновлений, чем тот, который соответствует текущему тегу Docker-образа Deckhouse — будет выполнена сверка digest’ов, соответствующих образам Docker для текущего канала обновлений и следующего, менее стабильного. Например, если необходимо перейти на канал Alpha с текущего канала EarlyAccess, — сравнивается EarlyAccess и Beta:

    • Если digest не равны, Deckhouse будет переключен на следующий канал обновлений (в нашем случае на Beta). Это необходимо, чтобы не пропустить важные миграции, которые выполняются при обновлении Deckhouse.

    • Если digest равны, будет проверен следующий по убыванию стабильности канал обновлений (в нашем случае Alpha).

    • Когда проверка дойдет до желаемого канала обновлений (в примере — Alpha), переключение Deckhouse произойдет независимо от равенства digest.

В итоге, постоянный запуск скрипта стабилизации рано или поздно приведет Deckhouse к состоянию, при котором тег его Docker-образа будет соответствовать заданному каналу обновлений.

Как запускать Deckhouse на произвольном узле?

Нужно у модуля deckhouse установить соответствующий параметр nodeSelector и не задавать tolerations. Необходимые значения tolerations в этом случае будут проставлены автоматически.

Также стоит избегать использования узлов CloudEphemeral. В противном случае может произойти ситуация, когда целевого узла нет в кластере и его заказ по какой-то причине невозможен.

Пример конфигурации модуля:

deckhouse: |
  nodeSelector:
    node-role.deckhouse.io/deckhouse: ""

Как установить Deckhouse из стороннего registry?

При установке, Deckhouse можно настроить на работу из стороннего registry (например, проксирующий registry внутри закрытого контура).

Установка

Настройка

Установить следующие параметры в ресурсе InitConfiguration:

  • imagesRepo: <PROXY_REGISTRY>/<DECKHOUSE_REPO_PATH>/<DECKHOUSE_REVISION>. Адрес образа Deckhouse в стороннем registry, с учетом используемой редакции (ce/ee/fe). Пример: registry.deckhouse.io/deckhouse/ce.
  • registryDockerCfg: <BASE64>. Права доступа к стороннему registry в BASE64.

Если разрешен анонимный доступ к образам Deckhouse в стороннем registry, то registryDockerCfg должен выглядеть следующим образом:

{"auths": { "<PROXY_REGISTRY>": {}}}

Приведенное значение должно быть закодировано в BASE64.

Если для доступа к образам Deckhouse в стороннем registry необходима аутентификация, то registryDockerCfg должен выглядеть следующим образом:

{"auths": { "<PROXY_REGISTRY>": {"username":"<PROXY_USERNAME>","password":"<PROXY_PASSWORD>","auth":"<AUTH_BASE64>"}}}

где <AUTH_BASE64> — это строка вида <PROXY_USERNAME>:<PROXY_PASSWORD>, закодированная в BASE64.

Итоговое значение для registryDockerCfg должно быть закодировано в BASE64.

  • <PROXY_USERNAME> — имя пользователя для аутентификации на <PROXY_REGISTRY>.
  • <PROXY_PASSWORD> — пароль пользователя для аутентификации на <PROXY_REGISTRY>.
  • <PROXY_REGISTRY> — адрес стороннего registry в виде <HOSTNAME>[:PORT].

Для настройки нестандартных конфигураций сторонних registry предназначены еще два параметра в ресурсе InitConfiguration:

  • registryCA - корневой серфитификат, которым можно проверить сертификат registry (если registry использует самоподписанные сертификаты).
  • registryScheme - протокол доступа к registry (HTTP или HTTPS). По умолчанию используется HTTPS.

Bootstrap

Укажите для dhctl следующий параметр, чтобы он использовал образы control-plane из стороннего registry вместо публичного (k8s.gcr.io): --dont-use-public-control-plane-images.

Особенности настройки сторонних registry

Внимание: Deckhouse поддерживает работу только с Bearer token схемой авторизации в registry.

Nexus

При использовании Nexus в режиме registry-прокси необходимо соблюдение нескольких условий:

  • Включить Docker Bearer Token Realm

  • Включить анонимный доступ к registry (без анонимного доступа не работает Bearer Token авторизация)

  • Установить Maximum metadata age в 0 (иначе ломается автоапдейт Deckhouse)

Как переключить работающий кластер Deckhouse на использование стороннего registry?

  • Изменить секрет d8-system/deckhouse-registry.
    • Исправить .dockerconfigjson на данные, соответствующие авторизации в новом registry.
    • Исправить address на адрес нового registry (например, registry.example.com).
    • Исправить path на путь к репозиторию deckhouse в новом registry (например, /deckhouse/fe).
    • При необходимости изменить scheme на http (если используется http registry).
    • При необходимости изменить или добавить поле ca куда внести корневой сертификат, который будет использован для проверки сертификата registry (в случае, если registry использует самоподписные сертификаты).
  • Выполнить рестарт пода Deckhouse’а.
  • Дождаться окончания конвержа Deckhouse’a.
  • Дождаться пока bashible применит новые настройки на мастер-ноде.
  • Поправить поле image в деплойменте d8-system/deckhouse на адрес образа Deckhouse’a в новом registry.