Доступно в редакциях:  CE, BE, SE, SE+, EE, CSE Lite (1.73), CSE Pro (1.73)

Описание

Модуль отвечает за управление настройками registry компонентов DKP.

Модуль работает в следующих режимах:

  • Direct — использование прямого доступа к внешнему registry по фиксированному адресу registry.d8-system.svc:5001/system/deckhouse. Фиксированный адрес, при изменении параметров registry, позволяет избежать повторного скачивания образов и перезапуска компонентов при смене параметров registry. Переключение между режимами и registry выполняется через ModuleConfig deckhouse. Переключение выполняется автоматически (ознакомьтесь с примерами использования).

  • Proxy — использование внутреннего кеширующего прокси-registry с обращением к внешнему registry, с запуском кеширующего прокси-registry на control-plane (master) узлах. Режим позволяет сократить количество запросов к внешнему registry за счёт кеширования образов. Кешируемые данные хранятся на control-plane (master) узлах. Обращение к внутреннему registry выполняется по фиксированному адресу registry.d8-system.svc:5001/system/deckhouse аналогично Direct режиму. Переключение между режимами и registry выполняется через ModuleConfig deckhouse. Переключение выполняется автоматически (ознакомьтесь с примерами использования).

  • Local — использование локального внутреннего registry, с запуском registry на control-plane (master) узлах. Режим позволяет кластеру работать в изолированной среде. Данные хранятся на control-plane (master) узлах. Обращение к внутреннему registry выполняется по фиксированному адресу registry.d8-system.svc:5001/system/deckhouse аналогично Direct и Proxy режимам. Переключение между режимами и registry выполняется через ModuleConfig deckhouse. Переключение выполняется автоматически (ознакомьтесь с примерами использования).

  • Unmanaged — работа без использования внутреннего registry. Обращение внутри кластера выполняется напрямую к внешнему registry. Существует 2 вида режима Unmanaged:

Ограничения и особенности использования модуля

Модуль registry имеет ряд ограничений и особенностей, касающихся установки, условий работы и переключения режимов.

Ограничения при установке кластера

  • Bootstrap кластера DKP поддерживается только в Direct и Unmanaged режимах (Local и Proxy режимы не поддерживаются). Registry во время установки кластера настраивается через ModuleConfig deckhouse.
  • Для запуска кластера в неконфигурируемом Unmanaged режиме (Legacy), необходимо указать параметры registry в initConfiguration.

Ограничения по условиям работы

Модуль работает при соблюдении следующих условий:

  • Если на узлах кластера используется CRI containerd или containerd v2. Для настройки CRI ознакомьтесь с конфигурацией ClusterConfiguration.
  • Кластер полностью управляется DKP. В Managed Kubernetes кластерах он работать не будет.
  • Работа режимов Local и Proxy поддерживаются только на статичных кластерах.

Ограничения по переключению режимов

Ограничения по переключению режимов следующие:

  • Изменение параметров registry и переключение режимов доступны только после полного завершения этапа bootstrap.
  • При первом переключении необходимо выполнить миграцию пользовательских конфигураций реестра. Подробнее — в разделе «Модуль registry: FAQ».
  • Переключение в неконфигурируемый Unmanaged режим доступно только из Unmanaged режима. Подробнее — в разделе «Модуль registry: FAQ».
  • Переключение между режимами Local и Proxy возможно только через промежуточные режимы Direct или Unmanaged. Пример последовательности переключения: Local/ProxyDirectProxy/Local.

Архитектура режима Direct

В режиме Direct запросы к registry обрабатываются напрямую, без промежуточного кеширования.

Перенаправление запросов к registry от CRI осуществляется при помощи его настроек, которые указываются в конфигурации containerd.

В случае таких компонентов, как operator-trivy, image-availability-exporter, deckhouse-controller и ряда других, обращающихся к registry напрямую, запросы будут идти через in-cluster proxy, расположенный на master-узлах.

direct

Архитектура режима Proxy

Рекомендуется использовать разные диски для хранения данных registry (/opt/deckhouse/registry) и etcd. Использование одного диска может привести к деградации производительности etcd при операциях с registry.

Proxy режим позволяет registry выступать в качестве промежуточного прокси-сервера между клиентом и удалённым registry.

Кеширующий proxy registry запускается в виде статических подов на узлах control-plane (master). Кешируемые данные хранятся на control-plane (master) узлах в директории /opt/deckhouse/registry.

Для обеспечения высокой доступности к кеширующему proxy registry используется балансировщик, установленный на каждый узел кластера. CRI обращается к proxy registry через балансировщик. Настройки для обращения к балансировщику указываются в конфигурации containerd.

В случае таких компонентов, как operator-trivy, image-availability-exporter, deckhouse-controller и ряда других, обращающихся к registry напрямую, запросы будут идти через кеширующий proxy registry.

direct

Архитектура режима Local

Рекомендуется использовать разные диски для хранения данных registry (/opt/deckhouse/registry) и etcd. Использование одного диска может привести к деградации производительности etcd при операциях с registry.

Local режим позволяет создавать локальную копию registry внутри кластера. Образы из удалённого registry полностью скопированы в локальное хранилище и синхронизированы между репликами локального registry.

Работа локального registry идентична работе кеширующего proxy registry. Локальный registry запускается в виде статических подов на узлах control-plane (master). Данные registry хранятся на control-plane (master) узлах в директории /opt/deckhouse/registry.

Для обеспечения высокой доступности к локальному registry используется балансировщик, установленный на каждый узел кластера. CRI обращается к локальному registry через балансировщик. Настройки для обращения к балансировщику указываются в конфигурации containerd.

В случае таких компонентов, как operator-trivy, image-availability-exporter, deckhouse-controller и ряда других, обращающихся к registry напрямую, запросы будут идти в локальный registry.

Локальный registry наполняется с помощью инструмента d8 (команды d8 mirror push/pull). Подробнее — в разделе «Модуль registry: пример использования»

direct