How do I find out all Deckhouse parameters?
| Как узнать все параметры Deckhouse?
|
Deckhouse is configured using global settings, module settings, and various custom resources. Read more in the documentation.
| Deckhouse настраивается с помощью глобальных настроек, настроек модулей и различных кастомных ресурсов. Подробнее — в документации.
|
- Display global Deckhouse settings:
|
- Выведите глобальные настройки:
|
shell
kubectl get mc global -o yaml
| shell
kubectl get mc global -o yaml
|
- List the status of all modules (available for Deckhouse version 1.47+):
|
- Выведите список состояния всех модулей (доступно для Deckhouse версии 1.47+):
|
shell
kubectl get modules
| shell
kubectl get modules
|
- Display the settings of the
user-authn module configuration:
|
- Выведите настройки модуля
user-authn :
|
shell
kubectl get moduleconfigs user-authn -o yaml
| shell
kubectl get moduleconfigs user-authn -o yaml
|
How do I find the documentation for the version installed?
| Как найти документацию по установленной у меня версии?
|
The documentation for the Deckhouse version running in the cluster is available at documentation.<cluster_domain> , where <cluster_domain> is the DNS name that matches the template defined in the modules.publicDomainTemplate parameter.
| Документация запущенной в кластере версии Deckhouse доступна по адресу documentation.<cluster_domain> , где <cluster_domain> — DNS-имя в соответствии с шаблоном из параметра modules.publicDomainTemplate глобальной конфигурации.
|
Documentation is available when the documentation module is enabled. It is enabled by default except the Minimal bundle.
| Документация доступна, если в кластере включен модуль documentation. Он включен по умолчанию, кроме варианта поставки Minimal .
|
Deckhouse update
| Обновление Deckhouse
|
How to find out in which mode the cluster is being updated?
| Как понять, в каком режиме обновляется кластер?
|
You can view the cluster update mode in the configuration of the deckhouse module. To do this, run the following command:
| Посмотреть режим обновления кластера можно в конфигурации модуля deckhouse . Для этого выполните следующую команду:
|
shell
kubectl get mc deckhouse -oyaml
| shell
kubectl get mc deckhouse -oyaml
|
Example of the output:
| Пример вывода:
|
yaml
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
creationTimestamp: “2022-12-14T11:13:03Z”
generation: 1
name: deckhouse
resourceVersion: “3258626079”
uid: c64a2532-af0d-496b-b4b7-eafb5d9a56ee
spec:
settings:
releaseChannel: Stable
update:
windows:
- days:
- Mon
from: “19:00”
to: “20:00”
version: 1
status:
state: Enabled
status: “”
type: Embedded
version: “1”
| yaml
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
creationTimestamp: “2022-12-14T11:13:03Z”
generation: 1
name: deckhouse
resourceVersion: “3258626079”
uid: c64a2532-af0d-496b-b4b7-eafb5d9a56ee
spec:
settings:
releaseChannel: Stable
update:
windows:
- days:
- Mon
from: “19:00”
to: “20:00”
version: 1
status:
state: Enabled
status: “”
type: Embedded
version: “1”
|
There are three possible update modes:
| Существуют три возможных режима обновления:
|
- Automatic + update windows are not set. The cluster will be updated after the new version appears on the corresponding release channel.
- Automatic + update windows are set. The cluster will be updated in the nearest available window after the new version appears on the release channel.
- Manual. Manual action is required to apply the update.
|
- Автоматический + окна обновлений не заданы. Кластер обновится сразу после появления новой версии на соответствующем канале обновлений.
- Автоматический + заданы окна обновлений. Кластер обновится в ближайшее доступное окно после появления новой версии на канале обновлений.
- Ручной режим. Для применения обновления требуются ручные действия.
|
How do I set the desired release channel?
| Как установить желаемый канал обновлений?
|
Change (set) the releaseChannel parameter in the deckhouse module configuration to automatically switch to another release channel.
| Чтобы перейти на другой канал обновлений автоматически, нужно в конфигурации модуля deckhouse изменить (установить) параметр releaseChannel.
|
It will activate the mechanism of automatic stabilization of the release channel.
| В этом случае включится механизм автоматической стабилизации релизного канала.
|
Here is an example of the deckhouse module configuration with the Stable release channel:
| Пример конфигурации модуля deckhouse с установленным каналом обновлений Stable :
|
yaml
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: deckhouse
spec:
version: 1
settings:
releaseChannel: Stable
| yaml
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: deckhouse
spec:
version: 1
settings:
releaseChannel: Stable
|
How do I disable automatic updates?
| Как отключить автоматическое обновление?
|
To completely disable the Deckhouse update mechanism, remove the releaseChannel parameter in the deckhouse module configuration.
| Чтобы полностью отключить механизм обновления Deckhouse, удалите в конфигурации модуля deckhouse параметр releaseChannel.
|
In this case, Deckhouse does not check for updates and doesn’t apply patch releases.
| В этом случае Deckhouse не проверяет обновления и не выполняется обновление на patch-релизы.
|
It is highly not recommended to disable automatic updates! It will block updates to patch releases that may contain critical vulnerabilities and bugs fixes.
| Крайне не рекомендуется отключать автоматическое обновление! Это заблокирует обновления на patch-релизы, которые могут содержать исправления критических уязвимостей и ошибок.
|
How do I apply an update without having to wait for the update window, canary-release and manual update mode?
| Как применить обновление минуя окна обновлений, canary-release и ручной режим обновлений?
|
To apply an update immediately, set the release.deckhouse.io/apply-now : "true" annotation on the DeckhouseRelease resource.
| Чтобы применить обновление немедленно, установите в соответствующем ресурсе DeckhouseRelease аннотацию release.deckhouse.io/apply-now: "true" .
|
Caution! In this case, the update windows, settings canary-release and manual cluster update mode will be ignored. The update will be applied immediately after the annotation is installed.
| Обратите внимание! В этом случае будут проигнорированы окна обновления, настройки canary-release и режим ручного обновления кластера. Обновление применится сразу после установки аннотации.
|
An example of a command to set the annotation to skip the update windows for version v1.56.2 :
| Пример команды установки аннотации пропуска окон обновлений для версии v1.56.2 :
|
shell
kubectl annotate deckhousereleases v1.56.2 release.deckhouse.io/apply-now=”true”
| shell
kubectl annotate deckhousereleases v1.56.2 release.deckhouse.io/apply-now=”true”
|
An example of a resource with the update window skipping annotation in place:
| Пример ресурса с установленной аннотацией пропуска окон обновлений:
|
yaml
apiVersion: deckhouse.io/v1alpha1
kind: DeckhouseRelease
metadata:
annotations:
release.deckhouse.io/apply-now: “true”
…
| yaml
apiVersion: deckhouse.io/v1alpha1
kind: DeckhouseRelease
metadata:
annotations:
release.deckhouse.io/apply-now: “true”
…
|
How to understand what changes the update contains and how it will affect the cluster?
| Как понять, какие изменения содержит обновление и как это повлияет на работу кластера?
|
You can find all the information about Deckhouse versions in the list of Deckhouse releases.
| Информацию о всех версиях Deckhouse можно найти в списке релизов Deckhouse.
|
Summary information about important changes, component version updates, and which components in the cluster will be restarted during the update process can be found in the description of the zero patch version of the release. For example, v1.46.0 for the v1.46 Deckhouse release.
| Сводную информацию о важных изменениях, об обновлении версий компонентов, а также о том, какие компоненты в кластере буду перезапущены в процессе обновления, можно найти в описании нулевой patch-версии релиза. Например, v1.46.0 для релиза v1.46 Deckhouse.
|
A detailed list of changes can be found in the Changelog, which is referenced in each release.
| Подробный список изменений можно найти в Changelog, ссылка на который есть в каждом релизе.
|
How do I understand that the cluster is being updated?
| Как понять, что в кластере идет обновление?
|
During the update:
| Во время обновления:
|
- The
DeckhouseUpdating alert is displayed.
- The
deckhouse Pod is not the Ready status. If the Pod does not go to the Ready status for a long time, then this may indicate that there are problems in the work of Deckhouse. Diagnosis is necessary.
|
- отображается алерт
DeckhouseUpdating ;
- под
deckhouse не в статусе Ready . Если под долго не переходит в статус Ready , это может говорить о проблеме. Необходима диагностика.
|
How do I know that the update was successful?
| Как понять, что обновление прошло успешно?
|
If the DeckhouseUpdating alert is resolved, then the update is complete.
| Если алерт DeckhouseUpdating перестал отображаться, значит, обновление завершено.
|
You can also check the status of Deckhouse releases by running the following command:
| Также вы можете проверить состояние релизов Deckhouse, выполнив следующую команду:
|
bash
kubectl get deckhouserelease
| shell
kubectl get deckhouserelease
|
Example output:
| Пример вывода:
|
console
NAME PHASE TRANSITIONTIME MESSAGE
v1.46.8 Superseded 13d
v1.46.9 Superseded 11d
v1.47.0 Superseded 4h12m
v1.47.1 Deployed 4h12m
| console
NAME PHASE TRANSITIONTIME MESSAGE
v1.46.8 Superseded 13d
v1.46.9 Superseded 11d
v1.47.0 Superseded 4h12m
v1.47.1 Deployed 4h12m
|
The Deployed status of the corresponding version indicates that the switch to the corresponding version was performed (but this does not mean that it ended successfully).
| Статус Deployed у соответствующей версии говорит о том, что переключение на неё было выполнено (но это не равнозначно успешному завершению).
|
Check the status of the Deckhouse Pod:
| Проверьте состояние пода Deckhouse:
|
shell
kubectl -n d8-system get pods -l app=deckhouse
| shell
kubectl -n d8-system get pods -l app=deckhouse
|
Example output:
| Пример вывода команды:
|
console
NAME READY STATUS RESTARTS AGE
deckhouse-7844b47bcd-qtbx9 1/1 Running 0 1d
| console
NAME READY STATUS RESTARTS AGE
deckhouse-7844b47bcd-qtbx9 1/1 Running 0 1d
|
- If the status of the Pod is
Running , and 1/1 indicated in the READY column, the update was completed successfully.
- If the status of the Pod is
Running , and 0/1 indicated in the READY column, the update is not over yet. If this goes on for more than 20-30 minutes, then this may indicate that there are problems in the work of Deckhouse. Diagnosis is necessary.
- If the status of the Pod is not
Running , then this may indicate that there are problems in the work of Deckhouse. Diagnosis is necessary.
|
- Если статус пода
Running и в колонке READY указано 1/1 — обновление закончилось успешно.
- Если статус пода
Running и в колонке READY указано 0/1 — обновление еще не закончилось. Если это продолжается более 20–30 минут, это может говорить о наличии проблем в работе Deckhouse. Необходима диагностика.
- Если статус пода не
Running , это может говорить о наличии проблем в работе Deckhouse. Необходима диагностика.
|
Possible options for action if something went wrong:
| Возможные варианты действий, если что-то пошло не так:
|
- Check Deckhouse logs using the following command:
|
- Проверьте логи, используя следующую команду:
|
shell
kubectl -n d8-system logs -f -l app=deckhouse | jq -Rr ‘fromjson? | .msg’
| shell
kubectl -n d8-system logs -f -l app=deckhouse | jq -Rr ‘fromjson? | .msg’
|
- Collect debugging information and contact technical support.
- Ask for help from the community.
|
- Соберите отладочную информацию и свяжитесь с технической поддержкой.
- Попросите помощи у сообщества.
|
How do I know that a new version is available for the cluster?
| Как узнать, что для кластера доступна новая версия?
|
As soon as a new version of Deckhouse appears on the release channel installed in the cluster:
| Как только на установленном в кластере канале обновления появляется новая версия Deckhouse:
|
- The alert
DeckhouseReleaseIsWaitingManualApproval fires, if the cluster uses manual update mode (the update.mode parameter is set to Manual ).
- There is a new custom resource DeckhouseRelease. Use the
kubectl get deckhousereleases command, to view the list of releases. If the DeckhouseRelease is in the Pending state, the specified version has not yet been installed. Possible reasons why DeckhouseRelease may be in Pending :
- Manual update mode is set (the update.mode parameter is set to
Manual ).
- The automatic update mode is set, and the update windows are configured, the interval of which has not yet come.
- The automatic update mode is set, update windows are not configured, but the installation of the version has been postponed for a random time due to the mechanism of reducing the load on the repository of container images. There will be a corresponding message in the
status.message field of the DeckhouseRelease resource.
- The update.notification.minimalNotificationTime parameter is set, and the specified time has not passed yet.
|
- Отображается алерт
DeckhouseReleaseIsWaitingManualApproval , если кластер использует ручной режим обновлений (параметр update.mode установлен в Manual ).
- Появляется новый кастомный ресурс DeckhouseRelease. Используйте команду
kubectl get deckhousereleases , чтобы посмотреть список релизов. Если DeckhouseRelease новой версии находится в состоянии Pending , указанная версия еще не установлена. Возможные причины, при которых DeckhouseRelease может находиться в Pending :
- Установлен ручной режим обновлений (параметр update.mode установлен в
Manual ).
- Установлен автоматический режим обновлений и настроены окна обновлений, интервал которых еще не наступил.
- Установлен автоматический режим обновлений, окна обновлений не настроены, но применение версии отложено на случайный период времени из-за механизма снижения нагрузки на репозиторий образов контейнеров. В поле
status.message ресурса DeckhouseRelease будет соответствующее сообщение.
- Установлен параметр update.notification.minimalNotificationTime и указанное в нем время еще не прошло.
|
| Как заранее получать информацию о предстоящем обновлении?
|
You can get information in advance about updating minor versions of Deckhouse on the release channel in the following ways:
| Заранее получать информацию об обновлении минорных версий Deckhouse на канале обновлений можно следующими способами:
|
- Configure manual update mode. In this case, when a new version appears on the release channel, the alert
DeckhouseReleaseIsWaitingManualApproval will be displayed and a new custom resource DeckhouseRelease will be applied in the cluster.
- Configure automatic update mode and specify the minimum time in the minimalNotificationTime parameter for which the update will be postponed. In this case, when a new version appears on the release channel, a new custom resource DeckhouseRelease will appear in the cluster. And if you specify a URL in the update.notification.webhook parameter, then the webhook will be called additionally.
|
- Настройте ручной режим обновлений. В этом случае при появлении новой версии на канале обновлений отобразится алерт
DeckhouseReleaseIsWaitingManualApproval и в кластере появится новый кастомный ресурс DeckhouseRelease.
- Настройте автоматический режим обновлений и укажите минимальное время в параметре minimalNotificationTime, на которое будет отложено обновление. В этом случае при появлении новой версии на канале обновлений в кластере появится новый кастомный ресурс DeckhouseRelease. А если указать URL в параметре update.notification.webhook, дополнительно произойдет вызов webhook’а.
|
How do I find out which version of Deckhouse is on which release channel?
| Как узнать, какая версия Deckhouse находится на каком канале обновлений?
|
Information about which version of Deckhouse is on which release channel can be obtained at https://releases.deckhouse.io.
| Информацию о версиях Deckhouse и их связях с каналами обновлений можно получить на https://releases.deckhouse.ru.
|
How does automatic Deckhouse update work?
| Как работает автоматическое обновление Deckhouse?
|
Every minute Deckhouse checks a new release appeared in the release channel specified by the releaseChannel parameter.
| Если в конфигурации модуля deckhouse указан параметр releaseChannel , то Deckhouse каждую минуту будет проверять данные о релизе на канале обновлений.
|
When a new release appears on the release channel, Deckhouse downloads it and creates CustomResource DeckhouseRelease.
| При появлении нового релиза Deckhouse скачает его в кластер и создаст кастомный ресурс DeckhouseRelease.
|
After creating a DeckhouseRelease custom resource in a cluster, Deckhouse updates the deckhouse Deployment and sets the image tag to a specified release tag according to selected update mode and update windows (automatic at any time by default).
| После появления кастомного ресурса DeckhouseRelease в кластере, Deckhouse выполнит обновление на соответствующую версию согласно установленным параметрам обновления (по умолчанию — автоматически, в любое время).
|
To get list and status of all releases use the following command:
| Чтобы посмотреть список и состояние всех релизов, воспользуйтесь командой:
|
shell
kubectl get deckhousereleases
| shell
kubectl get deckhousereleases
|
Starting from DKP 1.70 patch releases (e.g., an update from version 1.70.1 to version 1.70.2 ) are installed taking into account the update windows. Prior to DKP 1.70, patch version updates ignore update windows settings and apply as soon as they are available.
| Начиная с версии DKP 1.70, patch-версии обновлений (например, обновление на версию 1.70.2 при установленной версии 1.70.1) устанавливаются с учетом окон обновлений. До версии DKP 1.70 patch-версии обновлений устанавливаются без учета режима и окон обновления.
|
What happens when the release channel changes?
| Что происходит при смене канала обновлений?
|
- When switching to a more stable release channel (e.g., from
Alpha to EarlyAccess ), Deckhouse downloads release data from the release channel (the EarlyAccess release channel in the example) and compares it with the existing DeckhouseReleases :
- Deckhouse deletes later releases (by semver) that have not yet been applied (with the
Pending status).
- if the latest releases have been already Deployed, then Deckhouse will hold the current release until a later release appears on the release channel (on the
EarlyAccess release channel in the example).
- When switching to a less stable release channel (e.g., from
EarlyAccess to Alpha ), the following actions take place:
- Deckhouse downloads release data from the release channel (the
Alpha release channel in the example) and compares it with the existing DeckhouseReleases .
- Then Deckhouse performs the update according to the update parameters.
|
- При смене канала обновлений на более стабильный (например, с
Alpha на EarlyAccess ) Deckhouse скачивает данные о релизе (в примере — из канала EarlyAccess ) и сравнивает их с данными из существующих в кластере кастомных ресурсов DeckhouseRelease :
- Более поздние релизы, которые не были применены (в статусе
Pending ), удаляются.
- Если более поздние релизы применены (в статусе
Deployed ), смены релиза не происходит. Релиз остается прежним до тех пор, пока на канале обновлений EarlyAccess не появится более поздняя версия.
- При смене канала обновлений на менее стабильный (например, с
EarlyAccess на Alpha ):
- Deckhouse скачивает данные о релизе (в примере — из канала
Alpha ) и сравнивает их с данными из существующих в кластере кастомных ресурсов DeckhouseRelease .
- Затем Deckhouse выполняет обновление согласно установленным параметрам обновления.
|

