Модуль программного управления Платформой (shturval-backend)

О сервисе

Параметр Значение
Название в интерфейсе Модуль программного управления Платформой
Системное название (идентификатор) shturval-backend
Назначение в кластере Модуль программного управления платформой «Штурвал» (API, бизнес-логика). Включает Swagger UI для документации API. Устанавливается только в кластер управления.
Критический Да
Публичный репозиторий — (платформа); Swagger UI — swagger-ui
Зависимости shturval-backend-crds, shturval-ingress-controller
Неймспейс shturval-backend

Сервис входит в Helm chart shturval-backend. Этот chart также разворачивает оператор согласования прав (stp-controller), который отдаёт bundle для OPA. Компоненты аутентификации и сессий находятся в chart shturval-auth.

Содержание

  1. Обзор
  2. Архитектура
  3. Установка / развёртывание
  4. Диагностика
  5. Жизненный цикл
  6. Параметры сервиса

1. Обзор

Назначение: главный программный интерфейс управления платформой через HTTP API (/api/v1): кластеры, группы узлов и провайдеры (семейство CAP*), объектные ресурсы namespace/workload при необходимости, терминалы и журналы, метрики, интеграция с авторизационным контуром и внешними точками по конфигурации. Изменение состояния кластера происходит по запросам оператора/API-клиента, а не через согласование CR собственными reconciler-ами внутри процесса.

Функции

Контур Назначение в эксплуатации
HTTP /api/v1 Основное API; после исключений для websocket-терминала применяется JWT middleware
Управление провайдерами CRUD и проверка соединений для платформенных видов провайдеров инфраструктуры
Жизненный цикл кластеров и CAPI-сущностей Создание и изменение объектов управления через соответствующие сервисы
Bundle прав OPA Получение и использование правил авторизации из permissions operator или статический набор для docker installer
Swagger / клиентская генерация Артефакты сборки платформы; для эксплуатации важно наличие согласованной версии схемы с релизом
Метрики Отдельный HTTP-сервер Prometheus (адрес задаётся окружением)

Сценарии инициации

Что происходит Кто инициирует Наблюдаемый эффект
Обработка API Оператор UI, клиент или автоматизация Ответ или поток websocket; возможны изменения в Kubernetes по логике handler
Слежение за bundle прав Процесс при старте (если не режим статического bundle) Актуализация правил для встроенной в поставку схемы OPA
Очистка терминальных сессий Фоновые задачи после старта маршрутизатора Поддержание устойчивости ресурсов терминала
Метрики Плоскость kubelet или мониторинг Сборчик опрашивает отдельный bind-адрес
Выбор названия Swagger При старте на основе токена лицензии Заголовок документации API может отличаться по продуктовой редакции

Ограничения и следствия

Ограничение Следствие для администратора
Обязательный доступ оператора Kubernetes к управляющему кластеру Без действующей конфигурации клиента кластера процесс не должен запускаться
Проглушивание процесса API на :8080 В типовой поставке доступ снаружи идёт через Envoy/Service; порты ingress не равняются «голому» Go-процессу напрямую
Открытый CORS (AllowAllOrigins) по умолчанию Политика браузера/безопасности определяется конфигурацией маршрутизатора в образе

Место в цепочке управления

Потребитель отправляет HTTPS-запрос в pod backend: трафик сначала обрабатывает Envoy, который проксирует его на локальный процесс sh-backend-api на 127.0.0.1:8080. Параллельно сайдкар OPA проверяет политики авторизации по bundle прав. Сам процесс API обращается к Kubernetes API для чтения и изменения объектов и к внешним URL партнёрских компонентов: authn-server, session-manager, ldap-cache и др.

Связанные компоненты

Компонент Где разворачивается Связь с backend
stp-controller Chart shturval-backend Формирует OPA bundle для проверки прав.
sh-authn Chart shturval-auth Предоставляет авторизационный issuer и login-flow.
sh-session-manager Chart shturval-auth Обслуживает SESSION_LIST_URL и SESSION_DELETE_URL.
sh-ldap-cache Chart shturval-auth Обслуживает HTTP-запросы backend к кешу пользователей и групп LDAP.

Ключевые характеристики

