Реестр шаблонов — это подключения портала к хранилищам образов контейнеров, в которых опубликованы пакеты шаблонов, и настройки их синхронизации. Портал синхронизирует подключённые хранилища, ведёт каталог версий шаблонов и определяет последнюю версию каждого шаблона.

Реестр шаблонов находится в разделе «Администрирование» → «Интеграции» → «Шаблоны». Страница содержит вкладки «Реестры», «Настройки», «Запуски синхронизации» и «Шаблоны».

Быстрый старт

Чтобы подключить хранилище и получить шаблоны в галерее главной:

  1. На вкладке «Реестры» нажмите «Подключить реестр», заполните поля «Название», «Реестр», «Префикс репозиториев», «Имя пользователя», «Пароль» и сохраните подключение.
  2. На вкладке «Настройки» включите переключатель «Включить синхронизацию» и сохраните настройки.
  3. На вкладке «Запуски синхронизации» нажмите «Синхронизировать» и дождитесь статуса «Успех».
  4. На вкладке «Шаблоны» проверьте, что у версий шаблонов статус «доступна».
  5. Привяжите процессы к шаблонам в правилах маппинга главной: «Микросервисы» → «Действия по шаблонам».

После этого шаблоны отображаются в разделе главной «Создать микросервис».

Права доступа

Для работы с реестром шаблонов используются следующие разрешения:

РазрешениеЧто даёт
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

Требования к пользователю автоматизации описаны в разделе «Обновление из шаблона».

Синхронизация

Синхронизация загружает в каталог версий новые версии шаблонов из подключённых хранилищ.

Синхронизация запускается:

  • по расписанию из параметра «Интервал синхронизации», если включена синхронизация;
  • кнопкой «Синхронизировать» на вкладке «Запуски синхронизации». Кнопка запускает синхронизацию и при выключенном параметре «Включить синхронизацию».

Одновременно выполняется только одна синхронизация. Повторный запуск во время синхронизации завершается ошибкой «Синхронизация реестра шаблонов уже выполняется».

Для каждого подключения синхронизация выполняет следующие шаги:

  1. Получает список репозиториев: из поля «Идентификаторы репозиториев» или из каталога хранилища.
  2. Для каждого тега в формате semver, которого ещё нет в каталоге версий, загружает пакет, проверяет размер, манифест template.yaml, схему values.yaml и требование minDdpVersion.
  3. Записывает версию в каталог со статусом «доступна» или с причиной, по которой версия недоступна.
  4. Отзывает версии, теги которых удалены из хранилища.
  5. Пересчитывает последнюю версию каждого шаблона.

Теги не в формате 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-выражение, префикс ветки обновления или лимит
«Синхронизация реестра шаблонов уже выполняется»Запущена повторная синхронизация до завершения текущей
«Некорректное изменение статуса версии шаблона»Попытка изменить статус версии, отличный от «доступна» и «отозвана»