| 
|
What do I do if Deckhouse fails to retrieve updates from the release channel?
| Что делать, если Deckhouse не получает обновлений из канала обновлений?
|
- Make sure that the desired release channel is configured.
- Make sure that the DNS name of the Deckhouse container registry is resolved correctly.
- Retrieve and compare the IP addresses of the Deckhouse container registry (
registry.deckhouse.io ) on one of the nodes and in the Deckhouse pod. They should match.
|
- Проверьте, что настроен нужный канал обновлений.
- Проверьте корректность разрешения DNS-имени хранилища образов Deckhouse.
|
To retrieve the IP address of the Deckhouse container registry on a node, run the following command:
|
- Получите и сравните IP-адреса хранилища образов Deckhouse (
registry.deckhouse.ru ) на одном из узлов и в поде Deckhouse. Они должны совпадать.
|
shell
getent ahosts registry.deckhouse.io
| Чтобы получить IP-адрес хранилища образов Deckhouse на узле, выполните следующую команду:
|
Example output:
| shell
getent ahosts registry.deckhouse.ru
|
console
46.4.145.194 STREAM registry.deckhouse.io
46.4.145.194 DGRAM
46.4.145.194 RAW
| Пример вывода:
|
To retrieve the IP address of the Deckhouse container registry in a pod, run the following command:
| console
185.193.90.38 STREAM registry.deckhouse.ru
185.193.90.38 DGRAM
185.193.90.38 RAW
|
shell
kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse – getent ahosts registry.deckhouse.io
| Чтобы получить IP-адрес хранилища образов Deckhouse в поде Deckhouse, выполните следующую команду:
|
Example output:
console
46.4.145.194 STREAM registry.deckhouse.io
46.4.145.194 DGRAM registry.deckhouse.io
| shell
kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse – getent ahosts registry.deckhouse.ru
|
If the retrieved IP addresses do not match, inspect the DNS settings on the host.
Specifically, check the list of domains in the search parameter of the /etc/resolv.conf file (it affects name resolution in the Deckhouse pod). If the search parameter of the /etc/resolv.conf file includes a domain where wildcard record resolution is configured, it may result in incorrect resolution of the IP address of the Deckhouse container registry (see the following example).
| Пример вывода:
|
| console
185.193.90.38 STREAM registry.deckhouse.ru
185.193.90.38 DGRAM registry.deckhouse.ru
|
In the example, DNS settings produce different results when resolving names on the host and in the Kubernetes pod:
| Если полученные IP-адреса не совпадают, проверьте настройки DNS на узле.
Обратите внимание на список доменов в параметре search файла /etc/resolv.conf (он влияет на разрешение имен в поде Deckhouse). Если в параметре search файла /etc/resolv.conf указан домен, в котором настроено разрешение wildcard-записей, это может привести к неверному разрешению IP-адреса хранилища образов Deckhouse (см. пример).
|
- The
/etc/resolv.conf file on the node:
|
|
text
nameserver 10.0.0.10
search company.my
| Пример, когда настройки DNS приводят к различному результату при разрешении имен на узле и в поде Kubernetes:
|
Note that the ndot parameter defaults to 1 (options ndots:1 ) on the node. But in Kubernetes pods, the ndot parameter is set to 5. Therefore, the logic for resolving DNS names with 5 dots or less in the name is different on the host and in the pod.
|
- Пример файла
/etc/resolv.conf на узле:
|
- The
company.my DNS zone is configured to resolve wildcard records *.company.my to 10.0.0.100 . That is, any DNS name in the company.my zone for which there is no specific DNS entry is resolved to 10.0.0.100 .
| text
nameserver 10.0.0.10
search company.my
|
In this case, subject to the search parameter specified in the /etc/resolv.conf file, when accessing the registry.deckhouse.io address on the node, the system will try to obtain the IP address for the registry.deckhouse.io name (it treats it as a fully qualified name given the default setting of options ndots:1 ).
|
Обратите внимание, что по умолчанию на узле параметр ndot равен 1 (options ndots:1 ). Но в подах Kubernetes параметр ndot равен 5. Таким образом, логика разрешения DNS-имен, имеющих в имени 5 точек и менее, различается на узле и в поде.
|
On the other hand, when accessing registry.deckhouse.io from a Kubernetes pod, given the options ndots:5 parameter (the default one in Kubernetes) and the search parameter, the system will initially try to resolve the IP address for the registry.deckhouse.io.company.my name. The registry.deckhouse.io.company.my name will be resolved to 10.0.0.100 because the company.my DNS zone is configured to resolve wildcard records *.company.my to 10.0.0.100 . As a result, the registry.deckhouse.io host and information about the available Deckhouse updates will be unreachable.
|
- В DNS-зоне
company.my настроено разрешение wildcard-записей *.company.my в адрес 10.0.0.100 . То есть любое DNS-имя в зоне company.my , для которого нет конкретной записи в DNS, разрешается в адрес 10.0.0.100 .
|
| С учетом параметра search , указанного в файле /etc/resolv.conf , при обращении на адрес registry.deckhouse.ru на узле, система пытается получить IP-адрес для имени registry.deckhouse.ru (так как считает его полностью определенным, учитывая настройку по умолчанию параметра options ndots:1 ).
|
How to check the job queue in Deckhouse?
| При обращении на адрес registry.deckhouse.ru из пода Kubernetes, учитывая параметры options ndots:5 (используется в Kubernetes по умолчанию) и search , система первоначально попытается получить IP-адрес для имени registry.deckhouse.ru.company.my . Это имя будет разрешено для IP-адреса 10.0.0.100 , так как в DNS-зоне company.my настроено разрешение wildcard-записей *.company.my для адреса 10.0.0.100 . В результате к хосту registry.deckhouse.ru будет невозможно подключиться и скачать информацию о доступных обновлениях Deckhouse.
|
To view the status of all Deckhouse job queues, run the following command:
| Как проверить очередь заданий в Deckhouse?
|
shell
kubectl -n d8-system exec -it svc/deckhouse-leader -c deckhouse – deckhouse-controller queue list
| Для просмотра состояния всех очередей заданий Deckhouse, выполните следующую команду:
|
Example of the output (queues are empty):
| shell
kubectl -n d8-system exec -it svc/deckhouse-leader -c deckhouse – deckhouse-controller queue list
|
console
Summary:
- ‘main’ queue: empty.
- 88 other queues (0 active, 88 empty): 0 tasks.
- no tasks to handle.
| Пример вывода (очереди пусты):
|
To view the status of the main Deckhouse task queue, run the following command:
| console
Summary:
- ‘main’ queue: empty.
- 88 other queues (0 active, 88 empty): 0 tasks.
- no tasks to handle.
|
shell
kubectl -n d8-system exec -it svc/deckhouse-leader -c deckhouse – deckhouse-controller queue main
| Для просмотра состояния очереди заданий main Deckhouse, выполните следующую команду:
|
Example of the output (38 tasks in the main queue):
| shell
kubectl -n d8-system exec -it svc/deckhouse-leader -c deckhouse – deckhouse-controller queue main
|
console
Queue ‘main’: length 38, status: ‘run first task’
| Пример вывода (в очереди main 38 заданий):
|
Example of the output (the main queue is empty):
| console
Queue ‘main’: length 38, status: ‘run first task’
|
console
Queue ‘main’: length 0, status: ‘waiting for task 0s’
| Пример вывода (очередь main пуста):
|
Air-gapped environment; working via proxy and third-party registry
| console
Queue ‘main’: length 0, status: ‘waiting for task 0s’
|
| Закрытое окружение, работа через proxy и сторонние registry
|
This feature is available in the following editions: BE, SE, SE+, EE.
| Как установить Deckhouse из стороннего registry?
|
Deckhouse only supports Bearer authentication for container registries.
| Доступно в следующих редакциях: BE, SE, SE+, EE, CSE Lite (1.67), CSE Pro (1.67).
|
Tested and guaranteed to work with the following container registries:
{{- registry[1].shortname }}
,
.
| Deckhouse поддерживает работу только с Bearer token-схемой авторизации в container registry.
|
Deckhouse can be configured to work with a third-party registry (e.g., a proxy registry inside private environments).
| Протестирована и гарантируется работа со следующими container registry:
{{- registry[1].shortname }}
,
.
|
Define the following parameters in the InitConfiguration resource:
| При установке Deckhouse можно настроить на работу со сторонним registry (например, проксирующий registry внутри закрытого контура).
|
imagesRepo: <PROXY_REGISTRY>/<DECKHOUSE_REPO_PATH>/ee . The path to the Deckhouse EE image in the third-party registry, for example imagesRepo: registry.deckhouse.io/deckhouse/ee ;
registryDockerCfg: <BASE64> . Base64-encoded auth credentials of the third-party registry.
| Установите следующие параметры в ресурсе InitConfiguration :
|
Use the following registryDockerCfg if anonymous access to Deckhouse images is allowed in the third-party registry:
|
imagesRepo: <PROXY_REGISTRY>/<DECKHOUSE_REPO_PATH>/ee — адрес образа Deckhouse EE в стороннем registry. Пример: imagesRepo: registry.deckhouse.ru/deckhouse/ee ;
registryDockerCfg: <BASE64> — права доступа к стороннему registry, зашифрованные в Base64.
|
json
{“auths”: { “": {}}}
| Если разрешен анонимный доступ к образам Deckhouse в стороннем registry, registryDockerCfg должен выглядеть следующим образом:
|
registryDockerCfg must be Base64-encoded.
| json
{“auths”: { “": {}}}
|
Use the following registryDockerCfg if authentication is required to access Deckhouse images in the third-party registry:
| Приведенное значение должно быть закодировано в Base64.
|
json
{“auths”: { “": {"username":"","password":"","auth":""}}}
| Если для доступа к образам Deckhouse в стороннем registry необходима аутентификация, registryDockerCfg должен выглядеть следующим образом:
|
<PROXY_USERNAME> — auth username for <PROXY_REGISTRY> .
<PROXY_PASSWORD> — auth password for <PROXY_REGISTRY> .
<PROXY_REGISTRY> — registry address: <HOSTNAME>[:PORT] .
<AUTH_BASE64> — Base64-encoded <PROXY_USERNAME>:<PROXY_PASSWORD> auth string.
| json
{“auths”: { “": {"username":"","password":"","auth":""}}}
|
registryDockerCfg must be Base64-encoded.
| где:
|
You can use the following script to generate registryDockerCfg :
|
<PROXY_USERNAME> — имя пользователя для аутентификации на <PROXY_REGISTRY> ;
<PROXY_PASSWORD> — пароль пользователя для аутентификации на <PROXY_REGISTRY> ;
<PROXY_REGISTRY> — адрес стороннего registry в виде <HOSTNAME>[:PORT] ;
<AUTH_BASE64> — строка вида <PROXY_USERNAME>:<PROXY_PASSWORD> , закодированная в Base64.
|
shell
declare MYUSER=’'
declare MYPASSWORD=''
declare MYREGISTRY=''
| Итоговое значение для registryDockerCfg должно быть также закодировано в Base64.
|
MYAUTH=$(echo -n “$MYUSER:$MYPASSWORD” |
base64 -w0) |
MYRESULTSTRING=$(echo -n “{"auths":{"$MYREGISTRY":{"username":"$MYUSER","password":"$MYPASSWORD","auth":"$MYAUTH"}}}” |
base64 -w0) |
| Вы можете использовать следующий скрипт для генерации registryDockerCfg :
|
echo “$MYRESULTSTRING”
| shell
declare MYUSER=’'
declare MYPASSWORD=''
declare MYREGISTRY=''
|
The InitConfiguration resource provides two more parameters for non-standard third-party registry configurations:
|
MYAUTH=$(echo -n “$MYUSER:$MYPASSWORD” |
base64 -w0) |
MYRESULTSTRING=$(echo -n “{"auths":{"$MYREGISTRY":{"username":"$MYUSER","password":"$MYPASSWORD","auth":"$MYAUTH"}}}” |
base64 -w0) |
|
registryCA - root CA certificate to validate the third-party registry’s HTTPS certificate (if self-signed certificates are used);
registryScheme - registry scheme (HTTP or HTTPS ). The default value is HTTPS .
| echo “$MYRESULTSTRING”
|
| Для настройки нестандартных конфигураций сторонних registry в ресурсе InitConfiguration предусмотрены еще два параметра:
|
Tips for configuring Nexus
|
registryCA — корневой сертификат, которым можно проверить сертификат registry (если registry использует самоподписанные сертификаты);
registryScheme — протокол доступа к registry (HTTP или HTTPS ). По умолчанию — HTTPS .
|
When interacting with a docker repository located in Nexus (e. g. executing docker pull , docker push commands), you must specify the address in the <NEXUS_URL>:<REPOSITORY_PORT>/<PATH> format.
|
|
Using the URL value from the Nexus repository options is not acceptable
| Особенности настройки Nexus
|
The following requirements must be met if the Nexus repository manager is used:
| При взаимодействии с репозиторием типа docker расположенным в Nexus (например, при выполнении команд docker pull , docker push ) требуется указывать адрес в формате <NEXUS_URL>:<REPOSITORY_PORT>/<PATH> .
|
- Docker proxy repository must be pre-created (Administration -> Repository -> Repositories):
- The
Maximum metadata age parameter is set to 0 for the repository.
- Access control configured as follows:
- The Nexus role is created (Administration -> Security -> Roles) with the following permissions:
nx-repository-view-docker-<repository>-browse
nx-repository-view-docker-<repository>-read
- A user (Administration -> Security -> Users) with the Nexus role is created.
| Использование значения URL из параметров репозитория Nexus недопустимо
|
Configuration:
| При использовании менеджера репозиториев Nexus должны быть выполнены следующие требования:
|
- Create a docker proxy repository (Administration -> Repository -> Repositories) pointing to the Deckhouse registry:

|
- Создан проксирующий репозиторий Docker (Administration -> Repository -> Repositories):
- Установлен в
0 параметр Maximum metadata age для репозитория.
- Настроен контроль доступа:
- Создана роль Nexus (Administration -> Security -> Roles) со следующими полномочиями:
nx-repository-view-docker-<репозиторий>-browse
nx-repository-view-docker-<репозиторий>-read
- Создан пользователь (Administration -> Security -> Users) с ролью Nexus.
|
- Fill in the fields on the Create page as follows:
Name must contain the name of the repository you created earlier, e.g., d8-proxy .
Repository Connectors / HTTP or Repository Connectors / HTTPS must contain a dedicated port for the created repository, e.g., 8123 or other.
Remote storage must be set to https://registry.deckhouse.io/ .
- You can disable
Auto blocking enabled and Not found cache enabled for debugging purposes, otherwise they must be enabled.
Maximum Metadata Age must be set to 0 .
Authentication must be enabled if you plan to use a commercial edition of Deckhouse Kubernetes Platform, and the related fields must be set as follows:
Authentication Type must be set to Username .
Username must be set to license-token .
Password must contain your Deckhouse Kubernetes Platform license key.
| Настройка:
|

|
- Создайте проксирующий репозиторий Docker (Administration -> Repository -> Repositories), указывающий на Deckhouse registry:

|
- Configure Nexus access control to allow Nexus access to the created repository:
- Create a Nexus role (Administration -> Security -> Roles) with the
nx-repository-view-docker-<repository>-browse and nx-repository-view-docker-<repository>-read permissions.
|
- Заполните поля страницы создания репозитория следующим образом:
Name должно содержать имя создаваемого репозитория, например d8-proxy .
Repository Connectors / HTTP или Repository Connectors / HTTPS должно содержать выделенный порт для создаваемого репозитория, например 8123 или иной.
Remote storage должно иметь значение https://registry.deckhouse.ru/ .
Auto blocking enabled и Not found cache enabled могут быть выключены для отладки; в противном случае их следует включить.
Maximum Metadata Age должно быть равно 0 .
- Если планируется использовать коммерческую редакцию Deckhouse Kubernetes Platform, флажок
Authentication должен быть включен, а связанные поля должны быть заполнены следующим образом:
Authentication Type должно иметь значение Username .
Username должно иметь значение license-token .
Password должно содержать ключ лицензии Deckhouse Kubernetes Platform.
|

|

|
- Create a user with the role above granted.
|
- Настройте контроль доступа Nexus для доступа Deckhouse к созданному репозиторию:
- Создайте роль Nexus (Administration -> Security -> Roles) с полномочиями
nx-repository-view-docker-<репозиторий>-browse и nx-repository-view-docker-<репозиторий>-read .
|

| 
|
Thus, Deckhouse images will be available at https://<NEXUS_HOST>:<REPOSITORY_PORT>/deckhouse/ee:<d8s-version> .
|
- Создайте пользователя (Administration -> Security -> Users) с ролью, созданной выше.
|
Tips for configuring Harbor
| 
|
Use the Harbor Proxy Cache feature.
| В результате образы Deckhouse будут доступны, например, по следующему адресу: https://<NEXUS_HOST>:<REPOSITORY_PORT>/deckhouse/ee:<d8s-version> .
|
- Create a Registry:
Administration -> Registries -> New Endpoint .
Provider : Docker Registry .
Name — specify any of your choice.
Endpoint URL : https://registry.deckhouse.io .
- Specify the
Access ID and Access Secret (the Deckhouse Kubernetes Platform license key).
| Особенности настройки Harbor
|

| Используйте функцию Harbor Proxy Cache.
|
- Create a new Project:
Projects -> New Project .
Project Name will be used in the URL. You can choose any name, for example, d8s .
Access Level : Public .
Proxy Cache — enable and choose the Registry, created in the previous step.
|
- Настройте Registry:
Administration -> Registries -> New Endpoint .
Provider : Docker Registry .
Name — укажите любое, на ваше усмотрение.
Endpoint URL : https://registry.deckhouse.ru .
- Укажите
Access ID и Access Secret (лицензионный ключ для Deckhouse Kubernetes Platform).
|

| 
|
Thus, Deckhouse images will be available at https://your-harbor.com/d8s/deckhouse/ee:{d8s-version} .
|
- Создайте новый проект:
Projects -> New Project .
Project Name будет частью URL. Используйте любой, например, d8s .
Access Level : Public .
Proxy Cache — включите и выберите в списке Registry, созданный на предыдущем шаге.
|
| 
|
The d8 mirror command group is not available for Community Edition (CE) and Basic Edition (BE).
| В результате настройки, образы Deckhouse станут доступны, например, по следующему адресу: https://your-harbor.com/d8s/deckhouse/ee:{d8s-version} .
|
Check releases.deckhouse.io for the current status of the release channels.
|
|
- Download and install the Deckhouse CLI tool.
| Утилита d8 mirror недоступна для использования с редакциями Community Edition (CE) и Basic Edition (BE).
|
- Pull Deckhouse images using the
d8 mirror pull command.
| О текущем статусе версий на каналах обновлений можно узнать на releases.deckhouse.ru.
|
By default, d8 mirror pulls only the latest available patch versions for every actual Deckhouse release, latest enterprise security scanner databases (if your edition supports it) and the current set of officially supplied modules.
For example, for Deckhouse 1.59, only version 1.59.12 will be pulled, since this is sufficient for updating Deckhouse from 1.58 to 1.59.
|
- Скачайте и установите утилиту Deckhouse CLI.
|
Run the following command (specify the edition code and the license key) to download actual images:
|
- Скачайте образы Deckhouse в выделенную директорию, используя команду
d8 mirror pull .
|
shell
d8 mirror pull
–source=’registry.deckhouse.io/deckhouse/' \
--license='' /home/user/d8-bundle
| По умолчанию d8 mirror pull скачивает только актуальные версии Deckhouse, базы данных сканера уязвимостей (если они входят в редакцию DKP) и официально поставляемых модулей.
Например, для Deckhouse 1.59 будет скачана только версия 1.59.12, т. к. этого достаточно для обновления Deckhouse с 1.58 до 1.59.
|
where:
<EDITION> — the edition code of the Deckhouse Kubernetes Platform (for example, ee , se , se-plus ).
<LICENSE_KEY> — Deckhouse Kubernetes Platform license key.
/home/user/d8-bundle — the directory to store the resulting bundle into. It will be created if not present.
| Выполните следующую команду (укажите код редакции и лицензионный ключ), чтобы скачать образы актуальных версий:
|
If the loading of images is interrupted, rerunning the command will resume the loading if no more than a day has passed since it stopped.
| shell
d8 mirror pull
–source=’registry.deckhouse.ru/deckhouse/' \
--license='' /home/user/d8-bundle
|
You can also use the following command options:
--no-pull-resume — to forcefully start the download from the beginning;
--no-platform — to skip downloading the Deckhouse Kubernetes Platform package (platform.tar);
--no-modules — to skip downloading modules packages (module-*.tar);
--no-security-db — to skip downloading security scanner databases (security.tar);
--since-version=X.Y — to download all versions of Deckhouse starting from the specified minor version. This parameter will be ignored if a version higher than the version on the Rock Solid updates channel is specified. This parameter cannot be used simultaneously with the --deckhouse-tag parameter;
--deckhouse-tag — to download only a specific build of Deckhouse (without considering update channels). This parameter cannot be used simultaneously with the --since-version parameter;
--include-module / -i = name[@Major.Minor] — to download only a specific whitelist of modules (and optionally their minimal versions). Specify multiple times to whitelist more modules. This flags are ignored if used with --no-modules .
--exclude-module / -e = name — to skip downloading of a specific blacklisted set of modules. Specify multiple times to blacklist more modules. Ignored if --no-modules or --include-module are used.
--modules-path-suffix — to change the suffix of the module repository path in the main Deckhouse repository. By default, the suffix is /modules . (for example, the full path to the repository with modules will look like registry.deckhouse.io/deckhouse/EDITION/modules with this default).
--gost-digest — for calculating the checksums of the bundle in the format of GOST R 34.11-2012 (Streebog). The checksum for each package will be displayed and written to a file with the extension .tar.gostsum in the folder with the package;
--source — to specify the address of the Deckhouse source registry;
- To authenticate in the official Deckhouse image registry, you need to use a license key and the
--license parameter;
- To authenticate in a third-party registry, you need to use the
--source-login and --source-password parameters;
--images-bundle-chunk-size=N — to specify the maximum file size (in GB) to split the image archive into. As a result of the operation, instead of a single file archive, a set of .chunk files will be created (e.g., d8.tar.NNNN.chunk ). To upload images from such a set of files, specify the file name without the .NNNN.chunk suffix in the d8 mirror push command (e.g., d8.tar for files like d8.tar.NNNN.chunk );
--tmp-dir — path to a temporary directory to use for image pulling and pushing. All processing is done in this directory, so make sure there is enough free disk space to accommodate the entire bundle you are downloading. By default, .tmp subdirectory under the bundle directory is used.
| где:
|
Additional configuration options for the d8 mirror family of commands are available as environment variables:
HTTP_PROXY /HTTPS_PROXY — URL of the proxy server for HTTP(S) requests to hosts that are not listed in the variable $NO_PROXY ;
NO_PROXY — comma-separated list of hosts to exclude from proxying. Supported value formats include IP addresses (1.2.3.4 ), CIDR notations (1.2.3.4/8 ), domains, and the asterisk character (* ). The IP addresses and domain names can also include a literal port number (1.2.3.4:80 ). The domain name matches that name and all the subdomains. The domain name with a leading . matches subdomains only. For example, foo.com matches foo.com and bar.foo.com ; .y.com matches x.y.com but does not match y.com . A single asterisk * indicates that no proxying should be done;
SSL_CERT_FILE — path to the SSL certificate. If the variable is set, system certificates are not used;
SSL_CERT_DIR — list of directories to search for SSL certificate files, separated by a colon. If set, system certificates are not used. See more…;
MIRROR_BYPASS_ACCESS_CHECKS — set to 1 to skip validation of registry credentials;
|
<EDITION> — код редакции Deckhouse Kubernetes Platform (например, ee , se , se-plus ). По умолчанию параметр --source ссылается на редакцию Enterprise Edition (ee ) и может быть опущен;
<LICENSE_KEY> — лицензионный ключ Deckhouse Kubernetes Platform;
/home/user/d8-bundle — директория, в которой будут расположены пакеты образов. Будет создана, если не существует.
|
Example of a command to download all versions of Deckhouse EE starting from version 1.59 (provide the license key):
|
Если загрузка образов будет прервана, повторный вызов команды продолжит загрузку, если с момента ее остановки прошло не более суток.
|
shell
d8 mirror pull
–license=’' \
--source='registry.deckhouse.io/deckhouse/ee' \
--since-version=1.59 /home/user/d8-bundle
| Вы также можете использовать следующие параметры команды:
|
Example of a command to download versions of Deckhouse SE for every release-channel available:
|
--no-pull-resume — чтобы принудительно начать загрузку сначала;
--no-platform — для пропуска загрузки пакета образов Deckhouse Kubernetes Platform (platform.tar);
--no-modules — для пропуска загрузки пакетов модулей (module-*.tar);
--no-security-db — для пропуска загрузки пакета баз данных сканера уязвимостей (security.tar);
--include-module / -i = name[@Major.Minor] — для загрузки только определенного набора модулей по принципу белого списка (и, при необходимости, их минимальных версий). Укажите несколько раз, чтобы добавить в белый список больше модулей. Эти флаги игнорируются, если используются совместно с --no-modules .
--exclude-module / -e = name — для пропуска загрузки определенного набора модулей по принципу черного списка. Укажите несколько раз, чтобы добавить в черный список больше модулей. Игнорируется, если используются --no-modules или --include-module .
--modules-path-suffix — для изменения суффикса пути к репозиторию модулей в основном репозитории Deckhouse. По умолчанию используется суффикс /modules (так, например, полный путь к репозиторию с модулями будет выглядеть как registry.deckhouse.ru/deckhouse/EDITION/modules ).
--since-version=X.Y — чтобы скачать все версии Deckhouse, начиная с указанной минорной версии. Параметр будет проигнорирован, если указана версия выше чем версия находящаяся на канале обновлений Rock Solid. Параметр не может быть использован одновременно с параметром --deckhouse-tag ;
--deckhouse-tag — чтобы скачать только конкретную версию Deckhouse (без учета каналов обновлений). Параметр не может быть использован одновременно с параметром --since-version ;
--gost-digest — для расчета контрольной суммы итогового набора образов Deckhouse в формате ГОСТ Р 34.11-2012 (Стрибог). Контрольная сумма будет отображена и записана в файл с расширением .tar.gostsum в папке с tar-архивом, содержащим образы Deckhouse;
--source — чтобы указать адрес источника хранилища образов Deckhouse (по умолчанию registry.deckhouse.ru/deckhouse/ee );
- Для аутентификации в официальном хранилище образов Deckhouse нужно использовать лицензионный ключ и параметр
--license ;
- Для аутентификации в стороннем хранилище образов нужно использовать параметры
--source-login и --source-password ;
--images-bundle-chunk-size=N — для указания максимального размера файла (в ГБ), на которые нужно разбить архив образов. В результате работы вместо одного файла архива образов будет создан набор .chunk -файлов (например, d8.tar.NNNN.chunk ). Чтобы загрузить образы из такого набора файлов, укажите в команде d8 mirror push имя файла без суффикса .NNNN.chunk (например, d8.tar для файлов d8.tar.NNNN.chunk );
--tmp-dir — путь к директории для временных файлов, который будет использоваться во время операций загрузки и выгрузки образов. Вся обработка выполняется в этом каталоге. Он должен иметь достаточное количество свободного дискового пространства, чтобы вместить весь загружаемый пакет образов. По умолчанию используется поддиректория .tmp в директории с пакетами образов.
|
shell
d8 mirror pull
–license=’' \
--source='registry.deckhouse.io/deckhouse/se' \
/home/user/d8-bundle
| Дополнительные параметры конфигурации для семейства команд d8 mirror доступны в виде переменных окружения:
|
Example of a command to download all versions of Deckhouse hosted on a third-party registry:
|
HTTP_PROXY /HTTPS_PROXY — URL прокси-сервера для запросов к HTTP(S) хостам, которые не указаны в списке хостов в переменной $NO_PROXY ;
NO_PROXY — список хостов, разделенных запятыми, которые следует исключить из проксирования. Каждое значение может быть представлено в виде IP-адреса (1.2.3.4 ), CIDR (1.2.3.4/8 ), домена или символа (* ). IP-адреса и домены также могут включать номер порта (1.2.3.4:80 ). Доменное имя соответствует как самому себе, так и всем поддоменам. Доменное имя начинающееся с . , соответствует только поддоменам. Например, foo.com соответствует foo.com и bar.foo.com ; .y.com соответствует x.y.com , но не соответствует y.com . Символ * отключает проксирование;
SSL_CERT_FILE — указывает путь до сертификата SSL. Если переменная установлена, системные сертификаты не используются;
SSL_CERT_DIR — список каталогов, разделенный двоеточиями. Определяет, в каких каталогах искать файлы сертификатов SSL. Если переменная установлена, системные сертификаты не используются. Подробнее…;
MIRROR_BYPASS_ACCESS_CHECKS — установите для этого параметра значение 1 , чтобы отключить проверку корректности переданных учетных данных для registry;
|
shell
d8 mirror pull
–source=’corp.company.com:5000/sys/deckhouse’
–source-login=’' --source-password='' /home/user/d8-bundle
| Пример команды для загрузки всех версий Deckhouse EE начиная с версии 1.59 (укажите лицензионный ключ):
|
Example of a command to download latest vulnerability scanner databases (if available for your deckhouse edition):
| shell
d8 mirror pull
–license=’' \
--since-version=1.59 /home/user/d8-bundle
|
shell
d8 mirror pull
–license=’' \
--source='registry.deckhouse.io/deckhouse/ee' \
--no-platform --no-modules /home/user/d8-bundle
| Пример команды для загрузки актуальных версий Deckhouse SE (укажите лицензионный ключ):
|
Example of a command to download all of Deckhouse modules available in registry:
| shell
d8 mirror pull
–license=’' \
--source='registry.deckhouse.ru/deckhouse/se' \
/home/user/d8-bundle
|
shell
d8 mirror pull
–license=’' \
--source='registry.deckhouse.io/deckhouse/ee' \
--no-platform --no-security-db /home/user/d8-bundle
| Пример команды для загрузки образов Deckhouse из стороннего хранилища образов:
|
Example of a command to download stronghold and secrets-store-integration Deckhouse modules:
| shell
d8 mirror pull
–source=’corp.company.com:5000/sys/deckhouse’
–source-login=’' --source-password='' /home/user/d8-bundle
|
shell
d8 mirror pull
–license=’' \
--source='registry.deckhouse.io/deckhouse/ee' \
--no-platform --no-security-db \
--include-module stronghold \
--include-module secrets-store-integration \
/home/user/d8-bundle
| Пример команды для загрузки пакета баз данных сканера уязвимостей:
|
- Upload the bundle with the pulled Deckhouse images to a host with access to the air-gapped registry and install the Deckhouse CLI tool onto it.
| shell
d8 mirror pull
–license=’' \
--no-platform --no-modules /home/user/d8-bundle
|
- Push the images to the air-gapped registry using the
d8 mirror push command.
| Пример команды для загрузки пакетов всех доступных дополнительных модулей:
|
The d8 mirror push command uploads images from all packages present in the given directory to the repository.
If you need to upload only some specific packages to the repository, you can either run the command for each required package, passing in the direct path to the tar package instead of the directory, or by removing the .tar extension from unnecessary packages or moving them outside the directory.
| shell
d8 mirror pull
–license=’' \
--no-platform --no-security-db /home/user/d8-bundle
|
Example of a command for pushing images from the /mnt/MEDIA/d8-images directory (specify authorization data if necessary):
| Пример команды для загрузки пакетов модулей stronghold и secrets-store-integration :
|
shell
d8 mirror push /mnt/MEDIA/d8-images ‘corp.company.com:5000/sys/deckhouse’
–registry-login=’' --registry-password=''
| shell
d8 mirror pull
–license=’' \
--no-platform --no-security-db \
--include-module stronghold \
--include-module secrets-store-integration \
/home/user/d8-bundle
|
Before pushing images, make sure that the path for loading into the registry exists (/sys/deckhouse in the example above), and the account being used has write permissions.
Harbor users, please note that you will not be able to upload images to the project root; instead use a dedicated repository in the project to host Deckhouse images.
|
- На хост с доступом к хранилищу, куда нужно загрузить образы Deckhouse, скопируйте загруженный пакет образов Deckhouse и установите Deckhouse CLI.
|
- Once pushing images to the air-gapped private registry is complete, you are ready to install Deckhouse from it. Refer to the Getting started guide.
|
- Загрузите образы Deckhouse в хранилище с помощью команды
d8 mirror push .
|
When launching the installer, use a repository where Deckhouse images have previously been loaded instead of official Deckhouse registry. For example, the address for launching the installer will look like corp.company.com:5000/sys/deckhouse/install:stable instead of registry.deckhouse.io/deckhouse/ee/install:stable .
| Команда d8 mirror push загружает в репозиторий образы из всех пакетов, которые присутствуют в переданной директории.
При необходимости выгрузить в репозиторий только часть пакетов, вы можете либо выполнить команду для каждого необходимого пакета образов передав ей прямой путь до пакета tar вместо директории, либо убрав расширение .tar у ненужных пакетов или переместив их вне директории.
|
During installation, add your registry address and authorization data to the InitConfiguration resource (the imagesRepo and registryDockerCfg parameters; you might refer to step 3 of the Getting started guide as well).
| Пример команды для загрузки пакетов образов из директории /mnt/MEDIA/d8-images (укажите данные для авторизации при необходимости):
|
How do I switch a running Deckhouse cluster to use a third-party registry?
| shell
d8 mirror push /mnt/MEDIA/d8-images ‘corp.company.com:5000/sys/deckhouse’
–registry-login=’' --registry-password=''
|
Using a registry other than registry.deckhouse.io is only available in a commercial edition of Deckhouse Kubernetes Platform.
|
Перед загрузкой образов убедитесь, что путь для загрузки в хранилище образов существует (в примере — /sys/deckhouse ) и у используемой учетной записи есть права на запись.
Если вы используете Harbor, вы не сможете выгрузить образы в корень проекта, используйте выделенный репозиторий в проекте для размещения образов Deckhouse.
|
To switch the Deckhouse cluster to using a third-party registry, follow these steps:
|
- После загрузки образов в хранилище можно переходить к установке Deckhouse. Воспользуйтесь руководством по быстрому старту.
|
- Run
deckhouse-controller helper change-registry inside the Deckhouse Pod with the new registry settings.
- Example:
| При запуске установщика используйте не официальное публичное хранилище образов Deckhouse, а хранилище в которое ранее были загружены образы Deckhouse. Для примера выше адрес запуска установщика будет иметь вид corp.company.com:5000/sys/deckhouse/install:stable , вместо registry.deckhouse.ru/deckhouse/ee/install:stable .
|
shell
kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse – deckhouse-controller helper change-registry –user MY-USER –password MY-PASSWORD registry.example.com/deckhouse/ee
| В ресурсе InitConfiguration при установке также используйте адрес вашего хранилища и данные авторизации (параметры imagesRepo, registryDockerCfg или шаг 3 руководства по быстрому старту).
|
- If the registry uses a self-signed certificate, put the root CA certificate that validates the registry’s HTTPS certificate to file
/tmp/ca.crt in the Deckhouse Pod and add the --ca-file /tmp/ca.crt option to the script or put the content of CA into a variable as follows:
| Как переключить работающий кластер Deckhouse на использование стороннего registry?
|
shell
CA_CONTENT=$(cat «EOF
—–BEGIN CERTIFICATE—–
CERTIFICATE
—–END CERTIFICATE—–
—–BEGIN CERTIFICATE—–
CERTIFICATE
—–END CERTIFICATE—–
EOF
)
kubectl -n d8-system exec svc/deckhouse-leader -c deckhouse – bash -c “echo ‘$CA_CONTENT’ > /tmp/ca.crt && deckhouse-controller helper change-registry –ca-file /tmp/ca.crt –user MY-USER –password MY-PASSWORD registry.example.com/deckhouse/ee”
| Использование registry, отличных от registry.deckhouse.io и registry.deckhouse.ru , доступно только в коммерческих редакциях Deckhouse Kubernetes Platform.
|
- To view the list of available keys of the
deckhouse-controller helper change-registry command, run the following command:
| Для переключения кластера Deckhouse на использование стороннего registry выполните следующие действия:
|
shell
kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse – deckhouse-controller helper change-registry –help
|
- Выполните команду
deckhouse-controller helper change-registry из пода Deckhouse с параметрами нового registry.
Пример запуска:
|
Example output:
| shell
kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse – deckhouse-controller helper change-registry –user MY-USER –password MY-PASSWORD registry.example.com/deckhouse/ee
|
console
usage: deckhouse-controller helper change-registry []
|
- Если registry использует самоподписанные сертификаты, положите корневой сертификат соответствующего сертификата registry в файл
/tmp/ca.crt в поде Deckhouse и добавьте к вызову опцию --ca-file /tmp/ca.crt или вставьте содержимое CA в переменную, как в примере ниже:
|
Change registry for deckhouse images.
| shell
CA_CONTENT=$(cat «EOF
—–BEGIN CERTIFICATE—–
CERTIFICATE
—–END CERTIFICATE—–
—–BEGIN CERTIFICATE—–
CERTIFICATE
—–END CERTIFICATE—–
EOF
)
kubectl -n d8-system exec svc/deckhouse-leader -c deckhouse – bash -c “echo ‘$CA_CONTENT’ > /tmp/ca.crt && deckhouse-controller helper change-registry –ca-file /tmp/ca.crt –user MY-USER –password MY-PASSWORD registry.example.com/deckhouse/ee”
|
Flags:
–help Show context-sensitive help (also try –help-long and –help-man).
–user=USER User with pull access to registry.
–password=PASSWORD Password/token for registry user.
–ca-file=CA-FILE Path to registry CA.
–scheme=SCHEME Used scheme while connecting to registry, http or https.
–dry-run Don’t change deckhouse resources, only print them.
–new-deckhouse-tag=NEW-DECKHOUSE-TAG
New tag that will be used for deckhouse deployment image (by default
current tag from deckhouse deployment will be used).
| Просмотреть список доступных ключей команды deckhouse-controller helper change-registry можно, выполнив следующую команду:
|
Args:
Registry that will be used for deckhouse images (example:
registry.deckhouse.io/deckhouse/ce). By default, https will be used, if you need
http - provide '--scheme' flag with http value
| shell
kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse – deckhouse-controller helper change-registry –help
|
- Wait for the Deckhouse Pod to become
Ready . Restart Deckhouse Pod if it will be in ImagePullBackoff state.
- Wait for bashible to apply the new settings on the master node. The bashible log on the master node (
journalctl -u bashible ) should contain the message Configuration is in sync, nothing to do .
- If you want to disable Deckhouse automatic updates, remove the releaseChannel parameter from the
deckhouse module configuration.
- Check if there are Pods with original registry in cluster (if there are — restart them):
| Пример вывода:
|
shell
kubectl get pods -A -o json | jq -r ‘.items[] | select(.spec.containers[]
| select(.image | startswith(“registry.deckhouse”))) | .metadata.namespace + “\t” + .metadata.name’ | sort | uniq
| console
usage: deckhouse-controller helper change-registry []
|
How to bootstrap a cluster and run Deckhouse without the usage of release channels?
| Change registry for deckhouse images.
|
This method should only be used if there are no release channel images in your air-gapped registry.
| Flags:
–help Show context-sensitive help (also try –help-long and –help-man).
–user=USER User with pull access to registry.
–password=PASSWORD Password/token for registry user.
–ca-file=CA-FILE Path to registry CA.
–scheme=SCHEME Used scheme while connecting to registry, http or https.
–dry-run Don’t change deckhouse resources, only print them.
–new-deckhouse-tag=NEW-DECKHOUSE-TAG
New tag that will be used for deckhouse deployment image (by default
current tag from deckhouse deployment will be used).
|
If you want to install Deckhouse with automatic updates disabled:
| Args:
Registry that will be used for deckhouse images (example:
registry.deckhouse.io/deckhouse/ce). By default, https will be used, if you need
http - provide '--scheme' flag with http value
|
- Use the installer image tag of the corresponding version. For example, if you want to install the
v1.44.3 release, use the your.private.registry.com/deckhouse/install:v1.44.3 image.
- Specify the corresponding version number in the deckhouse.devBranch parameter in the InitConfiguration resource.
Do not specify the deckhouse.releaseChannel parameter in the InitConfiguration resource.
|
- Дождитесь перехода пода Deckhouse в статус
Ready . Если под находится в статусе ImagePullBackoff , перезапустите его.
- Дождитесь применения bashible новых настроек на master-узле. В журнале bashible на master-узле (
journalctl -u bashible ) должно появится сообщение Configuration is in sync, nothing to do .
- Если необходимо отключить автоматическое обновление Deckhouse через сторонний registry, удалите параметр
releaseChannel из конфигурации модуля deckhouse .
- Проверьте, не осталось ли в кластере подов с оригинальным адресом registry:
|
If you want to disable automatic updates for an already installed Deckhouse (including patch release updates), remove the releaseChannel parameter from the deckhouse module configuration.
| shell
kubectl get pods -A -o json | jq -r ‘.items[] | select(.spec.containers[]
| select(.image | startswith(“registry.deckhouse”))) | .metadata.namespace + “\t” + .metadata.name’ | sort | uniq
|
Using a proxy server
| Как создать кластер и запустить Deckhouse без использования каналов обновлений?
|
This feature is available in the following editions: BE, SE, SE+, EE.
| Этот способ следует использовать только в случае, если в изолированном приватном registry нет образов, содержащих информацию о каналах обновлений.
|
| Если необходимо установить Deckhouse с отключенным автоматическим обновлением:
|
- Prepare the VM for setting up the proxy. The machine must be accessible to the nodes that will use it as a proxy and be connected to the Internet.
- Install Squid on the server (here and further examples for Ubuntu):
|
- Используйте тег образа установщика соответствующей версии. Например, если вы хотите установить релиз
v1.44.3 , используйте образ your.private.registry.com/deckhouse/install:v1.44.3 .
- Укажите соответствующий номер версии в параметре deckhouse.devBranch в ресурсе InitConfiguration.
Не указывайте параметр deckhouse.releaseChannel в ресурсе InitConfiguration.
|
shell
apt-get install squid
| Если вы хотите отключить автоматические обновления у уже установленного Deckhouse (включая обновления patch-релизов), удалите параметр releaseChannel из конфигурации модуля deckhouse .
|
| Использование proxy-сервера
|
shell
cat «EOF > /etc/squid/squid.conf
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwords
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
| Доступно в следующих редакциях: BE, SE, SE+, EE, CSE Lite (1.67), CSE Pro (1.67).
|
Choose the port you want. Below we set it to default 3128.
http_port 3128
|
|
- Create a user for proxy-server authentication:
|
- Подготовьте сервер (или виртуальную машину). Сервер должен быть доступен с необходимых узлов кластера, и у него должен быть выход в интернет.
- Установите Squid (здесь и далее примеры для Ubuntu):
|
Example for the user test with the password test (be sure to change):
| shell
apt-get install squid
|
shell
echo “test:$(openssl passwd -crypt test)” » /etc/squid/passwords
|
- Создайте файл конфигурации Squid:
|
- Start squid and enable the system to start it up automatically:
| shell
cat «EOF > /etc/squid/squid.conf
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwords
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
|
shell
systemctl restart squid
systemctl enable squid
| Укажите необходимый порт. Порт 3128 используется по умолчанию.
http_port 3128
|
|
- Создайте пользователя и пароль для аутентификации на proxy-сервере:
|
Use the proxy parameter of the ClusterConfiguration resource to configure proxy usage.
| Пример для пользователя test с паролем test (обязательно измените):
|
An example:
| shell
echo “test:$(openssl passwd -crypt test)” » /etc/squid/passwords
|
yaml
apiVersion: deckhouse.io/v1
kind: ClusterConfiguration
clusterType: Cloud
cloud:
provider: OpenStack
prefix: main
podSubnetCIDR: 10.111.0.0/16
serviceSubnetCIDR: 10.222.0.0/16
kubernetesVersion: “Automatic”
cri: “Containerd”
clusterDomain: “cluster.local”
proxy:
httpProxy: “http://user:password@proxy.company.my:3128”
httpsProxy: “https://user:password@proxy.company.my:8443”
|
- Запустите Squid и включите его автоматический запуск при загрузке сервера:
|
| shell
systemctl restart squid
systemctl enable squid
|
Autoloading proxy variables for users at CLI
|
|
Since DKP v1.67, the file /etc/profile.d/d8-system-proxy.sh , which sets proxy variables for users, is no longer configurable. To autoload proxy variables for users at the CLI, use the NodeGroupConfiguration resource:
| Для настройки Deckhouse на использование proxy используйте параметр proxy ресурса ClusterConfiguration .
|
yaml
apiVersion: deckhouse.io/v1alpha1
kind: NodeGroupConfiguration
metadata:
name: profile-proxy.sh
spec:
bundles:
- ‘*’
nodeGroups:
- ‘*’
weight: 99
content: |
{{- if .proxy }}
{{- if .proxy.httpProxy }}
export HTTP_PROXY={{ .proxy.httpProxy | quote }}
export http_proxy=${HTTP_PROXY}
{{- end }}
{{- if .proxy.httpsProxy }}
export HTTPS_PROXY={{ .proxy.httpsProxy | quote }}
export https_proxy=${HTTPS_PROXY}
{{- end }}
{{- if .proxy.noProxy }}
export NO_PROXY={{ .proxy.noProxy | join “,” | quote }}
export no_proxy=${NO_PROXY}
{{- end }}
bb-sync-file /etc/profile.d/profile-proxy.sh - « EOF
export HTTP_PROXY=${HTTP_PROXY}
export http_proxy=${HTTP_PROXY}
export HTTPS_PROXY=${HTTPS_PROXY}
export https_proxy=${HTTPS_PROXY}
export NO_PROXY=${NO_PROXY}
export no_proxy=${NO_PROXY}
EOF
{{- else }}
rm -rf /etc/profile.d/profile-proxy.sh
{{- end }}
| Пример:
|
| yaml
apiVersion: deckhouse.io/v1
kind: ClusterConfiguration
clusterType: Cloud
cloud:
provider: OpenStack
prefix: main
podSubnetCIDR: 10.111.0.0/16
serviceSubnetCIDR: 10.222.0.0/16
kubernetesVersion: “Automatic”
cri: “Containerd”
clusterDomain: “cluster.local”
proxy:
httpProxy: “http://user:password@proxy.company.my:3128”
httpsProxy: “https://user:password@proxy.company.my:8443”
|
Changing the configuration
|
|
To apply node configuration changes, you need to run the dhctl converge using the Deckhouse installer. This command synchronizes the state of the nodes with the specified configuration.
| Автозагрузка переменных proxy пользователям в CLI
|
How do I change the configuration of a cluster?
| Начиная с версии платформы DKP v1.67 больше не настраивается файл /etc/profile.d/d8-system-proxy.sh , который устанавливал переменные proxy для пользователей. Для автозагрузки переменных proxy пользователям в CLI используйте ресурс NodeGroupConfiguration :
|
The general cluster parameters are stored in the ClusterConfiguration structure.
| yaml
apiVersion: deckhouse.io/v1alpha1
kind: NodeGroupConfiguration
metadata:
name: profile-proxy.sh
spec:
bundles:
- ‘*’
nodeGroups:
- ‘*’
weight: 99
content: |
{{- if .proxy }}
{{- if .proxy.httpProxy }}
export HTTP_PROXY={{ .proxy.httpProxy | quote }}
export http_proxy=${HTTP_PROXY}
{{- end }}
{{- if .proxy.httpsProxy }}
export HTTPS_PROXY={{ .proxy.httpsProxy | quote }}
export https_proxy=${HTTPS_PROXY}
{{- end }}
{{- if .proxy.noProxy }}
export NO_PROXY={{ .proxy.noProxy | join “,” | quote }}
export no_proxy=${NO_PROXY}
{{- end }}
bb-sync-file /etc/profile.d/profile-proxy.sh - « EOF
export HTTP_PROXY=${HTTP_PROXY}
export http_proxy=${HTTP_PROXY}
export HTTPS_PROXY=${HTTPS_PROXY}
export https_proxy=${HTTPS_PROXY}
export NO_PROXY=${NO_PROXY}
export no_proxy=${NO_PROXY}
EOF
{{- else }}
rm -rf /etc/profile.d/profile-proxy.sh
{{- end }}
|
To change the general cluster parameters, run the command:
|
|
shell
kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse – deckhouse-controller edit cluster-configuration
| Изменение конфигурации
|
After saving the changes, Deckhouse will bring the cluster configuration to the state according to the changed configuration. Depending on the size of the cluster, this may take some time.
| Для применения изменений конфигурации узлов необходимо выполнить команду dhctl converge , запустив инсталлятор Deckhouse. Эта команда синхронизирует состояние узлов с указанным в конфигурации.
|
How do I change the configuration of a cloud provider in a cluster?
| Как изменить конфигурацию кластера?
|
Cloud provider setting of a cloud of hybrid cluster are stored in the <PROVIDER_NAME>ClusterConfiguration structure, where <PROVIDER_NAME> — name/code of the cloud provider. E.g., for an OpenStack provider, the structure will be called OpenStackClusterConfiguration.
| Общие параметры кластера хранятся в структуре ClusterConfiguration.
|
Regardless of the cloud provider used, its settings can be changed using the following command:
| Чтобы изменить общие параметры кластера, выполните команду:
|
shell
kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse – deckhouse-controller edit provider-cluster-configuration
| shell
kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse – deckhouse-controller edit cluster-configuration
|
How do I change the configuration of a static cluster?
| После сохранения изменений Deckhouse приведет конфигурацию кластера к измененному состоянию. В зависимости от размеров кластера это может занять какое-то время.
|
Settings of a static cluster are stored in the StaticClusterConfiguration structure.
| Как изменить конфигурацию облачного провайдера в кластере?
|
To change the settings of a static cluster, run the command:
| Настройки используемого облачного провайдера в облачном или гибридном кластере хранятся в структуре <PROVIDER_NAME>ClusterConfiguration , где <PROVIDER_NAME> — название/код провайдера. Например, для провайдера OpenStack структура будет называться OpenStackClusterConfiguration.
|
shell
kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse – deckhouse-controller edit static-cluster-configuration
| Независимо от используемого облачного провайдера его настройки можно изменить с помощью следующей команды:
|
How to switch Deckhouse edition to CE/BE/SE/SE+/EE?
| shell
kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse – deckhouse-controller edit provider-cluster-configuration
|
- The functionality of this guide is validated for Deckhouse versions starting from
v1.70 . If your version is older, use the corresponding documentation.
- For commercial editions, you need a valid license key that supports the desired edition. If necessary, you can request a temporary key.
- The guide assumes the use of the public container registry address:
registry.deckhouse.io . If you are using a different container registry address, modify the commands accordingly or refer to the guide on switching Deckhouse to use a different registry.
- The Deckhouse CE/BE/SE/SE+ editions do not support the cloud providers
dynamix , openstack , VCD , and vSphere (vSphere is supported in SE+) and a number of modules. A detailed comparison is available in the documentation.
- All commands are executed on the master node of the existing cluster with
root user.
| Как изменить конфигурацию статического кластера?
|
- Prepare variables for the license token and new edition name:
| Настройки статического кластера хранятся в структуре StaticClusterConfiguration.
|
It is not necessary to fill the NEW_EDITION and AUTH_STRING variables when switching to Deckhouse CE edition.
The NEW_EDITION variable should match your desired Deckhouse edition. For example, to switch to:
- CE, the variable should be
ce ;
- BE, the variable should be
be ;
- SE, the variable should be
se ;
- SE+, the variable should be
se-plus ;
- EE, the variable should be
ee .
| Чтобы изменить параметры статического кластера, выполните команду:
|
shell
NEW_EDITION=
LICENSE_TOKEN=
AUTH_STRING="$(echo -n license-token:${LICENSE_TOKEN} | base64 )"
| shell
kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse – deckhouse-controller edit static-cluster-configuration
|
- Ensure the Deckhouse queue is empty and error-free.
| Как переключить редакцию Deckhouse на CE/BE/SE/SE+/EE?
|
- Create a
NodeGroupConfiguration resource for temporary authorization in registry.deckhouse.io :
|
- Работоспособность инструкции подтверждена только для версий Deckhouse от
v1.70 . Если ваша версия младше, используйте соответствующую ей документацию.
- Для коммерческих изданий требуется действующий лицензионный ключ с поддержкой нужного издания. При необходимости можно запросить временный ключ.
- Инструкция подразумевает использование публичного адреса container registry:
registry.deckhouse.ru . В случае использования другого адреса container registry измените команды или воспользуйтесь инструкцией по переключению Deckhouse на использование стороннего registry.
- В редакциях Deckhouse CE/BE/SE/SE+ не поддерживается работа облачных провайдеров
dynamix , openstack , VCD , vSphere (vSphere поддерживается в редакции SE+) и ряда модулей, подробное сравнение в документации.
- Все команды выполняются на master-узле существующего кластера под пользователем
root .
|
Skip this step if switching to Deckhouse CE.
| Ниже описаны шаги для переключения кластера с любой редакцию на одну из поддерживаемых: Community Edition, Basic Edition, Standard Edition, Standard Edition+, Enterprise Edition.
|
shell
kubectl apply -f - «EOF
apiVersion: deckhouse.io/v1alpha1
kind: NodeGroupConfiguration
metadata:
name: containerd-$NEW_EDITION-config.sh
spec:
nodeGroups:
- ‘*’
bundles:
- ‘*’
weight: 30
content: |
_on_containerd_config_changed() {
bb-flag-set containerd-need-restart
}
bb-event-on ‘containerd-config-file-changed’ ‘_on_containerd_config_changed’
mkdir -p /etc/containerd/conf.d
bb-sync-file /etc/containerd/conf.d/$NEW_EDITION-registry.toml - containerd-config-file-changed « “EOF_TOML”
[plugins]
[plugins.”io.containerd.grpc.v1.cri”]
[plugins.”io.containerd.grpc.v1.cri”.registry.configs]
[plugins.”io.containerd.grpc.v1.cri”.registry.configs.”registry.deckhouse.io”.auth]
auth = “$AUTH_STRING”
EOF_TOML
EOF
|
- Подготовьте переменные с токеном лицензии и названием новой редакции:
|
Wait for the /etc/containerd/conf.d/$NEW_EDITION-registry.toml file to appear on the nodes and for bashible synchronization to complete. To track the synchronization status, check the UPTODATE value (the number of nodes in this status should match the total number of nodes (NODES ) in the group):
|
Заполнять переменные NEW_EDITION и AUTH_STRING при переключении на редакцию Deckhouse CE не требуется.
Значение переменной NEW_EDITION должно быть равно желаемой редакции Deckhouse, например для переключения на редакцию:
- CE, переменная должна быть
ce ;
- BE, переменная должна быть
be ;
- SE, переменная должна быть
se ;
- SE+, переменная должна быть
se-plus ;
- EE, переменная должна быть
ee .
|
shell
kubectl get ng -o custom-columns=NAME:.metadata.name,NODES:.status.nodes,READY:.status.ready,UPTODATE:.status.upToDate -w
| shell
NEW_EDITION=
LICENSE_TOKEN=
AUTH_STRING="$(echo -n license-token:${LICENSE_TOKEN} | base64 )"
|
Example output:
|
- Проверьте, чтобы очередь Deckhouse была пустой и без ошибок.
|
console
NAME NODES READY UPTODATE
master 1 1 1
worker 2 2 2
|
- Создайте ресурс
NodeGroupConfiguration для переходной авторизации в registry.deckhouse.ru :
|
Also, a message stating Configuration is in sync, nothing to do should appear in the systemd service log for bashible by executing the following command:
|
При переходе на редакцию Deckhouse CE пропустите этот шаг.
|
shell
journalctl -u bashible -n 5
| shell
kubectl apply -f - «EOF
apiVersion: deckhouse.io/v1alpha1
kind: NodeGroupConfiguration
metadata:
name: containerd-$NEW_EDITION-config.sh
spec:
nodeGroups:
- ‘*’
bundles:
- ‘*’
weight: 30
content: |
_on_containerd_config_changed() {
bb-flag-set containerd-need-restart
}
bb-event-on ‘containerd-config-file-changed’ ‘_on_containerd_config_changed’
mkdir -p /etc/containerd/conf.d
bb-sync-file /etc/containerd/conf.d/$NEW_EDITION-registry.toml - containerd-config-file-changed « “EOF_TOML”
[plugins]
[plugins.”io.containerd.grpc.v1.cri”]
[plugins.”io.containerd.grpc.v1.cri”.registry.configs]
[plugins.”io.containerd.grpc.v1.cri”.registry.configs.”registry.deckhouse.ru”.auth]
auth = “$AUTH_STRING”
EOF_TOML
EOF
|
Example output:
| Дождитесь появления файла /etc/containerd/conf.d/$NEW_EDITION-registry.toml на узлах и завершения синхронизации bashible. Чтобы отследить статус синхронизации, проверьте значение UPTODATE (число узлов в этом статусе должно совпадать с общим числом узлов (NODES ) в группе):
|
console
Aug 21 11:04:28 master-ee-to-se-0 bashible.sh[53407]: Configuration is in sync, nothing to do.
Aug 21 11:04:28 master-ee-to-se-0 bashible.sh[53407]: Annotate node master-ee-to-se-0 with annotation node.deckhouse.io/configuration-checksum=9cbe6db6c91574b8b732108a654c99423733b20f04848d0b4e1e2dadb231206a
Aug 21 11:04:29 master ee-to-se-0 bashible.sh[53407]: Successful annotate node master-ee-to-se-0 with annotation node.deckhouse.io/configuration-checksum=9cbe6db6c91574b8b732108a654c99423733b20f04848d0b4e1e2dadb231206a
Aug 21 11:04:29 master-ee-to-se-0 systemd[1]: bashible.service: Deactivated successfully.
| shell
kubectl get ng -o custom-columns=NAME:.metadata.name,NODES:.status.nodes,READY:.status.ready,UPTODATE:.status.upToDate -w
|
- Start a temporary pod for the new Deckhouse edition to obtain current digests and a list of modules:
| Пример вывода:
console
NAME NODES READY UPTODATE
master 1 1 1
worker 2 2 2
|
shell
DECKHOUSE_VERSION=$(kubectl -n d8-system get deploy deckhouse -ojson | jq -r ‘.spec.template.spec.containers[] | select(.name == “deckhouse”) | .image’ | awk -F: ‘{print $2}’)
kubectl run $NEW_EDITION-image –image=registry.deckhouse.io/deckhouse/$NEW_EDITION/install:$DECKHOUSE_VERSION –command sleep –infinity
| Также в журнале systemd-сервиса bashible должно появиться сообщение Configuration is in sync, nothing to do в результате выполнения следующей команды:
|
- Once the pod is in
Running state, execute the following commands:
| shell
journalctl -u bashible -n 5
|
shell
NEW_EDITION_MODULES=$(kubectl exec $NEW_EDITION-image – ls -l deckhouse/modules/ | grep -oE “\d.-\w” | awk {‘print $9’} | cut -c5-)
USED_MODULES=$(kubectl get modules -o custom-columns=NAME:.metadata.name,SOURCE:.properties.source,STATE:.properties.state,ENABLED:.status.phase | grep Embedded | grep -E ‘Enabled|Ready’ | awk {‘print $1’})
MODULES_WILL_DISABLE=$(echo $USED_MODULES | tr ‘ ‘ ‘\n’ | grep -Fxv -f <(echo $NEW_EDITION_MODULES | tr ‘ ‘ ‘\n’))
| Пример вывода:
|
- Verify that the modules used in the cluster are supported in the desired edition. To see the list of modules not supported in the new edition and will be disabled:
| console
Aug 21 11:04:28 master-ee-to-se-0 bashible.sh[53407]: Configuration is in sync, nothing to do.
Aug 21 11:04:28 master-ee-to-se-0 bashible.sh[53407]: Annotate node master-ee-to-se-0 with annotation node.deckhouse.io/ configuration-checksum=9cbe6db6c91574b8b732108a654c99423733b20f04848d0b4e1e2dadb231206a
Aug 21 11:04:29 master ee-to-se-0 bashible.sh[53407]: Successful annotate node master-ee-to-se-0 with annotation node.deckhouse.io/ configuration-checksum=9cbe6db6c91574b8b732108a654c99423733b20f04848d0b4e1e2dadb231206a
Aug 21 11:04:29 master-ee-to-se-0 systemd[1]: bashible.service: Deactivated successfully.
|
shell
echo $MODULES_WILL_DISABLE
|
- Запустите временный под Deckhouse новой редакции, чтобы получить актуальные дайджесты и список модулей:
|
Check the list to ensure the functionality of these modules is not in use in your cluster and you are ready to disable them.
| shell
DECKHOUSE_VERSION=$(kubectl -n d8-system get deploy deckhouse -ojson | jq -r ‘.spec.template.spec.containers[] | select(.name == “deckhouse”) | .image’ | awk -F: ‘{print $2}’)
kubectl run $NEW_EDITION-image –image=registry.deckhouse.ru/deckhouse/$NEW_EDITION/install:$DECKHOUSE_VERSION –command sleep – infinity
|
Disable the modules not supported by the new edition:
|
- После перехода пода в статус
Running выполните следующие команды:
|
shell
echo $MODULES_WILL_DISABLE | tr ‘ ‘ ‘\n’ | awk {‘print “d8 platform module disable”,$1’} | bash
| shell
NEW_EDITION_MODULES=$(kubectl exec $NEW_EDITION-image – ls -l deckhouse/modules/ | grep -oE “\d.-\w” | awk {‘print $9’} | cut -c5-)
USED_MODULES=$(kubectl get modules -o custom-columns=NAME:.metadata.name,SOURCE:.properties.source,STATE:.properties.state,ENABLED:.status.phase | grep Embedded | grep -E ‘Enabled|Ready’ | awk {‘print $1’})
MODULES_WILL_DISABLE=$(echo $USED_MODULES | tr ‘ ‘ ‘\n’ | grep -Fxv -f <(echo $NEW_EDITION_MODULES | tr ‘ ‘ ‘\n’))
|
Wait for the Deckhouse pod to reach Ready state and ensure all tasks in the queue are completed.
|
- Убедитесь, что используемые в кластере модули поддерживаются в желаемой редакции.
Посмотреть список модулей, которые не поддерживаются в новой редакции и будут отключены:
|
- Execute the
deckhouse-controller helper change-registry command from the Deckhouse pod with the new edition parameters:
| shell
echo $MODULES_WILL_DISABLE
|
To switch to BE/SE/SE+/EE editions:
|
Проверьте полученный список и убедитесь, что функциональность указанных модулей не используется вами в кластере и вы готовы их отключить.
|
shell
kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse – deckhouse-controller helper change-registry –user=license-token –password=$LICENSE_TOKEN –new-deckhouse-tag=$DECKHOUSE_VERSION registry.deckhouse.io/deckhouse/$NEW_EDITION
| Отключите неподдерживаемые новой редакцией модули:
|
To switch to CE edition:
| shell
echo $MODULES_WILL_DISABLE | tr ‘ ‘ ‘\n’ | awk {‘print “d8 platform module disable”,$1’} | bash
|
shell
kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse – deckhouse-controller helper change-registry –new-deckhouse-tag=$DECKHOUSE_VERSION registry.deckhouse.io/deckhouse/ce
| Дождитесь, пока под Deckhouse перейдёт в состояние Ready и убедитесь в выполнении всех задач в очереди.
|
- Check if there are any pods with the Deckhouse old edition address left in the cluster, where
<YOUR-PREVIOUS-EDITION> your previous edition name:
|
- Выполните команду
deckhouse-controller helper change-registry из пода Deckhouse с параметрами новой редакции:
|
shell
kubectl get pods -A -o json | jq -r ‘.items[] | select(.spec.containers[] | select(.image | contains(“deckhouse.io/deckhouse/"))) | .metadata.namespace + "\t" + .metadata.name' | sort | uniq
| Для переключения на BE/SE/SE+/EE издания:
|
- Delete temporary files, the
NodeGroupConfiguration resource, and variables:
| shell
kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse – deckhouse-controller helper change-registry –user=license-token –password=$LICENSE_TOKEN –new-deckhouse-tag=$DECKHOUSE_VERSION registry.deckhouse.ru/deckhouse/$NEW_EDITION
|
Skip this step if switching to Deckhouse CE.
| Для переключения на CE издание:
|
shell
kubectl delete ngc containerd-$NEW_EDITION-config.sh
kubectl delete pod $NEW_EDITION-image
kubectl apply -f - «EOF
apiVersion: deckhouse.io/v1alpha1
kind: NodeGroupConfiguration
metadata:
name: del-temp-config.sh
spec:
nodeGroups:
- ‘*’
bundles:
- ‘*’
weight: 90
content: |
if [ -f /etc/containerd/conf.d/$NEW_EDITION-registry.toml ]; then
rm -f /etc/containerd/conf.d/$NEW_EDITION-registry.toml
fi
EOF
| shell
kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse – deckhouse-controller helper change-registry –new-deckhouse-tag=$DECKHOUSE_VERSION registry.deckhouse.ru/deckhouse/ce
|
After the bashible synchronization completes (synchronization status on the nodes is shown by the UPTODATE value in NodeGroup), delete the created NodeGroupConfiguration resource:
|
- Проверьте, не осталось ли в кластере подов со старым адресом registry, где
<YOUR-PREVIOUS-EDITION> — название вашей прошлой редакции:
|
shell
kubectl delete ngc del-temp-config.sh
| shell
kubectl get pods -A -o json | jq -r ‘.items[] | select(.spec.containers[] | select(.image | contains(“deckhouse.ru/deckhouse/"))) | .metadata.namespace + "\t" + .metadata.name' | sort | uniq
|
How do I get access to Deckhouse controller in multimaster cluster?
|
- Удалите временные файлы, ресурс
NodeGroupConfiguration и переменные:
|
In clusters with multiple master nodes Deckhouse runs in high availability mode (in several instances). To access the active Deckhouse controller, you can use the following command (as an example of the command deckhouse-controller queue list ):
|
При переходе на редакцию Deckhouse CE пропустите этот шаг.
|
shell
kubectl -n d8-system exec -it svc/deckhouse-leader -c deckhouse – deckhouse-controller queue list
| shell
kubectl delete ngc containerd-$NEW_EDITION-config.sh
kubectl delete pod $NEW_EDITION-image
kubectl apply -f - «EOF
apiVersion: deckhouse.io/v1alpha1
kind: NodeGroupConfiguration
metadata:
name: del-temp-config.sh
spec:
nodeGroups:
- ‘*’
bundles:
- ‘*’
weight: 90
content: |
if [ -f /etc/containerd/conf.d/$NEW_EDITION-registry.toml ]; then
rm -f /etc/containerd/conf.d/$NEW_EDITION-registry.toml
fi
EOF
|
How do I upgrade the Kubernetes version in a cluster?
| После завершения синхронизации bashible (статус синхронизации на узлах отображается по значению UPTODATE у NodeGroup) удалите созданный ресурс NodeGroupConfiguration:
|
To upgrade the Kubernetes version in a cluster change the kubernetesVersion parameter in the ClusterConfiguration structure by making the following steps:
| shell
kubectl delete ngc del-temp-config.sh
|
- Run the command:
| Как переключить Deckhouse EE на CSE?
|
shell
kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse – deckhouse-controller edit cluster-configuration
|
- Инструкция подразумевает использование публичного адреса container registry:
registry-cse.deckhouse.ru . В случае использования другого адреса container registry измените команды или воспользуйтесь инструкцией по переключению Deckhouse на использование стороннего registry.
- В Deckhouse CSE не поддерживается работа облачных кластеров и некоторых модулей. Подробнее о поддерживаемых модулях можно узнать на странице сравнения редакций.
- Миграция на Deckhouse CSE возможна только с версии Deckhouse EE 1.58, 1.64 или 1.67.
- Актуальные версии Deckhouse CSE: 1.58.2 для релиза 1.58, 1.64.1 для релиза 1.64 и 1.67.0 для релиза 1.67. Эти версии потребуется использовать далее для указания переменной
DECKHOUSE_VERSION .
- Переход поддерживается только между одинаковыми минорными версиями, например, с Deckhouse EE 1.64 на Deckhouse CSE 1.64. Переход с версии EE 1.58 на CSE 1.67 потребует промежуточной миграции: сначала на EE 1.64, затем на EE 1.67, и только после этого — на CSE 1.67. Попытки обновить версию на несколько релизов сразу могут привести к неработоспособности кластера.
- Deckhouse CSE 1.58 и 1.64 поддерживает Kubernetes версии 1.27, Deckhouse CSE 1.67 поддерживает Kubernetes версий 1.27 и 1.29.
- При переключении на Deckhouse CSE возможна временная недоступность компонентов кластера.
|
- Change the
kubernetesVersion field.
- Save the changes. Cluster nodes will start updating sequentially.
- Wait for the update to finish. You can track the progress of the update using the
kubectl get no command. The update is completed when the new version appears in the command’s output for each cluster node in the VERSION column.
| Для переключения кластера Deckhouse Enterprise Edition на Certified Security Edition выполните следующие действия (все команды выполняются на master-узле кластера от имени пользователя с настроенным контекстом kubectl или от имени суперпользователя):
|
How do I run Deckhouse on a particular node?
|
- Настройте кластер на использование необходимой версии Kubernetes (см. примечание выше про доступные версии Kubernetes). Для этого:
- Выполните команду:
|
Set the nodeSelector parameter of the deckhouse module and avoid setting tolerations . The necessary values will be assigned to the tolerations parameter automatically.
| shell
kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse – deckhouse-controller edit cluster-configuration
|
Use only nodes with the CloudStatic or Static type to run Deckhouse. Also, avoid using a NodeGroup containing only one node to run Deckhouse.
|
- Измените параметр
kubernetesVersion на необходимое значение, например, "1.27" (в кавычках) для Kubernetes 1.27.
- Сохраните изменения. Узлы кластера начнут последовательно обновляться.
- Дождитесь окончания обновления. Отслеживать ход обновления можно с помощью команды
kubectl get no . Обновление можно считать завершенным, когда в выводе команды у каждого узла кластера в колонке VERSION появится обновленная версия.
|
Here is an example of the module configuration:
|
- Подготовьте переменные с токеном лицензии и создайте NodeGroupConfiguration для переходной авторизации в
registry-cse.deckhouse.ru :
|
yaml
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: deckhouse
spec:
version: 1
settings:
nodeSelector:
node-role.deckhouse.io/deckhouse: “”
| shell
LICENSE_TOKEN=
AUTH_STRING="$(echo -n license-token:${LICENSE_TOKEN} | base64 )"
kubectl apply -f - <<EOF
---
apiVersion: deckhouse.io/v1alpha1
kind: NodeGroupConfiguration
metadata:
name: containerd-cse-config.sh
spec:
nodeGroups:
- ‘*’
bundles:
- ‘*’
weight: 30
content: |
_on_containerd_config_changed() {
bb-flag-set containerd-need-restart
}
bb-event-on ‘containerd-config-file-changed’ ‘_on_containerd_config_changed’
|
How do I force IPv6 to be disabled on Deckhouse cluster nodes?
| mkdir -p /etc/containerd/conf.d
bb-sync-file /etc/containerd/conf.d/cse-registry.toml - containerd-config-file-changed « “EOF_TOML”
[plugins]
[plugins.”io.containerd.grpc.v1.cri”]
[plugins.”io.containerd.grpc.v1.cri”.registry]
[plugins.”io.containerd.grpc.v1.cri”.registry.mirrors]
[plugins.”io.containerd.grpc.v1.cri”.registry.mirrors.”registry-cse.deckhouse.ru”]
endpoint = [“https://registry-cse.deckhouse.ru”]
[plugins.”io.containerd.grpc.v1.cri”.registry.configs]
[plugins.”io.containerd.grpc.v1.cri”.registry.configs.”registry-cse.deckhouse.ru”.auth]
auth = “$AUTH_STRING”
EOF_TOML
EOF
|
Internal communication between Deckhouse cluster components is performed via IPv4 protocol. However, at the operating system level of the cluster nodes, IPv6 is usually active by default. This leads to automatic assignment of IPv6 addresses to all network interfaces, including Pod interfaces. This results in unwanted network traffic - for example, redundant DNS queries like AAAAA - which can affect performance and make debugging network communications more difficult.
| Дождитесь завершения синхронизации и появления файла /etc/containerd/conf.d/cse-registry.toml на узлах.
|
To correctly disable IPv6 at the node level in a Deckhouse-managed cluster, it is sufficient to set the necessary parameters via the NodeGroupConfiguration resource:
| Статус синхронизации можно отследить по значению UPTODATE (отображаемое число узлов в этом статусе должно совпадать с общим числом узлов (NODES ) в группе):
|
yaml
apiVersion: deckhouse.io/v1alpha1
kind: NodeGroupConfiguration
metadata:
name: disable-ipv6.sh
spec:
nodeGroups:
- ‘*’
bundles:
- ‘’
weight: 50
content: |
GRUB_FILE_PATH=”/etc/default/grub”
if ! grep -q “ipv6.disable” “$GRUB_FILE_PATH”; then
sed -E -e ‘s/^(GRUB_CMDLINE_LINUX_DEFAULT=”[^”])”/\1 ipv6.disable=1”/’ -i “$GRUB_FILE_PATH”
update-grub
bb-flag-set reboot
fi
| shell
kubectl get ng -o custom-columns=NAME:.metadata.name,NODES:.status.nodes,READY:.status.ready,UPTODATE:.status.upToDate -w
|
After applying the resource, the GRUB settings will be updated and the cluster nodes will begin a sequential reboot to apply the changes.
| Пример вывода:
|
| console
NAME NODES READY UPTODATE
master 1 1 1
worker 2 2 2
|
| В журнале systemd-сервиса bashible должно появиться сообщение Configuration is in sync, nothing to do в результате выполнения следующей команды:
|
| shell
journalctl -u bashible -n 5
|
| Пример вывода:
|
| console
Aug 21 11:04:28 master-ee-to-cse-0 bashible.sh[53407]: Configuration is in sync, nothing to do.
Aug 21 11:04:28 master-ee-to-cse-0 bashible.sh[53407]: Annotate node master-ee-to-cse-0 with annotation node.deckhouse.io/configuration-checksum=9cbe6db6c91574b8b732108a654c99423733b20f04848d0b4e1e2dadb231206a
Aug 21 11:04:29 master-ee-to-cse-0 bashible.sh[53407]: Successful annotate node master-ee-to-cse-0 with annotation node.deckhouse.io/configuration-checksum=9cbe6db6c91574b8b732108a654c99423733b20f04848d0b4e1e2dadb231206a
Aug 21 11:04:29 master-ee-to-cse-0 systemd[1]: bashible.service: Deactivated successfully.
|
|
- Выполните следующие команды для запуска временного пода Deckhouse CSE для получения актуальных дайджестов и списка модулей:
|
| shell
DECKHOUSE_VERSION=v<ВЕРСИЯ_DECKHOUSE_CSE>
Например, DECKHOUSE_VERSION=v1.58.2
kubectl run cse-image --image=registry-cse.deckhouse.ru/deckhouse/cse/install:$DECKHOUSE_VERSION --command sleep -- infinity
|
| Как только под перейдёт в статус Running , выполните следующие команды:
|
| shell
CSE_SANDBOX_IMAGE=$(kubectl exec cse-image – cat deckhouse/candi/images_digests.json | grep pause | grep -oE ‘sha256:\w’)
CSE_K8S_API_PROXY=$(kubectl exec cse-image – cat deckhouse/candi/images_digests.json | grep kubernetesApiProxy | grep -oE ‘sha256:\w’)
CSE_MODULES=$(kubectl exec cse-image – ls -l deckhouse/modules/ | awk {‘print $9’} |grep -oP “\d.-\w” | cut -c5-)
USED_MODULES=$(kubectl get modules -o custom-columns=NAME:.metadata.name,SOURCE:.properties.source,STATE:.properties.state,ENABLED:.status.phase | grep Embedded | grep -E ‘Enabled|Ready’ | awk {‘print $1’})
MODULES_WILL_DISABLE=$(echo $USED_MODULES | tr ‘ ‘ ‘\n’ | grep -Fxv -f <(echo $CSE_MODULES | tr ‘ ‘ ‘\n’))
CSE_DECKHOUSE_KUBE_RBAC_PROXY=$(kubectl exec cse-image – cat deckhouse/candi/images_digests.json | jq -r “.common.kubeRbacProxy”)
|
|
Дополнительная команда, которая необходима только при переключении на Deckhouse CSE версии 1.64:
shell
CSE_DECKHOUSE_INIT_CONTAINER=$(kubectl exec cse-image – cat deckhouse/candi/images_digests.json | jq -r “.common.init”)
|
|
- Убедитесь, что используемые в кластере модули поддерживаются в Deckhouse CSE.
Например, в Deckhouse CSE 1.58 и 1.64 отсутствует модуль cert-manager. Поэтому, перед отключением модуля cert-manager необходимо перевести режим работы HTTPS некоторых компонентов (например user-authn или prometheus) на альтернативные варианты работы, либо изменить глобальный параметр отвечающий за режим работы HTTPS в кластере.
|
| Отобразить список модулей, которые не поддерживаются в Deckhouse CSE и будут отключены, можно следующей командой:
|
| shell
echo $MODULES_WILL_DISABLE
|
|
Проверьте список и убедитесь, что функциональность указанных модулей не задействована вами в кластере, и вы готовы к их отключению.
|
| Отключите неподдерживаемые в Deckhouse CSE модули:
|
| shell
echo $MODULES_WILL_DISABLE |
tr ‘ ‘ ‘\n’ | awk {‘print “kubectl -n d8-system exec deploy/deckhouse – deckhouse-controller module disable”,$1’} | bash
|
| В Deckhouse CSE не поддерживается компонент earlyOOM. Отключите его с помощью настройки.
|
| Дождитесь перехода пода Deckhouse в статус Ready и выполнения всех задач в очереди.
|
| shell
kubectl -n d8-system exec -it svc/deckhouse-leader -c deckhouse – deckhouse-controller queue list
|
| Проверьте, что отключенные модули перешли в состояние Disabled .
|
| shell
kubectl get modules
|
|
- Создайте NodeGroupConfiguration:
|
| shell
kubectl apply -f - «EOF
apiVersion: deckhouse.io/v1alpha1
kind: NodeGroupConfiguration
metadata:
name: cse-set-sha-images.sh
spec:
nodeGroups:
- ‘*’
bundles:
- ‘*’
weight: 50
content: |
_on_containerd_config_changed() {
bb-flag-set containerd-need-restart
}
bb-event-on ‘containerd-config-file-changed’ ‘_on_containerd_config_changed’
|
| bb-sync-file /etc/containerd/conf.d/cse-sandbox.toml - containerd-config-file-changed « “EOF_TOML”
[plugins]
[plugins.”io.containerd.grpc.v1.cri”]
sandbox_image = “registry-cse.deckhouse.ru/deckhouse/cse@$CSE_SANDBOX_IMAGE”
EOF_TOML
|
| sed -i ‘s|image: .|image: registry-cse.deckhouse.ru/deckhouse/cse@$CSE_K8S_API_PROXY|’ /var/lib/bashible/bundle_steps/051_pull_and_configure_kubernetes_api_proxy.sh
sed -i ‘s|crictl pull .|crictl pull registry-cse.deckhouse.ru/deckhouse/cse@$CSE_K8S_API_PROXY|’ /var/lib/bashible/bundle_steps/051_pull_and_configure_kubernetes_api_proxy.sh
EOF
|
| Дождитесь завершения синхронизации bashible на всех узлах.
|
| Состояние синхронизации можно отследить по значению UPTODATE статуса (отображаемое число узлов в этом статусе должно совпадать с общим числом узлов (NODES ) в группе):
|
| shell
kubectl get ng -o custom-columns=NAME:.metadata.name,NODES:.status.nodes,READY:.status.ready,UPTODATE:.status.upToDate -w
|
| В журнале systemd-сервиса bashible на узлах должно появиться сообщение Configuration is in sync, nothing to do в результате выполнения следующей команды:
|
| shell
journalctl -u bashible -n 5
|
| Пример вывода:
|
| console
Aug 21 11:04:28 master-ee-to-cse-0 bashible.sh[53407]: Configuration is in sync, nothing to do.
Aug 21 11:04:28 master-ee-to-cse-0 bashible.sh[53407]: Annotate node master-ee-to-cse-0 with annotation node.deckhouse.io/configuration-checksum=9cbe6db6c91574b8b732108a654c99423733b20f04848d0b4e1e2dadb231206a
Aug 21 11:04:29 master-ee-to-cse-0 bashible.sh[53407]: Successful annotate node master-ee-to-cse-0 with annotation node.deckhouse.io/configuration-checksum=9cbe6db6c91574b8b732108a654c99423733b20f04848d0b4e1e2dadb231206a
Aug 21 11:04:29 master-ee-to-cse-0 systemd[1]: bashible.service: Deactivated successfully.
|
|
- Актуализируйте секрет доступа к registry Deckhouse CSE, выполнив следующую команду:
|
| shell
kubectl -n d8-system create secret generic deckhouse-registry
–from-literal=”.dockerconfigjson”=”{"auths": { "registry-cse.deckhouse.ru": { "username": "license-token", "password": "$LICENSE_TOKEN", "auth": "$AUTH_STRING" }}}”
–from-literal=”address”=registry-cse.deckhouse.ru
–from-literal=”path”=/deckhouse/cse
–from-literal=”scheme”=https
–type=kubernetes.io/dockerconfigjson
–dry-run=’client’
-o yaml | kubectl -n d8-system exec -i svc/deckhouse-leader -c deckhouse – kubectl replace -f -
|
|
- Измените образ Deckhouse на образ Deckhouse CSE:
|
| Команда для Deckhouse CSE версии 1.58:
|
| shell
kubectl -n d8-system set image deployment/deckhouse kube-rbac-proxy=registry-cse.deckhouse.ru/deckhouse/cse@$CSE_DECKHOUSE_KUBE_RBAC_PROXY deckhouse=registry-cse.deckhouse.ru/deckhouse/cse:$DECKHOUSE_VERSION
|
| Команда для Deckhouse CSE версии 1.64 и 1.67:
|
| shell
kubectl -n d8-system set image deployment/deckhouse init-downloaded-modules=registry-cse.deckhouse.ru/deckhouse/cse@$CSE_DECKHOUSE_INIT_CONTAINER kube-rbac-proxy=registry-cse.deckhouse.ru/deckhouse/cse@$CSE_DECKHOUSE_KUBE_RBAC_PROXY deckhouse=registry-cse.deckhouse.ru/deckhouse/cse:$DECKHOUSE_VERSION
|
|
- Дождитесь перехода пода Deckhouse в статус
Ready и выполнения всех задач в очереди. Если в процессе возникает ошибка ImagePullBackOff , подождите автоматического перезапуска пода.
|
| Посмотреть статус пода Deckhouse:
|
| shell
kubectl -n d8-system get po -l app=deckhouse
|
| Проверить состояние очереди Deckhouse:
|
| shell
kubectl -n d8-system exec deploy/deckhouse -c deckhouse – deckhouse-controller queue list
|
|
- Проверьте, не осталось ли в кластере подов с адресом registry для Deckhouse EE:
|
| shell
kubectl get pods -A -o json | jq -r ‘.items[] | select(.spec.containers[]
| select(.image | contains(“deckhouse.ru/deckhouse/ee”))) | .metadata.namespace + “\t” + .metadata.name’ | sort | uniq
|
| Если в выводе присутствуют поды модуля chrony, заново включите данный модуль (в Deckhouse CSE этот модуль по умолчанию выключен):
|
| shell
kubectl -n d8-system exec deploy/deckhouse – deckhouse-controller module enable chrony
|
|
- Очистите временные файлы, ресурс
NodeGroupConfiguration и переменные:
|
| shell
rm /tmp/cse-deckhouse-registry.yaml
|
| kubectl delete ngc containerd-cse-config.sh cse-set-sha-images.sh
|
| kubectl delete pod cse-image
|
| kubectl apply -f - «EOF
apiVersion: deckhouse.io/v1alpha1
kind: NodeGroupConfiguration
metadata:
name: del-temp-config.sh
spec:
nodeGroups:
- ‘*’
bundles:
- ‘*’
weight: 90
content: |
if [ -f /etc/containerd/conf.d/cse-registry.toml ]; then
rm -f /etc/containerd/conf.d/cse-registry.toml
fi
if [ -f /etc/containerd/conf.d/cse-sandbox.toml ]; then
rm -f /etc/containerd/conf.d/cse-sandbox.toml
fi
EOF
|
| После синхронизации (статус синхронизации на узлах можно отследить по значению UPTODATE у NodeGroup) удалите созданный ресурс NodeGroupConfiguration:
|
| shell
kubectl delete ngc del-temp-config.sh
|
| Как получить доступ к контроллеру Deckhouse в multi-master-кластере?
|
| В кластерах с несколькими master-узлами Deckhouse запускается в режиме высокой доступности (в нескольких экземплярах). Для доступа к активному контроллеру Deckhouse можно использовать следующую команду (на примере команды deckhouse-controller queue list ):
|
| shell
kubectl -n d8-system exec -it svc/deckhouse-leader -c deckhouse – deckhouse-controller queue list
|
| Как обновить версию Kubernetes в кластере?
|
| Чтобы обновить версию Kubernetes в кластере, измените параметр kubernetesVersion в структуре ClusterConfiguration, выполнив следующие шаги:
|
|
- Выполните команду:
|
| shell
kubectl -n d8-system exec -ti svc/deckhouse-leader
-c deckhouse – deckhouse-controller edit cluster-configuration
|
|
- Измените параметр
kubernetesVersion .
- Сохраните изменения. Узлы кластера начнут последовательно обновляться.
- Дождитесь окончания обновления. Отслеживать ход обновления можно с помощью команды
kubectl get no . Обновление можно считать завершенным, когда в выводе команды у каждого узла кластера в колонке VERSION появится обновленная версия.
|
| Как запускать Deckhouse на произвольном узле?
|
| Для запуска Deckhouse на произвольном узле установите у модуля deckhouse соответствующий параметр nodeSelector и не задавайте tolerations . Необходимые значения tolerations в этом случае будут проставлены автоматически.
|
| Используйте для запуска Deckhouse только узлы с типом CloudStatic или Static. Также избегайте использования для запуска Deckhouse группы узлов (NodeGroup ), содержащей только один узел.
|
| Пример конфигурации модуля:
|
| yaml
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: deckhouse
spec:
version: 1
settings:
nodeSelector:
node-role.deckhouse.io/deckhouse: “”
|
| Как принудительно отключить IPv6 на узлах кластера Deckhouse?
|
|
Внутреннее взаимодействие между компонентами кластера Deckhouse осуществляется по протоколу IPv4. Однако, на уровне операционной системы узлов кластера, как правило, по умолчанию активен IPv6. Это приводит к автоматическому присвоению IPv6-адресов всем сетевым интерфейсам, включая интерфейсы подов. В результате возникает нежелательный сетевой трафик — например, избыточные DNS-запросы типа AAAA , которые могут повлиять на производительность и усложнить отладку сетевых взаимодействий.
|
| Для корректного отключения IPv6 на уровне узлов в кластере, управляемом Deckhouse, достаточно задать необходимые параметры через ресурс NodeGroupConfiguration:
|
| yaml
apiVersion: deckhouse.io/v1alpha1
kind: NodeGroupConfiguration
metadata:
name: disable-ipv6.sh
spec:
nodeGroups:
- ‘*’
bundles:
- ‘’
weight: 50
content: |
GRUB_FILE_PATH=”/etc/default/grub”
if ! grep -q “ipv6.disable” “$GRUB_FILE_PATH”; then
sed -E -e ‘s/^(GRUB_CMDLINE_LINUX_DEFAULT=”[^”])”/\1 ipv6.disable=1”/’ -i “$GRUB_FILE_PATH”
update-grub
bb-flag-set reboot
fi
|
| После применения ресурса настройки GRUB будут обновлены, и узлы кластера начнут последовательную перезагрузку для применения изменений.
|