Подготовка конфигурации и кастомных образов
Данный раздел описывает основные шаги, если вы планируете использовать собственное содержимое: конфигурацию, темы, сообщения, Java-классы flow, дополнительные JAR и т.д.
Дерево конфигурации Blitz
Если используется схема с динамической конфигурацией, каталог конфигурации должен иметь такой вид:
blitz.conf
assets/
captchas/
custom_messages/
dynamic/
flows/
misc/
panel/
saml/
token_exchange/
Во время публикации чарт переносит blitz.conf в root/blitz.conf, а остальные каталоги размещает в общем хранилище.
Для первого развёртывания скачайте готовый стандартный набор конфигов по данной ссылке.
Это удобный стартовый вариант для режима Git/Local -> PVC: архив можно использовать как основу для собственного конфигурационного репозитория и затем постепенно адаптировать под свои нужды.
Какие каталоги допустимы
Чарт публикует только заранее определённые пути верхнего уровня:
appsassetscaptchascustom_messagesdynamicflowsmethodsrootsamltoken_exchangemisc
Это важно учитывать при проектировании собственного репозитория конфигурации. Если положить нужные файлы в другой каталог, чарт их не опубликует.
Назначение основных каталогов
assets
Мемы и другие статические HTML-ресурсы.
captchas
Hесурсы, связанные с используемыми капчами.
custom_messages
Здесь можно разместить дополнительные или переопределённые наборы сообщений. Этот каталог удобен для локализации и настройки пользовательских текстов.
dynamic
Здесь размещаются JAR процедуры.
flows
Здесь располагаются Java-классы login flow и связанные с ними расширения.
misc
Прочие дополнительные ресурсы, например словари паролей.
panel
Если используется модуль Blitz Panel, учитывайте отдельную публикацию:
panel/app.confpanel/icons/*
Сценарии без пересборки образов
Если нужные изменения можно поставить через динамическое дерево конфигурации, пересобирать образы не требуется. Это типичный сценарий для:
assetscustom_messages- части
dynamic - flow-расширений, которые поставляются из внешнего конфигурационного репозитория
Когда нужны кастомные образы
Собственные образы нужны, если:
- файловая конфигурация должна быть встроена прямо в контейнер
- организация использует режим
config.readOnly=true - требуется единый immutable-артефакт для релиза
- нужно поставлять собственные файлы вместе с образом и не зависеть от публикации в
PersistentVolumeClaim
Сборка кастомного образа
В репозитории уже есть Dockerfile и каталог dockerfiles/files, куда можно положить необходимые материалы.
Пример сборки образа одного модуля:
MODULE=idp TAG=5.31.0 SUFFIX=custom
docker build . \
--build-arg MODULE=${MODULE} \
--build-arg TAG=${TAG} \
-t "blitz-${MODULE}-${SUFFIX}:${TAG}"
Сборка нескольких модулей
TAG=5.31.0 SUFFIX=custom
for MODULE in idp console recovery registration; do
docker build . \
--build-arg MODULE=${MODULE} \
--build-arg TAG=${TAG} \
-t "blitz-${MODULE}-${SUFFIX}:${TAG}"
done
Содержимое dockerfiles/files
Типовой набор:
assetscaptchascustom_messagesdynamicflowsmisc
Если вы собираете образ под конкретный модуль, заранее проверьте, какие каталоги реально должны попасть в этот модуль, чтобы не раздувать образ без необходимости.
Рекомендации
Используйте кастомные образы, если:
- нужен строгий контроль версий через registry
- конфигурация меняется вместе с релизом приложения
- команда предпочитает immutable-подход
Используйте внешний конфигурационный репозиторий и PVC, если:
- конфигурация сопровождается отдельно
- важно быстрее вносить изменения в дерево конфигов
- образ не должен пересобираться при каждом изменении конфигурации