Как подготовить containerd v1?
При переключении на режим Direct
сервис containerd v1 будет перезапущен.
Конфигурация авторизации будет изменена на Mirror Auth (данная конфигурация используется по умолчанию в Containerd V2
).
После возврата в режим Unmanaged
обновлённая конфигурация авторизации останется без изменений.
Пример структуры Mirror Auth-конфигурации:
tree /etc/containerd/registry.d
.
├── registry.d8-system.svc:5001
│ ├── ca.crt
│ └── hosts.toml
└── registry.deckhouse.ru
├── ca.crt
└── hosts.toml
Пример конфигурации файла hosts.toml
:
[host]
[host."https://registry.deckhouse.ru"]
capabilities = ["pull", "resolve"]
skip_verify = true
ca = ["/path/to/ca.crt"]
[host."https://registry.deckhouse.ru".auth]
username = "username"
password = "password"
# If providing auth string:
auth = "<base64>"
Перед переключением убедитесь, что на узлах с containerd v1 отсутствуют пользовательские конфигурации реестра, расположенные в директории /etc/containerd/conf.d
.
Если такие конфигурации существуют:
-
После удаления пользовательских конфигураций реестра из директории
/etc/containerd/conf.d
сервис containerd будет перезапущен. Удалённые конфигурации перестанут работать. -
Новые Mirror Auth-конфигурации, добавленные в
/etc/containerd/registry.d
, вступят в силу только после перехода в режимDirect
.
-
Создайте новые Mirror Auth-конфигурации в директории
/etc/containerd/registry.d
. Пример:apiVersion: deckhouse.io/v1alpha1 kind: NodeGroupConfiguration metadata: name: custom-registry spec: bundles: - '*' content: | #!/bin/bash REGISTRY_ADDRESS="registry.io" REGISTRY_SCHEME="https" host_toml=$(cat <<EOF [host] [host."https://registry.deckhouse.ru"] capabilities = ["pull", "resolve"] skip_verify = true ca = ["/path/to/ca.crt"] [host."https://registry.deckhouse.ru".auth] username = "username" password = "password" # If providing auth string: auth = "<base64>" EOF ) mkdir -p "/etc/containerd/registry.d/${REGISTRY_ADDRESS}" echo "$host_toml" > "/etc/containerd/registry.d/${REGISTRY_ADDRESS}/hosts.toml" nodeGroups: - '*' weight: 0
Для проверки новой конфигурации выполните:
# HTTPS: ctr -n k8s.io images pull --hosts-dir=/etc/containerd/registry.d/ registry.io/registry/path:tag # HTTP: ctr -n k8s.io images pull --hosts-dir=/etc/containerd/registry.d/ --plain-http registry.io/registry/path:tag
-
Удалите auth-конфигурации из директории
/etc/containerd/conf.d
.
Как переключиться на предыдущую конфигурацию авторизации containerd v1?
Этот формат конфигурации containerd устарел (deprecated).
- Переключение возможно только в режиме
Unmanaged
. - При переключении на старую конфигурацию авторизации
Containerd V1
пользовательские конфигурации в/etc/containerd/registry.d
перестанут работать. - Добавить пользовательские конфигурации реестра для старой схемы авторизации (в каталог
/etc/containerd/conf.d
) можно только после переключения на неё.
Чтобы переключиться на предыдущую конфигурацию авторизации containerd v1, выполните следующие шаги:
-
Перейдите в режим
Unmanaged
. -
Проверьте статус переключения, используя инструкцию. Пример вывода:
conditions: # ... - lastTransitionTime: "..." message: "" reason: "" status: "True" type: Ready hash: .. mode: Unmanaged target_mode: Unmanaged
-
Удалите секрет
registry-bashible-config
:d8 k -n d8-system delete secret registry-bashible-config
-
После удаления дождитесь завершения переключения на старую конфигурацию авторизации в
Containerd V1
.
Для отслеживания используйте инструкцию. Пример вывода:conditions: # ... - lastTransitionTime: "..." message: "" reason: "" status: "True" type: Ready hash: .. mode: Unmanaged target_mode: Unmanaged
Как посмотреть статус переключения режима registry?
Статус переключения режима registry можно получить с помощью следующей команды:
d8 k -n d8-system -o yaml get secret registry-state | yq -C -P '.data | del .state | map_values(@base64d) | .conditions = (.conditions | from_yaml)'
Пример вывода:
conditions:
- lastTransitionTime: "2025-07-15T12:52:46Z"
message: 'registry.deckhouse.ru: all 157 items are checked'
reason: Ready
status: "True"
type: RegistryContainsRequiredImages
- lastTransitionTime: "2025-07-11T11:59:03Z"
message: ""
reason: ""
status: "True"
type: ContainerdConfigPreflightReady
- lastTransitionTime: "2025-07-15T12:47:47Z"
message: ""
reason: ""
status: "True"
type: TransitionContainerdConfigReady
- lastTransitionTime: "2025-07-15T12:52:48Z"
message: ""
reason: ""
status: "True"
type: InClusterProxyReady
- lastTransitionTime: "2025-07-15T12:54:53Z"
message: ""
reason: ""
status: "True"
type: DeckhouseRegistrySwitchReady
- lastTransitionTime: "2025-07-15T12:55:48Z"
message: ""
reason: ""
status: "True"
type: FinalContainerdConfigReady
- lastTransitionTime: "2025-07-15T12:55:48Z"
message: ""
reason: ""
status: "True"
type: Ready
mode: Direct
target_mode: Direct
Вывод отображает состояние процесса переключения. Каждое условие может находиться в статусе True
или False
, а также содержать поле message
с пояснением.
Описание условий:
Условие | Описание |
---|---|
ContainerdConfigPreflightReady |
Состояние проверки конфигурации containerd. Проверяется, что на узлах отсутствуют пользовательские auth конфигурации containerd. |
TransitionContainerdConfigReady |
Состояние подготовки конфигурации containerd в новый режим. Проверяется, что конфигурация containerd успешно подготовлена и содержит одновременно конфигурации нового и старого режима. |
FinalContainerdConfigReady |
Состояние завершения переключения containerd в новый режим. Проверяется, что конфигурация containerd успешно применена и содержит конфигурацию нового режима. |
DeckhouseRegistrySwitchReady |
Состояние переключения Deckhouse и его компонентов на использование нового registry. Значение True указывает, что Deckhouse успешно переключился на сконфигурированный registry и готов к работе. |
InClusterProxyReady |
Состояние готовности In-Cluster Proxy. Проверяется, что In-Cluster Proxy успешно запущен и работает. |
CleanupInClusterProxy |
Состояние очистки In-Cluster Proxy, если прокси не нужен для работы желаемого режима. Проверяется, что все ресурсы, связанные с In-Cluster Proxy, успешно удалены. |
Ready |
Общее состояние готовности registry к работе в указанном режиме. Проверяется, что все предыдущие условия выполнены и модуль готов к работе. |