Подготовка конфигурации и кастомных образов
Данный раздел описывает основные шаги, если вы планируете поставлять в Blitz не только стандартные образы, но и собственное содержимое: темы, сообщения, Java-классы flow, дополнительные JAR и динамические конфиги.
ОписаниеДерево Helm-чартаконфигурации Blitz
Helm-Если используется схема с динамической конфигурацией, каталог конфигурации должен иметь такой вид:
blitz.conf
assets/
captchas/
custom_messages/
dynamic/
flows/
misc/
panel/
saml/
token_exchange/
Во время публикации чарт переносит blitz-idpblitz.conf устанавливает в кластерroot/blitz.conf, набора приложенийостальные икаталоги вспомогательныхразмещает ресурсов,в необходимыхобщем для работы Blitz Identity Provider.хранилище.
Какие каталоги допустимы
ВЧарт зависимостипубликует оттолько конфигурациизаранее иопределённые включённыхпути модулейверхнего чарт может создавать:уровня:
DeploymentиStatefulSetдля модулей BlitzServiceдля внутреннего и внешнего доступаIngressдля публикации HTTP-маршрутовSecretиConfigMapдля статической конфигурацииPersistentVolumeClaimдля общей динамической конфигурацииJobначальной загрузки конфигурацииPodDisruptionBudgetappsNetworkPolicyassetsServiceMonitorиPodMonitorресурсы Vault Secrets Operator, если включена интеграция с Vault
Версия чарта требует Kubernetes не ниже 1.26.
Основные модули Blitz
Чарт поддерживает следующие модули:
idp— основной модуль аутентификации и выдачи identity-сервисовconsole— административная консоль Blitzreg— модуль регистрацииrecovery— модуль восстановления доступаpanel— дополнительный пользовательский веб-модульldapMfa— сервис LDAP MFA
По умолчанию в чарте включены idp, console, reg, recovery. Модули panel и ldapMfa включаются отдельно через конфигурацию чарта.
Схема конфигурации
В чарте используется двухуровневая модель конфигурации:
статическая конфигурациядинамическая конфигурация
Статическая конфигурация
Статическая конфигурация рендерится Helm и попадает в Secret, ConfigMap или, при использовании Vault, в VaultStaticSecret.
Типовые статические файлы:
boot.confcaptchasoverlay.confcustom_messagesplay.confdynamiclogback.xmlflowsblitz-keystore.bksmethodsconsole.confrootsamltoken_exchangemisc
ДляЭто модулейважно Blitzучитывать этипри проектировании собственного репозитория конфигурации. Если положить нужные файлы по умолчанию монтируются в каталог:
/usr/share/identityblitz/blitz-configкаталог, чарт Динамическая конфигурация
Динамическая конфигурация используется в сценариях, где конфиги поставляютсяих не только внутри образа, но и из внешнего источника.
По умолчанию она размещается по пути:
/usr/share/identityblitz/idp-config
Если выбран режим config.readOnly=false, чарт использует общий PersistentVolumeClaim и публикует туда конфигурацию через специальный Job.опубликует.
ДваНазначение режимаосновных поставки конфигурации
Режим image-only
Режим config.readOnly=true подходит для случаев, когда конфигурация встроена в Docker-образ и её не нужно инициализировать из Git или локального каталога.
Особенности режима:
нет общегоPersistentVolumeClaimне запускаетсяinit-confJobэксплуатация проще и безопаснееизменения конфигурации вносятся через пересборку образов
Режим Git/Local -> PVC
Режим config.readOnly=false нужен, когда конфигурацию требуется публиковать в общий каталог во время установки.
Особенности режима:
используется общийPersistentVolumeClaimисточник динамической конфигурации задаётся черезconfig.source.typeсоздаётсяinit-confJobрабочие поды могут ожидают готовности конфигурации черезinitContainer
Kubernetes-ресурсыкаталогов
Ingressassets
Ingress публикует HTTP-эндпоинты Blitz наружу. Чарт поддерживает настройку класса ingress-контроллера, аннотацийМемы и TLS-секрета.другие статические HTML-ресурсы.
PersistentVolumeClaimcaptchas
Hесурсы, PersistentVolumeClaimнужен только в сценариисвязанные с динамическойиспользуемыми конфигурацией.капчами.
custom_messages
Здесь конфигурациюможно разместить дополнительные или переопределённые наборы сообщений. Этот каталог удобен для локализации и вспомогательныенастройки пользовательских текстов.
dynamic
Здесь размещаются JAR процедуры.
flows
Здесь располагаются Java-классы login flow и связанные с ними расширения.
misc
Прочие дополнительные ресурсы, доступныенапример модулямсловари Blitz IDP.паролей.
Vault и VSOpanel
Если используется vault.enabled=true,модуль чартBlitz можетPanel, забиратьучитывайте секретыотдельную из HashiCorp Vault через Vault Secrets Operator. В этом случае вместо прямого создания некоторых Secret в кластере используются ресурсы:публикацию:
VaultConnectionpanel/app.confVaultAuthpanel/icons/*
Сценарии без пересборки образов
Если нужные изменения можно поставить через динамическое дерево конфигурации, пересобирать образы не требуется. Это типичный сценарий для:
assetsVaultStaticSecretcustom_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}"
PodDisruptionBudgetСборка нескольких модулей
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
Типовой набор:
PodDisruptionBudgetassetscaptchascustom_messagesdynamicflowsmisc
Если вы собираете образ под конкретный модуль, заранее проверьте, какие каталоги реально должны попасть в этот модуль, чтобы не раздувать образ без необходимости.
Рекомендации
Используйте кастомные образы, если:
- нужен строгий контроль версий через registry
- конфигурация меняется вместе с релизом приложения
- команда предпочитает immutable-подход
Используйте внешний конфигурационный репозиторий и PVC, если:
- конфигурация сопровождается отдельно
- важно быстрее вносить изменения в дерево конфигов
- образ не должен пересобираться при
измененииkubectlкаждомdrainиликонфигурации
NetworkPolicy
NetworkPolicy ограничивает сетевой доступ к подам Blitz. В чарте есть как более мягкий режим, так и строгий режим с явными правилами.