Модуль программного управления Платформой (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-controllerChart shturval-backendФормирует OPA bundle для проверки прав.
sh-authnChart shturval-authПредоставляет авторизационный issuer и login-flow.
sh-session-managerChart shturval-authОбслуживает SESSION_LIST_URL и SESSION_DELETE_URL.
sh-ldap-cacheChart 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 / роль в PodScopeОписание
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-запроса типов следующий:

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

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


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

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

ПеременнаяНазначение
AUTH_ENDPOINTURL / 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 → Управлять. Сервис размещается в кластере управления.