Реестр шаблонов — это подключения портала к хранилищам образов контейнеров, в которых опубликованы пакеты шаблонов, и настройки их синхронизации. Портал синхронизирует подключённые хранилища, ведёт каталог версий шаблонов и определяет последнюю версию каждого шаблона.
Реестр шаблонов находится в разделе «Администрирование» → «Интеграции» → «Шаблоны». Страница содержит вкладки «Реестры», «Настройки», «Запуски синхронизации» и «Шаблоны».
Быстрый старт
Чтобы подключить хранилище и получить шаблоны в галерее главной:
- На вкладке «Реестры» нажмите «Подключить реестр», заполните поля «Название», «Реестр», «Префикс репозиториев», «Имя пользователя», «Пароль» и сохраните подключение.
- На вкладке «Настройки» включите переключатель «Включить синхронизацию» и сохраните настройки.
- На вкладке «Запуски синхронизации» нажмите «Синхронизировать» и дождитесь статуса «Успех».
- На вкладке «Шаблоны» проверьте, что у версий шаблонов статус «доступна».
- Привяжите процессы к шаблонам в правилах маппинга главной: «Микросервисы» → «Действия по шаблонам».
После этого шаблоны отображаются в разделе главной «Создать микросервис».
Права доступа
Для работы с реестром шаблонов используются следующие разрешения:
| Разрешение | Что даёт |
|---|---|
read:template-packs | Просмотр версий шаблонов: галерея «Создать микросервис», уведомление о новой версии в карточке микросервиса |
edit:template-packs | Отзыв, возврат и удаление версий шаблонов |
read:template-registries | Просмотр подключений, настроек и запусков синхронизации; уведомления о предварительных версиях шаблонов в карточке микросервиса |
edit:template-registries | Изменение подключений и настроек, запуск синхронизации |
Без разрешения read:template-registries на странице отображается сообщение «Недостаточно прав для управления реестром шаблонов.».
Подключение хранилища
Подключения к хранилищам образов добавляются на вкладке «Реестры» кнопкой «Подключить реестр». Портал поддерживает хранилища с OCI Distribution Spec v2, например Harbor, GitLab Container Registry, Docker Registry.
Поля подключения:
| Поле | Описание |
|---|---|
| «Название» | Уникальное название реестра, до 128 символов. Записывается в микросервисы, созданные из шаблонов этого реестра |
| «Реестр» | Хост хранилища образов, например registry.vendor.example. Без схемы используется HTTPS |
| «Префикс репозиториев» | Префикс пути внутри хранилища, например ddp-templates |
| «Идентификаторы репозиториев» | Идентификаторы шаблонов, которые портал отслеживает в хранилище |
| «Имя пользователя» | Имя пользователя хранилища |
| «Пароль» | Пароль или токен хранилища. Если имя пользователя не задано, значение используется как Bearer-токен |
| «Пропускать проверку TLS» | Только для лабораторных сред и самоподписанных сертификатов. Разрешает подключение по HTTP |
Пароль хранится в зашифрованном виде и не возвращается в интерфейс. Чтобы сохранить текущий пароль при изменении подключения, оставьте маску в поле «Пароль» без изменений.
Портал использует доверенные сертификаты, добавленные в портал, при подключении к хранилищу.
Портал не принимает в поле «Реестр»:
- схему
http://без включённого параметра «Пропускать проверку TLS»; - учётные данные, параметры запроса и фрагменты в адресе;
localhostи имена*.localhost;- IP-адреса loopback, частных, link-local и multicast-сетей.
Отслеживаемые шаблоны
Поле «Идентификаторы репозиториев» определяет, как портал находит шаблоны в хранилище:
- поле пустое — портал запрашивает каталог репозиториев хранилища с префиксом из поля «Префикс репозиториев». Новые шаблоны появляются автоматически, а шаблон, удалённый из хранилища, отзывается целиком;
- поле заполнено — портал запрашивает только перечисленные репозитории. Режим подходит для больших хранилищ и токенов без прав на просмотр каталога. Новые шаблоны добавляются в список вручную, а шаблон, удалённый из хранилища, остаётся в галерее.
В обоих режимах версии, удалённые из отслеживаемых репозиториев, отзываются.
Идентификатор шаблона — это имя репозитория в хранилище без префикса. Пакет публикуется по адресу <реестр>/<префикс репозиториев>/<идентификатор шаблона>:<версия>.
Удаление и переименование подключения
При удалении или переименовании подключения доступные версии его шаблонов получают статус «недоступна» с причиной source removed from settings. Записи о версиях в каталоге не удаляются.
Если подключение с тем же названием будет добавлено снова, такие версии становятся доступными при следующей синхронизации.
Версии удалённых подключений отображаются на вкладке «Шаблоны» с тегом «реестр удалён». Кнопка «Удалить осиротевшие ({count})» удаляет их безвозвратно; для подтверждения введите УДАЛИТЬ.
Настройки
Вкладка «Настройки» содержит параметры, общие для всех подключений. Изменения применяются без перезапуска портала.
Раздел «Синхронизация»:
| Параметр | По умолчанию | Описание |
|---|---|---|
| «Включить синхронизацию» | Выключено | Включает синхронизацию по расписанию и сверку версии шаблона микросервисов с lock-файлом |
| «Интервал синхронизации» | */15 * * * * | Cron-выражение расписания синхронизации, время UTC |
| «Максимальный размер шаблона (килобайты)» | 51200 | Пакет больше лимита отклоняется при синхронизации |
Раздел «Значения по умолчанию для создаваемых сервисов»:
| Параметр | По умолчанию | Описание |
|---|---|---|
| «Ветка по умолчанию» | main | Ветка по умолчанию для создаваемых микросервисов |
| «Префикс ветки обновления» | ddp/template-upgrade- | Префикс ветки обновления шаблона; к нему добавляется версия, например ddp/template-upgrade-1.3.0. Заканчивается на - или /, без пробелов и .., до 128 символов |
Смена префикса ветки обновления не учитывает запросы на слияние, уже открытые из ветки со старым префиксом.
Раздел «Сверка версии и автоматизация»:
| Параметр | По умолчанию | Описание |
|---|---|---|
| «Интервал сверки версии шаблона» | */5 * * * * | Cron-выражение расписания сверки версии шаблона микросервисов |
| «Пользователь автоматизации» | Не задан | Пользователь, от имени которого запускаются автоматические обновления и выполняется сверка версии. Если не задан, автоматическое обновление и сверка версии выключены |
| «Лимит очереди обновлений» | 5 | Максимальное число автоматических обновлений, которые запускаются после одной синхронизации. Значение от 1 до 1000 |
Требования к пользователю автоматизации описаны в разделе «Обновление из шаблона».
Синхронизация
Синхронизация загружает в каталог версий новые версии шаблонов из подключённых хранилищ.
Синхронизация запускается:
- по расписанию из параметра «Интервал синхронизации», если включена синхронизация;
- кнопкой «Синхронизировать» на вкладке «Запуски синхронизации». Кнопка запускает синхронизацию и при выключенном параметре «Включить синхронизацию».
Одновременно выполняется только одна синхронизация. Повторный запуск во время синхронизации завершается ошибкой «Синхронизация реестра шаблонов уже выполняется».
Для каждого подключения синхронизация выполняет следующие шаги:
- Получает список репозиториев: из поля «Идентификаторы репозиториев» или из каталога хранилища.
- Для каждого тега в формате semver, которого ещё нет в каталоге версий, загружает пакет, проверяет размер, манифест
template.yaml, схемуvalues.yamlи требованиеminDdpVersion. - Записывает версию в каталог со статусом «доступна» или с причиной, по которой версия недоступна.
- Отзывает версии, теги которых удалены из хранилища.
- Пересчитывает последнюю версию каждого шаблона.
Теги не в формате strict semver, например v1.2.0 или latest, пропускаются. Уже загруженные версии повторно не загружаются.
Если у шаблона изменилась последняя версия, после синхронизации запускается автоматическое обновление микросервисов.
Ошибка подключения к одному хранилищу, например ошибка авторизации, прерывает синхронизацию этого хранилища, но не мешает синхронизации остальных. Запуск в этом случае получает статус «Ошибка».
Синхронизация, которая выполняется дольше 2 часов, при перезапуске портала отмечается как завершённая с ошибкой interrupted: sync run exceeded stale threshold.
Запуски синхронизации
На вкладке «Запуски синхронизации» отображаются последние 10 запусков. Над таблицей выводится итог последнего запуска, например «Последняя успешная синхронизация: {time}» или «Последний запуск синхронизации завершился с ошибкой.».
Колонки таблицы:
- «Статус» — «Выполняется», «Успех» или «Ошибка»;
- «Время» — время запуска;
- «Изменения» — число добавленных, отозванных, конфликтующих, осиротевших и восстановленных версий или «Без изменений»;
- «Ошибка» — текст ошибки.
Кнопка «Обновить» перезагружает список запусков.
Каталог версий
На вкладке «Шаблоны» отображаются все версии шаблонов, загруженные из подключённых хранилищ.
Для версии отображаются шаблон, версия, название, реестр, статус, причина статуса, время синхронизации, ссылка на образ и SHA-256. Тег «последняя» отмечает рекомендованную версию шаблона.
Статусы версий
Версия шаблона может иметь следующие статусы:
| Статус | Когда присваивается | Что происходит с версией |
|---|---|---|
| «доступна» | Пакет загружен и прошёл проверки | Отображается в галерее, используется для создания и обновления |
| «некорректна» | Пакет не удалось загрузить, распаковать или проверить | Не используется. Причина указана в колонке «Причина статуса» |
| «недоступна» | Версия требует более новой версии DDP (minDdpVersion) или подключение удалено | Не используется |
| «отозвана» | Тег удалён из хранилища или администратор отозвал версию | Скрыта из галереи и автоматического обновления |
Портал не проверяет повторно версии со статусом «некорректна» и версии, недоступные из-за minDdpVersion.
Чтобы портал загрузил такую версию заново, удалите её на вкладке «Шаблоны»: при следующей синхронизации тег будет загружен из хранилища снова. Если пакет нужно исправить, опубликуйте новую версию.
Последняя версия
Последняя версия шаблона — максимальная стабильная версия со статусом «доступна» среди всех подключений. Если стабильных версий нет, последней становится максимальная предварительная (prerelease) версия, например 2.0.0-rc.1.
Последняя версия — это не всегда максимальная версия по правилам semver: отозванные версии не учитываются.
Конфликт реестров
Если одна и та же версия шаблона есть в нескольких подключениях, используется версия из подключения, которое загрузило её первым. У версии отображается тег «Конфликт» с перечнем других реестров.
Если версия первого подключения стала недоступной или отозванной, её заменяет доступная копия из другого подключения.
Отзыв, возврат и удаление версии
Для управления версиями требуется разрешение edit:template-packs.
С версией доступны следующие действия:
- «Отозвать версию» — версия получает статус «отозвана» и скрывается из галереи и автоматического обновления. В поле «Причина» укажите причину отзыва. Тег в хранилище не удаляется;
- «Вернуть версию» — отозванная версия снова становится доступной. Если тега нет в хранилище, следующая синхронизация может снова отозвать версию;
- «Удалить» — запись о версии удаляется из портала. Тег в хранилище остаётся, и следующая синхронизация загрузит версию заново.
Статусы «некорректна» и «недоступна» вручную не меняются. Отзыв, возврат и удаление версии пересчитывают последнюю версию шаблона, но не запускают автоматическое обновление микросервисов.
Ошибки синхронизации
Ошибки синхронизации отображаются в колонке «Ошибка» запуска, а ошибки отдельных версий — в колонке «Причина статуса» каталога версий.
| Сообщение | Причина | Что сделать |
|---|---|---|
registry authorization failed | Хранилище отклонило учётные данные | Проверьте поля «Имя пользователя» и «Пароль» подключения |
registry temporarily unavailable | Хранилище недоступно или вернуло ошибку 429 или 5xx | Повторите синхронизацию позже |
list repositories: ... | Не удалось получить каталог репозиториев | Проверьте права токена на просмотр каталога или заполните поле «Идентификаторы репозиториев» |
pack size N exceeds maxPackSize M | Пакет больше параметра «Максимальный размер шаблона» | Уменьшите пакет или увеличьте лимит, удалите версию и повторите синхронизацию |
invalid template.yaml: ... | Манифест не прошёл проверку | Исправьте манифест и опубликуйте новую версию |
manifest id "a" does not match repository template id "b" | Поле id манифеста не совпадает с именем репозитория в хранилище | Опубликуйте пакет в репозиторий с именем, равным id |
requires DDP version X or newer (running Y) | Версия DDP ниже minDdpVersion пакета | Обновите DDP и удалите версию, чтобы она загрузилась заново |
tag removed from registry | Тег удалён из хранилища | — |
source removed from settings | Подключение удалено или переименовано | Верните подключение с тем же названием или удалите осиротевшие версии |
Сообщения API реестра шаблонов:
| Сообщение | Причина |
|---|---|
| «Некорректный реестр шаблонов» | Поля подключения не прошли проверку, например адрес указывает на частную сеть |
| «Некорректные настройки реестра шаблонов» | Неверное cron-выражение, префикс ветки обновления или лимит |
| «Синхронизация реестра шаблонов уже выполняется» | Запущена повторная синхронизация до завершения текущей |
| «Некорректное изменение статуса версии шаблона» | Попытка изменить статус версии, отличный от «доступна» и «отозвана» |