Модуль программного управления Платформой (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. Обзор
Назначение: главный программный интерфейс управления платформой через 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 → Управлять. Сервис размещается в кластере управления.