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

Описание

Модуль отвечает за управление конфигурацией registry компонентов Deckhouse и предоставляет внутреннее хранилище образов контейнеров (container registry, registry).

Внутренний registry оптимизирует загрузку и хранение образов, а также повышает высокую доступность и отказоустойчивость Deckhouse Kubernetes Platform.

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

  • Direct — использование внутреннего registry. Обращение к внутреннему registry выполняется по фиксированному адресу registry.d8-system.svc:5001/system/deckhouse. Фиксированный адрес, при изменении параметров registry, позволяет избежать повторного скачивания образов и перезапуска компонентов. Переключение между режимами и registry выполняется через ModuleConfig deckhouse. Переключение выполняется автоматически (ознакомьтесь с примерами использования).
  • Unmanaged — работа без использования внутреннего registry. Обращение внутри кластера выполняется напрямую к внешнему registry. Существует 2 вида режима Unmanaged:
    • Конфигурируемый - режим, управляемый с помощью модуля registry. Переключение между режимами и registry выполняется через ModuleConfig deckhouse. Переключение выполняется автоматически (ознакомьтесь с примерами использования).
    • Неконфигурируемый (deprecated) - режим используемый по умолчанию. Параметры конфигурации задаются при установке кластера, или при изменении в развёрнутом кластере с помощью утилиты helper change registry (deprecated).

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

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

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

Bootstrap кластера DKP поддерживается только в неконфигурируемом Unmanaged режиме. Настройки registry во время bootstrap задаются через initConfiguration.

Конфигурация registry через moduleConfig deckhouse во время bootstrap кластера DKP не поддерживается.

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

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

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

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

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

  • При первом переключении необходимо выполнить миграцию пользовательских конфигураций реестра. Подробнее — в разделе «Модуль registry: FAQ».
  • Переключение в неконфигурируемый Unmanaged режим доступно только из Unmanaged режима. Подробнее — в разделе «Модуль registry: FAQ».

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

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

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

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

direct

Внешние компоненты

Список стороннего программного обеспечения, используемого в модуле registry (информация представлена на английском языке):

  • Docker auth

    License: Apache License 2.0 (https://github.com/cesanta/docker_auth/blob/1.12.0/LICENSE)

    docker_auth is an authentication server for Docker Registry 2.0, providing token-based authentication and authorization, with support for multiple user authentication methods and ACLs for access control. Configurable via YAML, it facilitates setups ranging from simple static lists to complex database integrations.

  • Docker distribution

    License: Apache License 2.0 (https://github.com/distribution/distribution/blob/v2.8.3/LICENSE)

    distribution/distribution is an open-source toolkit used to pack, ship, store, and deliver container content, providing a secure and scalable foundation for developing large-scale registry solutions or managing private registries. It supports the OCI Distribution Specification, which is used by major registry operators like Docker Hub and GitHub Container Registry.