Перейти к основному контенту

Подготовка конфигурации и кастомных образов

Данный раздел описывает основные шаги, если вы планируете поставлять в 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 для модулей Blitz
  • Service для внутреннего и внешнего доступа
  • Ingress для публикации HTTP-маршрутов
  • Secret и ConfigMap для статической конфигурации
  • PersistentVolumeClaim для общей динамической конфигурации
  • Job начальной загрузки конфигурации
  • PodDisruptionBudgetapps
  • NetworkPolicyassets
  • ServiceMonitor и PodMonitor
  • ресурсы Vault Secrets Operator, если включена интеграция с Vault

Версия чарта требует Kubernetes не ниже 1.26.

Основные модули Blitz

Чарт поддерживает следующие модули:

  • idp — основной модуль аутентификации и выдачи identity-сервисов
  • console — административная консоль Blitz
  • reg — модуль регистрации
  • recovery — модуль восстановления доступа
  • panel — дополнительный пользовательский веб-модуль
  • ldapMfa — сервис LDAP MFA

По умолчанию в чарте включены idp, console, reg, recovery. Модули panel и ldapMfa включаются отдельно через конфигурацию чарта.

Схема конфигурации

В чарте используется двухуровневая модель конфигурации:

  • статическая конфигурация
  • динамическая конфигурация

Статическая конфигурация

Статическая конфигурация рендерится Helm и попадает в Secret, ConfigMap или, при использовании Vault, в VaultStaticSecret.

Типовые статические файлы:

  • boot.confcaptchas
  • overlay.confcustom_messages
  • play.confdynamic
  • logback.xmlflows
  • blitz-keystore.bksmethods
  • console.confroot
  • saml
  • token_exchange
  • misc

ДляЭто модулейважно 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-conf Job
  • эксплуатация проще и безопаснее
  • изменения конфигурации вносятся через пересборку образов

Режим Git/Local -> PVC

Режим config.readOnly=false нужен, когда конфигурацию требуется публиковать в общий каталог во время установки.

Особенности режима:

  • используется общий PersistentVolumeClaim
  • источник динамической конфигурации задаётся через config.source.type
  • создаётся init-conf Job
  • рабочие поды могут ожидают готовности конфигурации через initContainer

Kubernetes-ресурсыкаталогов

Ingressassets

Ingress публикует HTTP-эндпоинты Blitz наружу. Чарт поддерживает настройку класса ingress-контроллера, аннотацийМемы и TLS-секрета.другие статические HTML-ресурсы.

PersistentVolumeClaimcaptchas

PersistentVolumeClaimHесурсы, нужен только в сценариисвязанные с динамическойиспользуемыми конфигурацией.капчами.

Он

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.conf
  • VaultAuthpanel/icons/*

Сценарии без пересборки образов

Если нужные изменения можно поставить через динамическое дерево конфигурации, пересобирать образы не требуется. Это типичный сценарий для:

  • assets
  • VaultStaticSecretcustom_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

Типовой набор:

  • PodDisruptionBudgetassets
  • защищает
  • captchas
  • модули
  • custom_messages
  • от
  • dynamic
  • добровольных
  • flows
  • прерываний,
  • misc
  • например

Если вы собираете образ под конкретный модуль, заранее проверьте, какие каталоги реально должны попасть в этот модуль, чтобы не раздувать образ без необходимости.

Рекомендации

Используйте кастомные образы, если:

  • нужен строгий контроль версий через registry
  • конфигурация меняется вместе с релизом приложения
  • команда предпочитает immutable-подход

Используйте внешний конфигурационный репозиторий и PVC, если:

  • конфигурация сопровождается отдельно
  • важно быстрее вносить изменения в дерево конфигов
  • образ не должен пересобираться при kubectlкаждом drainизменении иликонфигурации
  • плановом
обслуживании узлов.

NetworkPolicy

NetworkPolicy ограничивает сетевой доступ к подам Blitz. В чарте есть как более мягкий режим, так и строгий режим с явными правилами.