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

Blitz IDP в Kubernetes

Описание Helm-Helm чарта

Helm-чарт устанавливает в кластер набор приложений и вспомогательных ресурсов, необходимых для работы Blitz Identity Provider.

В зависимости от конфигурации и включённых модулей чарт может создавать:

  • Deployment и StatefulSet для модулей Blitz
  • Service для внутреннего и внешнего доступа
  • Ingress для публикации HTTP-маршрутов
  • Secret и ConfigMap для статической конфигурации
  • PersistentVolumeClaim для общей динамической конфигурации
  • Job начальной загрузки конфигурации
  • PodDisruptionBudget
  • NetworkPolicy
  • 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.conf
  • overlay.conf
  • play.conf
  • logback.xml
  • blitz-keystore.bks
  • console.conf

Для модулей 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-ресурсы

Ingress

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

PersistentVolumeClaim

PersistentVolumeClaim нужен только в сценарии с динамической конфигурацией. Он хранит конфигурацию и вспомогательные ресурсы, доступные модулям Blitz IDP.

Vault и VSO

Если используется vault.enabled=true, чарт может забирать секреты из HashiCorp Vault через Vault Secrets Operator. В этом случае вместо прямого создания некоторых Secret в кластере используются ресурсы:

  • VaultConnection
  • VaultAuth
  • VaultStaticSecret

PodDisruptionBudget

PodDisruptionBudget защищает модули от добровольных прерываний, например при kubectl drain или плановом обслуживании узлов.

NetworkPolicy

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