Home
Ru2
Администратору кластера
Сервисы и репозитории
Сервисы в составе платформы
Специфические сервисы кластера управления
Модуль аутентификации (shturval-auth)
Оператор аутентификации (auth-controller)
Изменено 2026-07-01 в 19:41
Оператор аутентификации (auth-controller)
Раздел «Администратору кластера»: быстрый переход по подразделам
На этой странице
Expand
Collapse
О сервисе #
Параметр
Значение
Название в интерфейсе
Модуль управления аутентификацией
Системное название chart
shturval-auth
Компонент
auth-controller
Назначение в кластере
Согласование объектов User и AuthOidcClient, проверка локальных пользователей через validating webhook, подготовка данных для OIDC-клиентов.
Критический
Да
Публичный репозиторий
— (компонент платформы «Штурвал»)
Неймспейс
shturval-backend
auth-controller входит в Helm chart shturval-auth . Этот chart также разворачивает authn-server , session-manager и ldap-cache .
Содержание #
Обзор
Архитектура
Установка / развёртывание
Диагностика
Жизненный цикл
Параметры оператора
Справочник CRD/API
1. Обзор #
Назначение: автоматическая согласованность объектов интеграции с авторизационной подсистемой: регистрируемые клиентские записи AuthOidcClient с обновлением статусных условий и связанным Secret , а также объектная модель локальных пользователей User со строгостью bcrypt через validating webhook при Create/Update.
Функции #
Контур
Назначение в эксплуатации
UserReconciler
Присутствует в сборке reconcile; изменение User не приводит к автоматической правке spec/status оператором.
AuthOidcClientReconciler
Создание и повторное согласование OIDC-клиента у провайдера, наблюдаемость через статусные поля.
Validating webhook
Проверка корректности spec.passwordHash у User.
Отслеживание изменений провайдера
Повторная постановка связанных CR в очередь согласования.
Сценарии инициации #
Что происходит
Кто инициирует
Наблюдаемый эффект
Согласование AuthOidcClient
Плоскость Kubernetes или событие провайдера
Обновление status, при необходимости Secret.
Изменение User
Плоскость Kubernetes
Проверку пароля выполняет webhook при create/update.
Вызов validating webhook
API-сервер Kubernetes
Отклонение некорректных значений bcrypt.
Пробы живучести и готовности
kubelet
HTTP /healthz, /readyz на управляемых адресах.
Ограничения и следствия #
Ограничение
Следствие для администратора
UserReconciler без модифицирующей логики
Опирайтесь на webhook и смежные сервисы; не ждите автоисправления User в reconcile.
spec.providerType принимает только значение shturval
Поле задаёт связку клиента со встроенной реализацией авторизационного провайдера.
AUTHN_ISSUER должен указывать на рабочий issuer
Проверяйте значение при переводе стенда в production.
Webhook зависит от TLS-материалов и Service
После изменений сертификатов проверяйте доступность admission.
Место в цепочке управления #
CR AuthOidcClient становится источником данных для приложения authn-server : watcher authn-server получает конфигурацию OAuth/OIDC-клиентов из согласованных ресурсов. User ограничен политикой пароля через webhook до того, как учётные данные будут использованы в login-flow.
Ключевые характеристики #
Характеристика
Значение
API group
auth.shturval.tech, версия v1beta1
CR типы
User, AuthOidcClient
Область CR
Namespaced
Leader election ID
953fa84f.shturval.tech
Пробы оператора
Адрес здоровья :8081 на флагах управления
Webhook
По умолчанию порт 9443, каталог сертификатов задаётся флагами
Изоляция процесса
Бинарь /manager в контейнере
2. Архитектура #
Компонент
Kind
Scope
Описание
User
CustomResourceDefinition + экземпляры
Namespace
bcrypt hash пользователя и группы.
AuthOidcClient
CustomResourceDefinition + экземпляры
Namespace
Регистрируемые OAuth-клиенты.
auth-controller
Deployment
Namespace
Управляющая логика оператора.
Secret
core/v1
Namespace
Связанная с клиентом конфиденциальная информация после согласования.
Точные имена рабочих ресурсов, labels и количество реплик определяются шаблонами chart shturval-auth.
3. Установка / развёртывание #
Оператор поставляется в составе Helm chart shturval-auth. Chart создаёт Deployment auth-controller, RBAC, webhook Service и связанные TLS-материалы. Пространство имён задаётся релизом платформы.
Любые изменения параметров должны выполняться через ShturvalServicePatch (SSP) над соответствующим SSC платформы, без ручного изменения сгенерированных манифестов.
4. Диагностика #
kubectl get deploy,pods -n " ${ NAMESPACE } "
kubectl logs -n " ${ NAMESPACE } " deploy/auth-controller -c manager --tail= 200
kubectl get authoidcclients.auth.shturval.tech -n " ${ NAMESPACE } " -o wide
kubectl get users.auth.shturval.tech -n " ${ NAMESPACE } " -o wide
kubectl get validatingwebhookconfiguration
Событие
Возможная причина
Действие
ConditionCreateClient = False долго
Недоступен issuer, TLS или учёт клиента у провайдера
Проверить AUTHN_ISSUER, сетевую связность до authn-server и связанный Secret.
Webhook недоступен
Ошибка сертификатов, Service или CA bundle
Восстановить связность API-сервера до webhook Service.
User отклоняется при создании
bcrypt hash не прошёл validating webhook
Использовать корректный формат bcrypt hash.
5. Жизненный цикл #
User #
Этап
Поведение
Create/Update
Webhook проверяет bcrypt; объект сохраняется при успешной валидации.
Reconcile оператора
Завершается без наблюдаемых изменений spec/status.
Delete
Используются стандартные политики удаления Kubernetes.
AuthOidcClient #
Этап
Поведение
Стартовое согласование
До финального состояния выставляется Ready=false, затем выполняется сверка с менеджером провайдера.
Повтор
При ошибках reconcile возвращает ошибку controller-runtime.
Связать Secret
Secret становится связанным объектом по условию CR.
Удаление
Проверяйте остаточные ресурсы у провайдера после удаления CR.
6. Параметры оператора #
Флаги процесса #
Флаг
По умолчанию
Значение
--metrics-bind-address
0
Адрес метрик процесса.
--health-probe-bind-address
:8081
Пробы живучести.
--leader-elect
false
Leader election.
--metrics-secure
true
Безопасные метрики.
--enable-http2
false
HTTP/2.
--root-ca-configmap-volume-path
/root-ca/ca-bundle.pem
Точка монтирования корневых CA для исходящих TLS-проверок.
--webhook-port
9443
Порт webhook.
--webhook-cert-dir
/tmp/k8s-webhook-server/serving-certs/
Каталог TLS-материалов webhook.
--debug
false
Подробная запись журнала через zap.
Переменные окружения #
Переменная
Значение
AUTHN_ISSUER
Issuer внутреннего авторизационного провайдера.
ENABLE_WEBHOOKS
При false блокирует регистрацию webhook.
LOG_LEVEL
Уровень записи журнала.
7. Справочник CRD/API #
Группа: auth.shturval.tech , версия: v1beta1 , scope CR: Namespaced .
User #
Поле spec
Тип
Обязательно
Описание
passwordHash
string
Да
bcrypt hash пароля пользователя.
groups
[]string
Нет
Группы локального пользователя.
AuthOidcClient #
Поле spec
Тип
Обязательно
Описание
clientSecretRef
SecretReference
Нет
Secret с client ID и client secret OAuth.
providerType
string enum (shturval)
Да
Класс управления клиентами.
Поле status
Описание
clientInfo
Issuer URL, CA, claims mapping групп и username.
clientHash
md5 наблюдаемых данных конфигурации клиента для обнаружения изменений.
clientSecretRef
Наблюдаемое положение секрета.
ready
Булева готовность.
conditions
Последовательность фаз согласования.
Condition
True
False причины
ConditionInitClientManager
Менеджер провайдеров успешно построен.
Ошибка конфигурирования.
ConditionCreateClient
Клиент существует или создан.
Ошибка записи конфигурации у провайдера.
ConditionValidateClientStatus
Внешнее состояние клиента синхронно ожиданиям платформы.
Ошибка статусной валидации.