Blitz IDP в Kubernetes
Описание Helm чарта
Helm-чарт устанавливает в кластер набор приложений и вспомогательных ресурсов, необходимых для работы Blitz Identity Provider.
В зависимости от конфигурации и включённых модулей чарт может создавать:
DeploymentиStatefulSetдля модулей BlitzServiceдля внутреннего и внешнего доступаIngressдля публикации HTTP-маршрутовSecretиConfigMapдля статической конфигурацииPersistentVolumeClaimдля общей динамической конфигурацииJobначальной загрузки конфигурацииPodDisruptionBudgetNetworkPolicyServiceMonitorи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.confoverlay.confplay.conflogback.xmlblitz-keystore.bksconsole.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-confJob - эксплуатация проще и безопаснее
- изменения конфигурации вносятся через пересборку образов
Режим Git/Local -> PVC
Режим config.readOnly=false нужен, когда конфигурацию требуется публиковать в общий каталог во время установки.
Особенности режима:
- используется общий
PersistentVolumeClaim - источник динамической конфигурации задаётся через
config.source.type - создаётся
init-confJob - рабочие поды могут ожидают готовности конфигурации через
initContainer
Kubernetes-ресурсы
Ingress
Ingress публикует HTTP-эндпоинты Blitz наружу. Чарт поддерживает настройку класса ingress-контроллера, аннотаций и TLS-секрета.
PersistentVolumeClaim
PersistentVolumeClaim нужен только в сценарии с динамической конфигурацией. Он хранит конфигурацию и вспомогательные ресурсы, доступные модулям Blitz IDP.
Vault и VSO
Если используется vault.enabled=true, чарт может забирать секреты из HashiCorp Vault через Vault Secrets Operator. В этом случае вместо прямого создания некоторых Secret в кластере используются ресурсы:
VaultConnectionVaultAuthVaultStaticSecret
PodDisruptionBudget
PodDisruptionBudget защищает модули от добровольных прерываний, например при kubectl drain или плановом обслуживании узлов.
NetworkPolicy
NetworkPolicy ограничивает сетевой доступ к подам Blitz. В чарте есть как более мягкий режим, так и строгий режим с явными правилами.