Стадия жизненного цикла модуля: Experimental
У модуля есть требования для установки
Модуль настраивается через ModuleConfig. Контракт содержит параметры
платформенного уровня: уровень логирования, объектное хранилище, способ
доставки и режим раздачи каталога. Списки моделей, внешние каталоги и
пользовательские импорты не хранятся в ModuleConfig.
Пример минимальной конфигурации
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: ai-models
spec:
enabled: true
version: 1
settings:
artifacts:
bucket: ai-models
endpoint: https://s3.example.com
region: us-east-1
credentialsSecretName: ai-models-artifacts
usePathStyle: trueОбъектное хранилище и DMCR
artifacts задаёт S3-совместимое объектное хранилище для данных DMCR,
временных загрузок и служебных данных передачи. Все модели проходят через
управляемый контроллером путь подготовки независимо от источника: URL,
загрузка или импорт из внешнего каталога.
DMCR (Deckhouse Model Container Registry) — служебный OCI-реестр модуля. Он
хранит подготовленные модели как внутренние OCI-артефакты поверх bucket,
настроенного в artifacts.
Учётные данные задаются Secret в d8-system:
apiVersion: v1
kind: Secret
metadata:
name: ai-models-artifacts
namespace: d8-system
type: Opaque
stringData:
accessKey: "<access-key>"
secretKey: "<secret-key>"Для частного центра сертификации укажите artifacts.caSecretName или добавьте
ca.crt в тот же Secret.
Доставка
delivery.type выбирает способ доставки модели в рабочую нагрузку:
SharedPVC— значение по умолчанию. ТребуетStorageClass, подходящий для PVC с RWX.NodeCache— локальный кэш на узле поверх SDS и CSI-монтирования.
Параметры доставки являются плоскими полями внутри delivery, чтобы в UI был
один переключатель и только релевантные настройки выбранного режима.
Раздача каталога
Раздача каталога включается через distribution.mode=PublicCatalog. Модуль
готовит публичный каталог и путь копирования на публичном адресе модуля из
глобальных настроек Deckhouse.
spec:
settings:
distribution:
mode: PublicCatalogАдрес локально не настраивается. Он всегда строится из
global.modules.publicDomainTemplate как публичный адрес модуля.
При включении PublicCatalog публикуются два маршрута:
/api/distribution/v1/models— каталогClusterModelв фазеReady;/v2— OCI-путь для управляемого контроллером копирования и импорта.
Это отдельная ось конфигурации от доставки. Доставка внутри потребляющего
кластера остаётся SharedPVC или NodeCache; владение каталогом остаётся в
раздающем кластере.
Доступ к публичному каталогу задаётся не в ModuleConfig, а через Kubernetes
RBAC в раздающем кластере. Привяжите субъект потребителя к
ClusterRole d8:ai-models:distribution:reader. Внешние каталоги в
потребляющем кластере описываются отдельными ModelCatalogSource. Такой
контракт позволяет
добавлять или удалять сотни моделей через ClusterModel без изменения
конфигурации модуля.
Учётные данные и сертификаты для импортируемых источников тоже не хранятся в
ModuleConfig. Поместите их в Secret пространства имён d8-system и укажите
эти Secret в ModelCatalogSource.
Требования
К версии Kubernetes: 1.34 и выше.
К версии Deckhouse: 1.75.0 и выше.
Параметры
Версия схемы: 1
-
-
объектsettings.artifactsS3-совместимое хранилище для загружаемых файлов, подготовленных моделей в DMCR и служебных данных передачи. Внутренние префиксы объектов принадлежат модулю.
-
строкаsettings.artifacts.bucket
Обязательный параметр
Имя bucket для загружаемых файлов и подготовленных моделей.По умолчанию:
‘’ -
строкаsettings.artifacts.caSecretNameНеобязательный существующий Secret в
d8-systemс ключомca.crtдля доверия частному центру сертификации S3-совместимого хранилища. Если поле пустое, модуль используетcredentialsSecretNameкак источникca.crt, когда этот Secret содержит такой ключ.По умолчанию:
‘’ -
строкаsettings.artifacts.capacityLimitНеобязательный общий лимит места для данных моделей, которыми управляет модуль, например
500Gi. Если значение задано, сессии загрузки должны заранее сообщать размер передаваемых данных, а шлюз загрузки резервирует место перед записью. Пустое значение отключает проверку лимита при приёме загрузок и показывает доступное место как неизвестное.По умолчанию:
‘’ -
строкаsettings.artifacts.credentialsSecretName
Обязательный параметр
Существующий Secret вd8-systemс ключамиaccessKeyиsecretKey. Secret также может содержатьca.crt, если тот же Secret используется как источник доверенного сертификата для частного центра сертификации S3. Модуль синхронизирует нужные данные в своё служебное пространство имён после его создания. Учётные данные прямо в ModuleConfig не поддерживаются.По умолчанию:
‘’ -
строкаsettings.artifacts.endpoint
Обязательный параметр
Адрес S3-совместимого хранилища.По умолчанию:
‘’ -
булевыйsettings.artifacts.insecureОтключает проверку TLS при обращении к S3-совместимому хранилищу.
По умолчанию:
false -
строкаsettings.artifacts.regionРегион S3, который использует клиент.
По умолчанию:
us-east-1 -
булевыйsettings.artifacts.usePathStyleИспользовать path-style запросы S3.
По умолчанию:
true
-
-
объектsettings.deliveryСпособ доставки модели в рабочие нагрузки. Активен ровно один вариант:
SharedPVCдля управляемого контроллером RWX PVC илиNodeCacheдля локального кэша на выбранных узлах и CSI-монтирования только для чтения. Раздача каталога между кластерами отделена от доставки в приложения и не является дополнительным значениемdelivery.type.-
объектsettings.delivery.nodeCacheBlockDeviceSelectorСелектор
matchLabelsдля ресурсовBlockDevice, из которых строится группа томов локального кэша. Пустое значение означаетai.deckhouse.io/model-cache=true.Пример:
ai.deckhouse.io/model-cache: 'true' -
объектsettings.delivery.nodeCacheNodeSelectorСелектор
matchLabelsдля нод, где должен работать локальный кэш. Пустое значение означаетai.deckhouse.io/model-cache=true.Пример:
ai.deckhouse.io/model-cache: 'true' -
строкаsettings.delivery.nodeCacheSizeРазмер кэша на каждом выбранном узле для
NodeCache. То же значение используется для локального хранилища и PVC кэша на узле. Пустое значение означает200Gi.Пример:
nodeCacheSize: 200Gi -
строка
StorageClassдля режимаSharedPVC. Пустое значение означает: сначала глобальные настройки класса хранения Deckhouse, затем Kubernetes defaultStorageClass. Найденный класс должен существовать, быть выбран однозначно и поддерживать PVC сReadWriteMany.Примеры:
sharedPVCStorageClassName: rwx-storage-classsharedPVCStorageClassName: nfs-rwx -
строкаsettings.delivery.type
Обязательный параметр
Способ доставки модели в рабочие нагрузки.
SharedPVCиспользуется по умолчанию. Он создаёт управляемый контроллером RWX PVC в пространстве имён рабочей нагрузки. Пустойdelivery.sharedPVCStorageClassNameвыбирается через глобальные настройки класса хранения Deckhouse (global.modules.storageClass, затемglobal.defaultClusterStorageClass) и затем defaultStorageClass. Если найденный класс отсутствует, рабочая нагрузка остаётся в ожидании с причинойSharedPVCStorageClassMissing. Если в кластере несколько defaultStorageClass, рабочая нагрузка остаётся в ожидании с причинойSharedPVCStorageClassAmbiguous, пока модуль или глобальные настройки Deckhouse не выберут один класс явно. Провайдер хранилища отвечает за привязку итогового PVC с ReadWriteMany; его ошибки видны в событиях PVC.NodeCacheсоздаёт локальный кэш на выбранных узлах поверх SDS и CSI-монтирования только для чтения.По умолчанию:
SharedPVCДопустимые значения:
SharedPVC,NodeCache
-
-
объектsettings.distributionРежим раздачи каталога подготовленных кластерных моделей. Эта настройка независима от доставки в рабочие нагрузки:
delivery.typeвыбирает, как приложения получают файлы модели внутри кластера, аdistribution.modeвыбирает, открыт ли защищённый публичный интерфейс для импорта моделей в другие кластеры.-
строкаsettings.distribution.mode
Обязательный параметр
Режим раздачи каталога.
InternalOnlyоставляет DMCR доступным только внутри кластера.PublicCatalogоткрывает защищённый/v2endpoint на публичном адресе модуля. Список моделей и импорт описываются черезModelCatalogSource; внутренние пути реестра, список моделей и отдельный host здесь не настраиваются.По умолчанию:
InternalOnlyДопустимые значения:
InternalOnly,PublicCatalog
-
-
строкаsettings.logLevelУровень логирования служебных компонентов модуля.
По умолчанию:
InfoДопустимые значения:
Debug,Info,Warn,Error
-