Характеристика Значение
Имя бинаря sh-backend-api
Прослушивание HTTP процесса 0.0.0.0:8080
Адрес метрик Переменная PROMETHEUS_ADDR, по умолчанию :9090
Namespace Совпадает с namespace Helm-релиза; NAMESPACE берётся из metadata.namespace Pod
Аутентификация входящего трафика JWT middleware в стеке маршрутизатора; конфигурация провайдера авторизации задаётся окружением
HTTP/2 в Go-сервере Настраивается вне приложения через TLS/proxy-слои

2. Архитектура

Компоненты рабочей нагрузки

Компонент Kind / роль в Pod Scope Описание
sh-backend-api контейнер namespace Основной HTTP-сервер платформы
Envoy sidecar контейнер namespace Терминальная точка HTTP(S) перед процессом API
OPA sidecar контейнер namespace Проверка политик; использует актуальный bundle прав
Метрики встроенный HTTP-сервис процесса Отдельный Gin-сервер на адресе из PROMETHEUS_ADDR

RBAC процесса в кластере определяется манифестами chart shturval-backend; перечень прав точечно здесь не дублируется.


3. Установка / развёртывание

Развёртывание задаётся Helm chart shturval-backend. Компоненты API, Envoy, OPA, Swagger UI, permissions operator и сопряжённые объекты (RBAC, Service, Ingress/Envoy конфигурация) создаются единым релизом.

Обратите внимание! любые изменения параметров установки должны выполняться согласованно с платформой через ShturvalServicePatch (SSP) (или эквивалентный утверждённый механизм), без ручных правок в обход управления платформы.


4. Диагностика

Типовые проверки следующие (NAMESPACE, DEPLOYMENT, POD подставьте по фактической установке; имени Deployment соответствуют значения Helm chart shturval-backend):

kubectl get deployment -n "${NAMESPACE}"
kubectl get pods -n "${NAMESPACE}" -o wide
kubectl describe pod -n "${NAMESPACE}" "${POD}"
kubectl logs -n "${NAMESPACE}" "${POD}" -c sh-backend-api --tail=200
kubectl logs -n "${NAMESPACE}" "${POD}" -c envoy --tail=200
kubectl logs -n "${NAMESPACE}" "${POD}" -c opa --tail=200
Симптом Возможная причина Действие
Процесс не запускается Неверный или недоступный kubeconfig платформы Проверить Secret ServiceAccount и сетевой доступ к apiserver
401 / отказ авторизации клиента Конфигурация JWT или auth endpoint Проверить параметры авторизации окружения
OPA блокирует запросы уполномоченного пользователя Устаревший bundle или ошибка наблюдателя bundle Убедиться в работоспособности permissions operator и сервиса bundle
Задержки API Перегрузка или задержки к Kubernetes API Проверить нагрузку apiserver/etcd и квоты

5. Жизненный цикл

Путь обработки одного внешнего HTTP-запроса типов следующий:

Шаг Участник Что наблюдает администратор
1 Ingress / Service / Envoy Попадание запроса в нужный сервис
2 Gin router Последовательность middleware: recovery, request id, логирование, CORS, JWT (кроме исключений для websocket-терминала)
3 Обработчик Бизнес-операции и возможные побочные эффекты в Kubernetes
4 Возврат ответа JSON, поток websocket или файл

Раздел не содержит reconcile, финализаторов и очередей controller-runtime для самого процесса API.


6. Параметры сервиса

Конфигурация задаётся переменными окружения процесса. Важные для связки платформы переменные:

Переменная Назначение
AUTH_ENDPOINT URL / issuer авторизационной подсистемы
NAMESPACE Рабочий namespace платформы
DOCKER_INSTALLER Режим использования статического bundle прав вместо живого наблюдения файловой системы
LOG_LEVEL Уровень логирования
PROMETHEUS_ADDR Адрес прослушивания Prometheus внутри процесса
SESSION_LIST_URL, SESSION_DELETE_URL Интеграция с session-manager
Серия LDAP_CACHE_* Интеграция с ldap-cache
LICENSE_TOKEN Разбор лицензии и выбор редакции строк в Swagger-документе

Где настраивать

Сервисы и репозиторииУстановленные сервисы → shturval-backend → Управлять. Сервис размещается в кластере управления.