Как узнать все параметры Deckhouse?
Все ключевые настройки конфигурации Deckhouse, включая параметры модулей, хранятся в ConfigMap’е deckhouse
пространства имён d8-system
.
Чтобы посмотреть конфигурацию Deckhouse, воспользуйтесь командной:
kubectl -n d8-system get cm deckhouse -o yaml
Как найти документацию по установленной у меня версии?
Документация доступна внутри кластера при включенном модуле deckhouse-web (включен по умолчанию, кроме варианта поставки
Minimal
).
Документация запущенной в кластере версии Deckhouse доступна по адресу deckhouse.<cluster_domain>
, где <cluster_domain>
— DNS имя в соответствии с шаблоном из параметра global.modules.publicDomainTemplate
конфигурации.
Как установить желаемый канал обновлений?
Чтобы перейти на другой канал обновлений автоматически, нужно в конфигурации модуля deckhouse
изменить
(установить) параметр releaseChannel
.
В этом случае включится механизм автоматической стабилизации релизного канала.
Пример конфигурации модуля:
deckhouse: |
releaseChannel: Stable
Как отключить автоматическое обновление?
Чтобы полностью отключить механизм обновления Deckhouse, удалите в конфигурации модуля deckhouse
параметр releaseChannel
.
В этом случае Deckhouse не проверяет обновления, и даже обновление на patch-релизы не выполняется.
Крайне не рекомендуется отключать автоматическое обновление! Это заблокирует обновления на patch-релизы, которые могут содержать исправления критических уязвимостей и ошибок.
Как работает автоматическое обновление Deckhouse?
При указании в конфигурации модуля deckhouse
параметра releaseChannel
, Deckhouse будет каждую минуту проверять данные о релизе на канале обновлений.
При появлении нового релиза Deckhouse скачивает его в кластер и создает custom resource DeckhouseRelease
.
После появления custom resource’а DeckhouseRelease
в кластере Deckhouse выполняет обновление на соответствующую версию согласно установленным параметрам обновления (по-умолчанию — автоматически, в любое время).
Чтобы посмотреть список и состояние всех релизов, воспользуйтесь командной:
kubectl get deckhousereleases
Patch-релизы (например, обновление на версию
1.30.2
при установленной версии1.30.1
) устанавливаются без учета режима и окон обновления, т.е. при появлении на канале обновления patch-релиза, он всегда будет установлен.
Что происходит при смене канала обновлений?
- При смене канала обновлений на более стабильный (например с
Alpha
наEarlyAccess
) Deckhouse скачивает данные о релизе (в примере — из каналаEarlyAccess
) и сравнивает их с данными из существующих в кластере custom resouce’овDeckhouseRelease
:- Более поздние релизы, которые еще не были применены (в статусе
Pending
), — удаляются. - Если более поздние релизы уже применены (в статусе
Deployed
), то смены релиза не происходит. В этом случае Deckhouse останется на таком релизе до тех пор, пока на канале обновленийEarlyAccess
не появится более поздний релиз.
- Более поздние релизы, которые еще не были применены (в статусе
- При смене канала обновлений на менее стабильный (например с
EarlyAcess
наAlpha
):- Deckhouse скачивает данные о релизе (в примере — из канала
Alpha
) и сравнивает их с данными из существующих в кластере custom resource’овDeckhouseRelease
. - Затем Deckhouse выполняет обновление согласно установленным параметрам обновления.
- Deckhouse скачивает данные о релизе (в примере — из канала
Как запускать Deckhouse на произвольном узле?
Для запуска 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. Пример:imagesRepo: 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>"}}}
где:
<PROXY_USERNAME>
— имя пользователя для аутентификации на<PROXY_REGISTRY>
;<PROXY_PASSWORD>
— пароль пользователя для аутентификации на<PROXY_REGISTRY>
;<PROXY_REGISTRY>
— адрес стороннего registry в виде<HOSTNAME>[:PORT]
;<AUTH_BASE64>
— строка вида<PROXY_USERNAME>:<PROXY_PASSWORD>
, закодированная в Base64.
Итоговое значение для registryDockerCfg
должно быть также закодировано в Base64.
Для настройки нестандартных конфигураций сторонних registry в ресурсе InitConfiguration
предусмотрены еще два параметра:
registryCA
— корневой сертификат, которым можно проверить сертификат registry (если registry использует самоподписанные сертификаты);registryScheme
— протокол доступа к registry (http
илиhttps
). По умолчанию -https
.
Установка
Укажите для dhctl
параметр --dont-use-public-control-plane-images
, чтобы он использовал образы control-plane
из стороннего registry, вместо публичного (k8s.gcr.io
).
Особенности настройки сторонних registry
Внимание: Deckhouse поддерживает работу только с Bearer token-схемой авторизации в registry.
Nexus
При использовании Nexus в режиме registry-прокси необходимо соблюдение нескольких условий:
-
Включить
Docker Bearer Token Realm
: -
Включить анонимный доступ к registry (иначе не будет работать Bearer token-авторизация):
-
Установить
Maximum metadata age
в 0 (иначе автоматическое обновление Deckhouse не будет работать корректно из-за кеширования):
Harbor
Необходимо использовать такой функционал Harbor, как Proxy Cache.
- Настройте Registry:
Administration -> Registries -> New Endpoint
.Provider
:Docker Registry
.Name
— укажите любое, на ваше усмотрение.Endpoint URL
:https://registry.deckhouse.io
.- Укажите
Access ID
иAccess Secret
, если используете Deckhouse Enterprise Edition, иначе оставьте пустыми.
- Создайте новый проект:
Projects -> New Project
.Project Name
будет частью URL. Используйте любой, например,d8s
.Access Level
:Public
.Proxy Cache
— включите и выберите в списке Registry, созданный на предыдущем шаге.
В результате образы Deckhouse будут доступны по адресу, например, https://your-harbor.com/d8s/deckhouse/{d8s-edition}:{d8s-version}
.
Как переключить работающий кластер Deckhouse на использование стороннего registry?
Для переключения кластера Deckhouse на использование стороннего registry необходимо выполнить следующие действия:
- Изменить поле
image
в Deploymentd8-system/deckhouse
на адрес образа Deckhouse в новом registry; - Изменить Secret
d8-system/deckhouse-registry
(все параметры хранятся в кодировке Base64):- Исправить
.dockerconfigjson
с учетом авторизации в новом registry. - Исправить
address
на адрес нового registry (например,registry.example.com
). - Исправить
path
на путь к репозиторию Deckhouse в новом registry (например,/deckhouse/fe
). - При необходимости изменить
scheme
наhttp
(если используется HTTP registry). - Если registry использует самоподписные сертификаты, то изменить или добавить поле
ca
, куда внести корневой сертификат соответствующего сертификата registry;
- Исправить
- Дождаться перехода Pod’а Deckhouse в статус
Ready
. Если Pod будет находиться в статусеImagePullBackoff
, то перезапустите его. - Дождаться применения bashible новых настроек на master-узле. В журнале bashible на master-узле (
journalctl -u bashible
) должно появится сообщениеConfiguration is in sync, nothing to do
. - Только если обновление Deckhouse через сторонний registry не планируется, то следует удалить
releaseChannel
из конфигмапаd8-system/deckhouse
.