Перейти к содержанию

Руководство администратора

Полное наименование: Компонент управления моделями видеоаналитики Обозначение: LPI-VAP-MM Краткое наименование: «Управление моделями» Программный продукт: «Vizorlabs Platform 4.0» («Визорлабс Платформа 4.0») Стандарт: ГОСТ 19.503-79

Аннотация

Настоящий документ является руководством администратора компонента управления моделями видеоаналитики (LPI-VAP-MM) — расширения программного продукта «Vizorlabs Platform 4.0» («Визорлабс Платформа 4.0»; далее — Платформа 4.0). Документ предназначен для специалистов, выполняющих развёртывание, настройку, проверку и обслуживание серверных составных частей компонента.

Руководство определяет структуру компонента, границы ответственности администратора, состав зависимостей, порядок подготовки инфраструктуры и развёртывания в Kubernetes, направления настройки, проверки и сопровождения. Подробные команды, имена ресурсов и значения параметров должны уточняться для целевой поставки и фиксироваться в приложениях к настоящему руководству.

Порядок работы с каталогом моделей, версиями, проверочными данными и запусками приведён в руководстве пользователя. Функции, алгоритмы, входные и выходные данные описаны в описании программы, состав и версии поставки — в формуляре.

Администратор должен владеть навыками администрирования Linux и Kubernetes, уметь работать с Helm и kubectl, понимать назначение PostgreSQL, S3-совместимого объектного хранилища, Kafka, Redis, графических ускорителей и централизованного журналирования. Знание разработки моделей машинного обучения для выполнения штатных административных операций не требуется.

1. Общие сведения о программе

1.1. Назначение и функции программы

LPI-VAP-MM обеспечивает управляемый жизненный цикл моделей видеоаналитики: от регистрации модели и загрузки версии до автоматической проверки, публикации, применения в сценариях и вывода из эксплуатации. Компонент также предоставляет средства подготовки версионируемых проверочных данных и выполнения моделей на этих данных.

Группа задач Содержание Раздел
Подготовка инфраструктуры Проверка узлов Kubernetes, постоянных томов, сетевой связности, GPU и общих сервисов Платформы 4.0 3.1
Развёртывание Установка и обновление Helm-релиза, контроль миграций и готовности рабочих нагрузок 3.2
Настройка функций Выбор поддерживаемых семейств моделей, конвертеров и контура проверочных запусков 3.3
Настройка режимов Ограничения загрузки, параллелизм задач, сроки хранения, очереди, тайм-ауты и журналирование 3.4
Настройка доступа Получение пользовательского контекста от LPI-VAP-CORE и проверка полномочий на операции MM 3.5
Защита конфигурации Хранение секретов, сертификатов и реквизитов инфраструктурных сервисов 3.6
Проверка Технические и сквозные проверки каталога, конвертации, публикации и запуска на проверочных данных 4
Сопровождение Резервное копирование, восстановление, обновление, очистка данных, диагностика и масштабирование 5

Таблица 1.1.1 — Группы задач администратора LPI-VAP-MM.

LPI-VAP-MM не выполняет непосредственную аутентификацию через СУДИР, управление камерами, исполнение моделей на рабочих видеопотоках и регистрацию событий. Единую точку входа и пользовательский контекст предоставляет LPI-VAP-CORE; разработку сценариев и замену версий моделей в них обеспечивает LPI-VAP-RS.

1.2. Сведения о технических средствах

Компонент размещается на мастер-ноде и вычислительных нодах общего кластера Kubernetes Платформы 4.0. Отдельные физические серверы для LPI-VAP-MM не требуются, однако компоненту должны быть гарантированно выделены ресурсы, установленные проектом поставки.

Тип узла Размещаемые функции LPI-VAP-MM Определяющие ресурсы
Мастер-нода Реестр моделей, хранилища проверочных данных и запусков, прикладные API, метаданные и очереди CPU, оперативная память, постоянные тома PostgreSQL и объектного хранилища
Вычислительная нода Конвертация, файловая валидация, контрольный инференс и пользовательские проверочные запуски GPU, видеопамять, CPU, оперативная память, SSD для рабочих каталогов и локального кэша
Рабочее место администратора Доступ к интерфейсу Платформы 4.0 и средствам администрирования кластера Поддерживаемый браузер, защищённый сетевой доступ, средства работы с Kubernetes и Helm

Таблица 1.2.1 — Типы технических средств.

Количественные требования и правила совмещения нагрузки приведены в разделе 4 описания программы. В целевой редакции руководства они дополняются фактическими классами хранения, метками узлов, лимитами ресурсов и числом параллельных задач.

1.3. Сведения о программных средствах

Уровень Программные средства Назначение
Системный «Московская серверная операционная система», среда исполнения контейнеров, Kubernetes, Helm Исполнение и оркестрация рабочих нагрузок
Вычислительный Драйвер NVIDIA, NVIDIA Container Toolkit, CUDA, cuDNN, TensorRT Предоставление GPU конвертерам и исполнителям проверок
Инфраструктурный PostgreSQL, MinIO, Kafka, Redis, nginx и API-шлюз Метаданные, объекты, сообщения, очереди и маршрутизация запросов
Прикладной Контейнерные образы составных частей LPI-VAP-MM Реализация функций управления моделями и проверок
Клиентский Поддерживаемый веб-браузер, kubectl, Helm Пользовательский и административный доступ

Таблица 1.3.1 — Уровни программных средств.

Точные версии программных средств, чарта и контейнерных образов фиксируются в формуляре и ведомости дистрибутива целевой поставки. Значения из разных поставок нельзя смешивать без проверки совместимости.

2. Структура программы

2.1. Составные части программы

Составная часть Назначение Основные зависимости
svr-models-registry Каталог моделей и версий, загрузка пакетов, состояния, публикация, архив и контроль использования PostgreSQL, MinIO, Kafka
svr-asset-storage Каталог и версии проверочных данных, хранение медиафайлов, зон и атрибутов PostgreSQL, MinIO
svr-launch-storage Учёт проверочных запусков, прогресса, кадров, журналов и результатов PostgreSQL, MinIO, контур проверки
inf-flows-manager Валидация и конвертация версий, контрольный инференс, обновление ссылок на модель в сценариях Реестр моделей, Kafka, конвертеры, LPI-VAP-RS
yolo-conversion, mm-conversion Подготовка исполняемых представлений моделей основного контура GPU, общие рабочие каталоги, реестр моделей
nr-sbx-backend Управление сессиями пользовательских проверок и диспетчеризация задач Хранилище запусков, Redis, Kafka, MinIO
nr-sbx-celery Асинхронное выполнение модели на проверочных изображениях и видеозаписях Очередь задач, GPU, рабочие каталоги
nr-sbx-yolo-conversion, nr-sbx-mm-conversion Подготовка представлений модели в изолированном контуре проверки GPU, рабочие каталоги контура проверки

Таблица 2.1.1 — Составные части LPI-VAP-MM.

Обозначения svr-*, inf-* и nr-sbx-* в таблице являются логическими именами составных частей, согласованными с описанием программы. В текущем Helm-чарте ресурсы трёх хранилищ имеют имена wf-*; соответствие приведено в таблице 3.2.2. При выполнении команд администратор использует имена из отрендеренного манифеста принятой версии поставки.

Веб-интерфейс, API-шлюз, средства единого входа, PostgreSQL, MinIO, Kafka и Redis являются общеплатформенными или инфраструктурными средствами. Они нужны для работы LPI-VAP-MM, но не включаются в состав его прикладных сервисов.

2.2. Связи между составными частями

flowchart TB CORE["LPI-VAP-CORE
единый вход и пользовательский контекст"] UI["Веб-интерфейс и API-шлюз"] subgraph MM["LPI-VAP-MM"] MR["svr-models-registry"] AS["svr-asset-storage"] LS["svr-launch-storage"] FM["inf-flows-manager"] CONV["Конвертеры
основного контура"] SB["nr-sbx-backend"] CEL["nr-sbx-celery"] SCONV["Конвертеры
контура проверки"] end DB[("PostgreSQL")] S3[("MinIO")] K["Kafka Платформы 4.0"] KS["Kafka и Redis
контура проверки"] RS["LPI-VAP-RS"] INF["Исполняющее ядро
видеоаналитики"] CORE --> UI UI --> MR UI --> AS UI --> LS UI --> FM MR --> DB AS --> DB LS --> DB MR --> S3 AS --> S3 LS --> S3 MR <--> K K --> FM FM --> CONV FM --> MR FM <--> RS LS --> SB SB <--> KS SB --> CEL CEL --> SCONV CEL --> S3 K --> INF INF --> MR

Схема 2.1 — Основные связи LPI-VAP-MM.

Для целевой поставки по каждой связи в приложении В фиксируются имя Kubernetes Service, пространство имён, протокол, направление соединения, способ проверки готовности, владелец реквизитов и признаки нарушения связи.

2.3. Связи с другими программами

Связанная система или компонент Использование Граница ответственности
LPI-VAP-CORE Единая точка входа, пользовательский контекст, общий интерфейс и API-шлюз CORE взаимодействует с СУДИР; MM только проверяет переданные полномочия
LPI-VAP-RS Получение опубликованных моделей, поиск использования и массовая замена версии в сценариях RS хранит версии сценариев; MM инициирует согласованные операции над ссылками на модели
Исполняющее ядро видеоаналитики Получение опубликованных артефактов и сведений о версиях Исполнение рабочих видеопотоков и регистрация событий не входят в MM
Реестр контейнерных образов Получение образов согласованной версии поставки Доступ и доверенные сертификаты предоставляет инфраструктура заказчика
Мониторинг и журналирование Сбор состояния, метрик и журналов рабочих нагрузок Политики хранения и доступ задаются для Платформы 4.0
Система резервного копирования Защита метаданных, объектных данных и конфигурации Согласованность копий PostgreSQL и MinIO обеспечивает регламент поставки

Таблица 2.3.1 — Внешние связи компонента.

3. Настройка программы

3.1. Настройка на состав технических средств

Подготовка выполняется в составе общего кластера Kubernetes Платформы 4.0. Для прикладных хранилищ LPI-VAP-MM отдельные GPU не требуются; графические ускорители предоставляются конвертерам и исполнителям проверочных запусков. Размещение служебных подов на управляющих узлах Kubernetes допускается только тогда, когда это прямо предусмотрено схемой кластера и его политиками.

До развёртывания администратор выполняет следующие действия:

  1. Проверяет доступ к API Kubernetes и состояние всех предусмотренных проектом узлов. Узлы должны иметь состояние Ready, а системные поды DNS и сетевого плагина — быть готовы.
  2. Сверяет проектные метки, affinity и tolerations. Сервисы wf-models-registry, wf-asset-storage и wf-launch-storage размещаются на узлах прикладного контура; конвертеры и исполнители проверок — на вычислительных узлах с ресурсом nvidia.com/gpu.
  3. Проверяет доступность StorageClass и постоянных томов инфраструктурных сервисов. Метаданные хранятся в PostgreSQL, пакеты моделей и материалы проверок — в S3-совместимом объектном хранилище. Удаление Helm-релиза не должно приводить к удалению этих данных.
  4. Проверяет сетевую доступность PostgreSQL, MinIO, Kafka, Redis, сервисов LPI-VAP-RS и вычислительного контура из пространства имён поставки.
  5. Проверяет синхронизацию времени на всех узлах. Расхождение времени нарушает сопоставление состояний асинхронных задач, журналов и сообщений Kafka.
  6. Создаёт imagePullSecret для доверенного реестра образов и убеждается, что сервисные учётные записи могут получить образы, указанные в формуляре.
  7. Задаёт requests и limits по результатам нагрузочного расчёта. Значения из демонстрационного values.yaml не используются как эксплуатационные без проверки на целевой нагрузке.
  8. Проверяет запас ёмкости PostgreSQL и S3. Перед первичной загрузкой моделей и ассетов рекомендуется иметь не менее 20 % свободного пространства сверх расчётного объёма поставки.

Минимальная исходная проверка выполняется командами:

kubectl cluster-info
kubectl get nodes -o wide
kubectl get nodes --show-labels
kubectl get storageclass
kubectl get pods -A
helm version

Для вычислительной ноды дополнительно проверяется наличие ресурса GPU:

kubectl describe node <имя-вычислительной-ноды>

В секциях Capacity и Allocatable должен присутствовать ресурс nvidia.com/gpu в количестве, предусмотренном проектом. Проверка nvidia-smi в операционной системе не заменяет проверку предоставления GPU в Kubernetes.

flowchart LR GW["Общий API-шлюз
Платформы 4.0"] subgraph K8S["Кластер Kubernetes"] subgraph APP["Узлы прикладного контура"] MR["wf-models-registry"] AS["wf-asset-storage"] LS["wf-launch-storage"] end subgraph GPU["Вычислительные узлы"] FM["inf-flows-manager"] CV["Конвертеры моделей"] SB["Исполнители проверочных запусков"] DEV["nvidia.com/gpu"] FM --> CV --> DEV SB --> DEV end end PG[("PostgreSQL")] S3[("MinIO / S3")] K[("Kafka")] R[("Redis контура проверок")] GW --> MR GW --> AS GW --> LS MR --> PG AS --> PG LS --> PG MR --> S3 AS --> S3 LS --> S3 MR <--> K LS <--> K K <--> FM LS --> SB SB <--> R

Схема 3.1 — Размещение основных рабочих нагрузок LPI-VAP-MM.

3.1.1. Контроль готовности инфраструктуры

До установки администратор заполняет контрольный лист. Имена ресурсов и допустимые версии берутся из документов конкретной поставки, а не из примеров предыдущих стендов.

Объект проверки Способ проверки Ожидаемый результат Действия при отклонении
Kubernetes и системные поды kubectl get nodes; kubectl get pods -A Все требуемые узлы Ready; DNS, CNI и системные контроллеры готовы Восстановить работу узла или системного сервиса до установки LPI-VAP-MM
Метки и ограничения размещения kubectl get nodes --show-labels; просмотр отрендеренных Deployment Селекторы и tolerations соответствуют проектным типам узлов Исправить файл значений или метки; повторить шаблонизацию
GPU вычислительных узлов kubectl describe node; согласованный тестовый под Ресурс nvidia.com/gpu доступен контейнеру Проверить драйвер, device plugin, runtime и правила планирования
Постоянное хранение kubectl get storageclass,pvc -n <пространство> Требуемый StorageClass существует; PVC имеют состояние Bound Проверить CSI, режим доступа, ёмкость и привязку к узлу
PostgreSQL Контроль TCP/TLS и входа сервисной учётной записи без вывода пароля Сервер доступен, предусмотренные базы могут быть созданы или открыты Проверить маршрут, сертификат, права учётной записи и лимит подключений
MinIO / S3 Контроль TLS, доступа к endpoint и операций с тестовым объектом в служебном префиксе Запись, чтение и удаление тестового объекта успешны Проверить DNS, сертификат, политику бакета, квоту и реквизиты доступа
Kafka Проверка соединения с bootstrap-серверами и прав на топики LPI-VAP-MM Метаданные кластера доступны, сервисные группы могут читать и записывать свои топики Проверить маршрут, TLS/SASL, ACL, имена топиков и группы потребителей
Redis и sandbox Проверка соединения из пространства имён поставки Redis отвечает, сервисы контура проверок разрешаются через DNS Исправить Service, сетевую политику или параметры подключения
Реестр образов Контрольное получение образа через imagePullSecret Образ согласованного digest загружается без ошибок TLS и авторизации Исправить сертификат, сетевой доступ или секрет реестра
Время Проверка NTP на каждой ноде Все ноды используют согласованный источник времени Восстановить синхронизацию до запуска асинхронных задач

Таблица 3.1.1 — Контроль готовности инфраструктуры LPI-VAP-MM.

Результаты заносятся в протокол приложения Д. В протокол не включаются пароли, токены, закрытые ключи и полное содержимое Kubernetes Secret.

3.2. Развёртывание и запуск

LPI-VAP-MM развёртывается не отдельным compose-проектом, а в составе Helm-релиза родительского чарта box5. В командах используются следующие обозначения:

  • <релиз> — имя Helm-релиза Платформы 4.0;
  • <пространство> — пространство имён Kubernetes;
  • <чарт> — каталог или пакет родительского чарта box5;
  • <значения> — проверенный файл открытых параметров целевой поставки;
  • <секреты> — защищённый YAML-файл значений для формирования Kubernetes Secret; файл не включается в дистрибутив с открытыми параметрами и не прикладывается к протоколу.
Команда Назначение
helm dependency build <чарт> Подготовить дочерние чарты в соответствии с Chart.lock
helm lint <чарт> -f <значения> Выполнить статическую проверку чарта и открытых значений
helm template <релиз> <чарт> -n <пространство> -f <значения> --set-file global.secrets.fileContent=<секреты> Проверить состав ресурсов до изменения кластера; сформированный вывод хранить как конфиденциальный, поскольку он содержит Secret
helm upgrade --install <релиз> <чарт> -n <пространство> --create-namespace -f <значения> --set-file global.secrets.fileContent=<секреты> --atomic --wait --timeout 20m Установить или обновить релиз с ожиданием готовности и автоматическим откатом при ошибке
helm status <релиз> -n <пространство> Проверить состояние установленной редакции
helm history <релиз> -n <пространство> Просмотреть историю редакций для диагностики и отката
kubectl get deploy,pods,svc -n <пространство> -o wide Проверить рабочие нагрузки и внутренние сервисы
kubectl get events -n <пространство> --sort-by=.lastTimestamp Найти ошибки планирования, загрузки образов, подключения томов и инициализации

Таблица 3.2.1 — Основные команды развёртывания и контроля.

Команды с --set-file не выполняются с включённой трассировкой оболочки. Вывод helm template, kubectl get secret -o yaml и kubectl describe secret не добавляется в заявку сопровождения или общедоступный журнал.

3.2.1. Состав и проверка дистрибутива

Комплект установки должен включать родительский чарт box5, зафиксированные дочерние чарты, файл открытых значений, ведомость образов с digest, описание требуемых секретов без их значений, миграционные требования и эксплуатационные документы той же версии.

В составе дочернего чарта workflow проверяются как минимум следующие ресурсы:

Логическая часть документа Имя ресурса, заданное текущим Helm-чартом Дочерний чарт Назначение
svr-models-registry wf-models-registry models-registry Каталог, версии и состояния моделей
svr-asset-storage wf-asset-storage asset-storage Ассеты, версии и проверочные медиафайлы
svr-launch-storage wf-launch-storage launch-storage Запуски, прогресс, результаты и журналы
LPI-VAP-RS wf-scenario-storage scenario-storage Хранилище сценариев; относится к компоненту LPI-VAP-RS, но поставляется тем же доменным чартом

Таблица 3.2.2 — Соответствие логических и Kubernetes-имён.

Перед установкой выполняются следующие проверки:

  1. Версии Chart.yaml и Chart.lock совпадают с формуляром, а digest файла блокировки не изменён после приёмки комплекта.
  2. В values.yaml заданы согласованные адреса PostgreSQL, MinIO и Kafka, внутренние URL зависимых сервисов, имена бакетов, топиков и групп.
  3. Секретные параметры PostgreSQL, MinIO, Kafka и реестра образов исключены из открытых ConfigMap и передаются через Kubernetes Secret или подключённое средство управления секретами.
  4. Теги образов заменены неизменяемыми digest либо сопоставлены с digest в ведомости поставки.
  5. Ресурсы, размещение, Service и сетевые политики соответствуют схеме кластера. Прямой внешний доступ к сервисам wf-* не открывается, если все обращения проходят через общий API-шлюз.
  6. Значения очистки объектных данных оставлены отключёнными до утверждения сроков хранения и успешной проверки резервного копирования.

В типовом чарте probes для wf-models-registry, wf-asset-storage и wf-launch-storage параметризованы, но по умолчанию отключены. Их нельзя включать формально только ради состояния Ready: сначала на образах версии поставки проверяются фактические маршруты и семантика /healthz и /ready.

3.2.2. Первичное развёртывание

  1. Создайте либо выберите пространство имён и проверьте квоты:
kubectl get namespace <пространство>
kubectl get resourcequota,limitrange -n <пространство>
  1. Подготовьте imagePullSecret, открытый файл значений и защищённый файл секретов. Убедитесь, что последний доступен только исполнителю установки.
  2. Выполните helm dependency build, helm lint и helm template командами таблицы 3.2.1. Проверьте отсутствие паролей и ключей в создаваемых ConfigMap, корректность имён Service и отсутствие незапланированного внешнего NodePort.
  3. Установите релиз командой helm upgrade --install из таблицы 3.2.1.
  4. Проверьте состояние релиза, Deployment и событий пространства имён. В составе workflow должны появиться wf-models-registry, wf-asset-storage, wf-launch-storage и wf-scenario-storage.
  5. Убедитесь, что init-контейнеры подготовки баз данных завершились с кодом 0, а основные контейнеры не находятся в CrashLoopBackOff или ImagePullBackOff.
  6. Выполните контроль по подразделу 3.2.5 и сквозные примеры раздела 4.

Если --atomic вернул ошибку и удалил неуспешную редакцию, сначала сохраните события и журналы доступных подов, устраните причину, затем повторите установку. Не отключайте ожидание готовности, чтобы скрыть ошибку инициализации.

3.2.3. Порядок запуска составных частей

Kubernetes может запускать независимые Deployment параллельно, поэтому порядок обеспечивается init-контейнерами, проверками готовности и повторными подключениями, а контролируется по следующим группам:

  1. PostgreSQL, MinIO, Kafka и Redis доступны по сетевым именам, указанным в конфигурации.
  2. Init-контейнеры создают или проверяют базы models-registry, asset-storage и launch-storage; изменения схем завершаются до допуска прикладных запросов.
  3. Запускаются wf-models-registry, wf-asset-storage и wf-launch-storage; создаются или проверяются их S3-бакеты.
  4. Запускаются inf-flows-manager, конвертеры и контур sandbox. Их точные Kubernetes-имена и чарты фиксируются в приложении В для целевой поставки.
  5. Настраиваются маршруты общего API-шлюза и веб-интерфейса.
  6. Проверяются потребители Kafka и прохождение состояний модели и запуска через WebSocket-канал интерфейса.

Отсутствие готового вычислительного контура не препятствует открытию каталога, но делает невозможными автоматическую проверку версии и пользовательский проверочный запуск. Поэтому доступность страницы «Модели» не является достаточным признаком успешного запуска LPI-VAP-MM.

3.2.4. Остановка и перезапуск

Перед плановой остановкой прекратите приём новых загрузок и запусков, затем дождитесь завершения активных операций либо остановите их штатной функцией компонента. Принудительное завершение во время записи в S3 может оставить объекты, не связанные с завершённой записью метаданных.

Перезапуск прикладных сервисов выполняется средствами Kubernetes:

kubectl rollout restart deployment/wf-models-registry -n <пространство>
kubectl rollout restart deployment/wf-asset-storage -n <пространство>
kubectl rollout restart deployment/wf-launch-storage -n <пространство>
kubectl rollout status deployment/wf-models-registry -n <пространство>
kubectl rollout status deployment/wf-asset-storage -n <пространство>
kubectl rollout status deployment/wf-launch-storage -n <пространство>

Если изменена Helm-конфигурация, выполняйте helm upgrade, а не ручное редактирование Deployment. Запуск процесса внутри контейнера и удаление Helm-релиза не являются штатными способами перезапуска. Перед остановкой PostgreSQL, MinIO или Kafka останавливаются зависящие от них прикладные и вычислительные нагрузки.

3.2.5. Признаки успешного запуска

Установка считается технически успешной при одновременном выполнении следующих условий:

  • helm status показывает установленную редакцию без неуспешных hook и Job;
  • Deployment wf-models-registry, wf-asset-storage и wf-launch-storage имеют требуемое число доступных реплик;
  • init-контейнеры баз данных завершены, число перезапусков основных контейнеров не растёт;
  • внутренние Service имеют EndpointSlice с адресами готовых подов;
  • из подов открывается /api/docs/ каждого сервиса на порту 3000; эта проверка подтверждает доступность HTTP-процесса, но не заменяет функциональный пример;
  • сервисы подключились к PostgreSQL, MinIO и Kafka без повторяющихся ошибок авторизации, TLS или разрешения имён;
  • в интерфейсе через общий шлюз открываются разделы «Модели», «Ассеты» и «Запуски» в соответствии с полномочиями;
  • эталонная опубликованная версия модели проходит автоматическую проверку, а проверочный запуск на опубликованной версии ассета завершается с доступным результатом и журналом.

Основные команды контроля:

helm status <релиз> -n <пространство>
kubectl get deployment,pod,service,endpointslice -n <пространство>
kubectl get events -n <пространство> --sort-by=.lastTimestamp
kubectl logs deployment/wf-models-registry -n <пространство> --tail=200
kubectl logs deployment/wf-asset-storage -n <пространство> --tail=200
kubectl logs deployment/wf-launch-storage -n <пространство> --tail=200

Журналы перед передачей в службу сопровождения проверяются на наличие реквизитов доступа, подписанных URL и пользовательских данных. Полный вывод переменных окружения контейнера в диагностический пакет не включается.

3.3. Выбор функций

Структура настройки разделяет обязательный каталог моделей и профилируемые возможности: семейства конвертеров, контур проверочных данных и запусков, массовое обновление сценариев, поддерживаемые исходные форматы и профили исполнения.

Функция Когда включается Зависимости Проверка после изменения
Каталог моделей и версий Всегда wf-models-registry, PostgreSQL, MinIO, общий шлюз Создание карточки и черновой версии, чтение метаданных и файла
Автоматическая валидация и конвертация Для каждого поддерживаемого семейства моделей Kafka, inf-flows-manager, соответствующий конвертер, GPU Эталонная версия проходит состояния до tested
Ассеты Если выполняются проверки на фото- или видеоданных wf-asset-storage, PostgreSQL, MinIO Создание версии, загрузка файла и повторное чтение
Проверочные запуски Если требуется контрольный инференс и экспертная фиксация результата wf-launch-storage, sandbox, Redis/Celery, MinIO, GPU Эталонный запуск завершается, доступны кадры, журналы и результат
Массовое обновление сценариев Если LPI-VAP-RS поддерживает согласованный контракт замены Kafka, inf-flows-manager, LPI-VAP-RS Тестовый сценарий получает выбранную опубликованную версию, прочие ссылки не изменяются
Очистка объектного хранилища Только при утверждённой политике хранения и после испытания MinIO, метаданные всех трёх хранилищ, резервная копия Действующие и опубликованные версии остаются доступны после полного цикла очистки

Таблица 3.3.1 — Выбор функций LPI-VAP-MM.

Отключение функции выполняется только после проверки отсутствия активных задач и зависимых объектов. Сервис не исключается из релиза только потому, что его раздел временно скрыт в интерфейсе: сначала проверяется, не является ли он потребителем сообщений или владельцем фоновой операции другого сервиса.

3.4. Настройка режимов работы

3.4.1. Загрузка и обработка пакетов моделей

Фиксируются максимальный размер пакета, допустимые форматы, тайм-ауты загрузки, предел распакованного объёма и правила проверки обязательных файлов. Лимиты задаются согласованно на Ingress, API и рабочем томе: увеличение только одного из них не обеспечивает приём большего пакета. Проверка включает допустимый эталонный архив, повреждённый ZIP и архив с превышением лимита.

3.4.2. Конвертация и автоматическая проверка

Фиксируются доступные конвертеры, профили CUDA/TensorRT, число параллельных операций, лимиты CPU, памяти и GPU, время ожидания и повтор задачи. Тип модели должен однозначно направляться в совместимый конвертер. Параллелизм повышается только после контроля памяти GPU, времени очереди и влияния на рабочую видеоаналитику Центрального модуля.

3.4.3. Проверочные данные и запуски

Фиксируются ограничения медиафайлов, число параллельных запусков, параметры очереди Celery, сроки хранения кадров и журналов, правила остановки и повтора. Фото- и видеоассеты проверяются раздельно. Повтор отказавшей задачи не должен создаваться, пока не установлено, завершилась ли исходная задача и не остались ли у неё активные исполнители.

3.4.4. Публикация и интеграционный обмен

Фиксируются правила публикации, топики Kafka, группы потребителей, повторная доставка сообщений и контроль использования версии в сценариях и на камерах. Публикация считается завершённой не по факту отправки команды, а после готовности версии и подтверждения её доступности потребителю. Архивирование используемой версии должно отклоняться до штатного устранения зависимостей.

3.4.5. Журналирование и мониторинг

Фиксируются уровни журналирования, метрики готовности, длительности и ошибок задач, заполнения хранилищ и очередей, а также пороги оповещения. В журналы включаются идентификаторы модели, версии, ассета, запуска и фоновой задачи, достаточные для сквозной корреляции, но не содержимое Secret и подписанные S3-адреса. Повышенный уровень включается на ограниченный интервал.

3.5. Настройка доступа

Настройка подключения Платформы 4.0 к СУДИР относится к LPI-VAP-CORE. Для LPI-VAP-MM администратор проверяет получение доверенного пользовательского контекста через общий шлюз и соответствие полномочий операциям просмотра, загрузки, публикации, архивирования, удаления и запуска проверки. Прямое подключение MM к СУДИР и отдельный OIDC-клиент не настраиваются.

Проверка доступа Ожидаемый результат
Запрос без пользовательского контекста Отклонён общим шлюзом или сервисом с кодом 401
Пользователь без полномочия MM Раздел или действие недоступны; прямой запрос отклонён с кодом 403
Администратор MM Доступны разрешённые операции каталога, версий, ассетов, запусков и архивов
Попытка подменить идентификатор пользователя или область видимости Контекст не принимается вне доверенного маршрута общего шлюза
Техническое обращение между сервисами Используется отдельная сервисная идентичность с минимальными правами, пользовательский токен не подменяется сервисным

Таблица 3.5.1 — Контроль настройки доступа LPI-VAP-MM.

3.6. Защита конфигурации, секретов и сертификатов

Открытые параметры размещаются в конфигурации Helm и ConfigMap, секретные — в Kubernetes Secret либо подключённом средстве управления секретами. В целевой поставке определяются владельцы значений, минимальные права сервисных учётных записей, период ротации и пороги срока действия сертификатов.

Ротация выполняется в следующем порядке:

  1. определить всех потребителей изменяемого реквизита и возможность периода совместного действия старого и нового значения;
  2. создать новую версию Secret средствами принятого защищённого хранилища;
  3. применить изменение сначала к зависимой стороне, допускающей два значения, затем последовательно перезапустить потребителей;
  4. выполнить проверки соединения и контрольный пример раздела 4;
  5. отозвать прежнее значение после подтверждения работы всех потребителей;
  6. проверить журналы и диагностические пакеты на отсутствие раскрытого значения.

Экспорт Secret, полный вывод переменных окружения и сохранение отрендерированного Secret в открытом протоколе запрещены. Сертификаты MinIO, Kafka, Ingress и реестра образов проверяются до истечения срока, чтобы их замена не совпала с обновлением прикладных образов.

4. Проверка программы

4.1. Способы проверки работоспособности

Проверка строится по уровням: состояние Kubernetes; доступность хранилищ и очередей; готовность прикладных API; прохождение асинхронной задачи; сквозной пользовательский сценарий. Состояние Running само по себе не подтверждает работоспособность компонента.

Уровень Способ проверки Признак успешного результата
Helm-релиз helm status и helm history Редакция развёрнута, незавершённое обновление отсутствует
Kubernetes Поды, Deployment/StatefulSet/Job, probes, события, PVC и EndpointSlice Обязательные поды готовы, PVC имеют Bound, повторные перезапуски и критические события отсутствуют
PostgreSQL и MinIO Контроль соединения каждым wf-*, чтение и запись через штатный API Метаданные и объект сохраняются и повторно читаются без ручного обращения к БД или бакету
Kafka, Redis и Celery Доступность, группы потребителей, очередь и исполнители Отставание не растёт, исполнитель получает контрольную задачу
GPU-контур Размещение конвертера и sandbox, выделение nvidia.com/gpu, память и журнал задачи GPU выделен Kubernetes, эталонная конвертация и инференс завершаются без ошибок ресурса
Прикладные API Проверки готовности и обращения через общий шлюз Методы отвечают в соответствии с контрактом и полномочиями
Сквозной сценарий Контрольные примеры 4.2 Статусы проходят ожидаемую последовательность, результат доступен в UI и смежном компоненте

Таблица 4.1.1 — Уровни проверки работоспособности LPI-VAP-MM.

4.2. Контрольные примеры

Контрольный пример Ожидаемый результат
1 Открытие каталога под учётной записью с разрешением Каталог доступен, состав операций соответствует полномочиям
2 Загрузка эталонного пакета модели Создана версия, файлы доступны, автоматическая проверка запущена
3 Конвертация и контрольный инференс Сформирован профиль исполнения, версия получила успешное состояние
4 Создание версии проверочных данных Медиафайлы и метаданные сохранены и доступны для запуска
5 Проверочный запуск эталонной модели Задача завершена, доступны прогресс, кадры, события и журналы
6 Публикация версии Опубликованная версия доступна LPI-VAP-RS и исполняющему ядру
7 Попытка архивировать используемую версию Операция отклонена с указанием существующих зависимостей

Таблица 4.2.1 — Набор контрольных примеров.

4.3. Результаты проверки

Для каждого примера фиксируются дата, версия поставки, входные данные, ожидаемый и фактический результат, длительность, идентификаторы задач и заключение. Компонент считается готовым, если обязательные проверки завершены успешно, отсутствуют необъяснённые перезапуски и ошибки, а выявленные ограничения согласованы и внесены в протокол.

Результат проверки оформляется по приложению Д. К протоколу прилагаются ведомость образов и digest, идентификаторы эталонных объектов и задач, а также ссылки на очищенные от секретов журналы. Неприменимая проверка не пропускается без записи: указываются причина, решение ответственного лица и влияние на приёмку. После исправления ошибки повторяется отказавший пример и связанные с ним проверки, а не только отдельный запрос, на котором проявился отказ.

5. Дополнительные возможности

5.1. Резервное копирование и восстановление

5.1.1. Состав резервируемых данных

Резервная копия LPI-VAP-MM должна позволять восстановить каталог моделей, проверочные данные и результаты запусков в согласованное состояние. Имена баз и бакетов из таблицы 5.1.1 являются типовыми; перед настройкой задания они сверяются с отрендерированным Helm-манифестом целевой поставки.

Группа данных Состав Требование к копированию
Метаданные реестра моделей База PostgreSQL сервиса wf-models-registry: модели, версии, состояния, ссылки на пакеты и исполняемые представления Согласованная логическая или физическая копия штатными средствами PostgreSQL либо утверждённого оператора резервного копирования
Метаданные проверочных данных База PostgreSQL сервиса wf-asset-storage: ассеты, версии, папки, медиафайлы, зоны и атрибуты Копируется вместе с соответствующими объектами S3
Метаданные запусков База PostgreSQL сервиса wf-launch-storage: задания, состояния, прогресс, кадры, события и ссылки на журналы Копируется вместе с соответствующими объектами S3; для активных запусков фиксируется правило согласования
Объектные данные Бакеты models-registry, asset-storage и launch-storage: пакеты и файлы моделей, изображения, видеозаписи, кадры, результаты и журналы Репликация или копирование штатными S3-совместимыми средствами из согласованной точки времени
Конфигурация развёртывания Версия родительского и дочерних Helm-чартов, открытые значения, манифесты политик, перечень образов и digest Сохраняется при каждом принятом изменении; комплект должен позволять повторить helm template
Конфиденциальная конфигурация Secret, ключи шифрования, сертификаты и реквизиты инфраструктурных сервисов Сохраняется защищённым средством заказчика отдельно от открытой конфигурации
Регламентные сведения Версия релиза, время согласованной точки, контрольные суммы, место и срок хранения копии Включаются в журнал резервного копирования без секретных значений

Таблица 5.1.1 — Состав резервной копии LPI-VAP-MM.

Kafka и Redis обеспечивают доставку сообщений и выполнение асинхронных задач, но не заменяют основные хранилища данных. Необходимость резервирования их состояния определяется общеплатформенным регламентом. Если ожидающие сообщения и задачи не резервируются, перед копированием прекращают создание новых операций, дожидаются завершения активных либо фиксируют их идентификаторы для последующей сверки.

Не требуется включать в резервную копию контейнерные образы, локальный кэш, временные каталоги конвертеров и загруженные в поды рабочие файлы, если они воспроизводятся из доверенного реестра и сохранённых объектов S3. Наличие образов требуемых digest в реестре проверяется отдельно.

5.1.2. Подготовка и выполнение копирования

Периодичность, глубина хранения, RPO и RTO устанавливаются для целевой поставки в приложении В и регламенте заказчика. Копии размещаются вне узлов кластера и вне тех же отказоустойчивых доменов, где находятся рабочие данные.

Перед копированием администратор выполняет следующие действия:

  1. Проверяет успешность предыдущего задания, доступность целевого хранилища и запас места.
  2. Фиксирует время начала, имя и редакцию Helm-релиза, версии образов и число активных конвертаций и запусков.
  3. Прекращает приём новых загрузок, конвертаций и проверочных запусков на время, необходимое для формирования согласованной точки, либо применяет поддерживаемый механизм snapshot без остановки записи.
  4. Формирует копии трёх баз PostgreSQL и соответствующих бакетов S3. Выбранный способ должен исключать появление в восстановленном каталоге ссылок на отсутствующие объекты.
  5. Сохраняет конфигурацию Helm и защищённую копию секретов, соответствующие той же редакции приложения.
  6. Проверяет завершение заданий, объём, контрольные суммы и возможность чтения каталога копии; затем возобновляет операции компонента.
  7. Регистрирует результат, срок хранения, ответственного и выявленные отклонения в эксплуатационном журнале.

Копирование только PVC без предусмотренного приложением механизма quiesce или snapshot не считается согласованной резервной копией. Аналогично, отдельная копия PostgreSQL без бакетов S3 не обеспечивает восстановление загруженных пакетов моделей и проверочных материалов.

5.1.3. Восстановление

Восстановление сначала проверяется на изолированном контуре. Подключать его к рабочим топикам Kafka и внешнему API-шлюзу запрещается, чтобы тест не изменил рабочие состояния и не инициировал повторную обработку сообщений.

  1. Выберите одну согласованную точку восстановления и проверьте наличие всех частей копии и поддерживаемой версии образов.
  2. Ограничьте входной трафик к LPI-VAP-MM. Зафиксируйте исходное число реплик, затем остановите прикладные сервисы и исполнителей, способных записывать в восстанавливаемые хранилища.
  3. Восстановите базы models-registry, asset-storage и launch-storage, а затем бакеты S3 из той же согласованной точки.
  4. Восстановите конфигурацию и секреты, примените соответствующий Helm-релиз и дождитесь завершения инициализации баз и готовности рабочих нагрузок.
  5. Сверьте незавершённые на момент копии конвертации и запуски. Зависшие операции не переводятся в успешное состояние вручную; их останавливают или повторяют штатной операцией после анализа журналов.
  6. Выполните проверки таблицы 5.1.2 и контрольные примеры раздела 4. Входной трафик возвращается только после положительного результата.
Объект Проверка Критерий успешного результата
Helm и Kubernetes helm status, готовность Deployment, события и перезапуски Принятая редакция развёрнута; обязательные поды готовы; повторяющихся ошибок нет
PostgreSQL Наличие схем, записей каталога и связей между моделями, ассетами и запусками Структура соответствует версии сервисов; контрольные запросы выполняются
MinIO / S3 Выборочное чтение пакета модели, файла ассета, кадра и журнала запуска Объекты доступны, ссылки из метаданных разрешаются
Модели Открытие версии и получение её файлов Метаданные, состояния и файлы одной версии согласованы
Проверочные данные Открытие версии ассета и нескольких медиафайлов Структура папок, атрибуты, зоны и файлы доступны
Запуски Открытие завершённого запуска до точки копирования Доступны итоговое состояние, прогресс, кадры, события и журнал
Асинхронный обмен Состояние групп Kafka и новый контрольный запуск Отставание не растёт; состояния нового запуска проходят полный цикл

Таблица 5.1.2 — Проверки после восстановления.

Контрольное восстановление проводится периодически с частотой, установленной регламентом, и после изменения способа копирования. Успешное завершение задания копирования без контрольного восстановления не подтверждает пригодность копии.

5.1.4. Автоматизация и ротация копий

Автоматическое копирование выполняется Kubernetes CronJob, оператором СУБД или внешней системой резервного копирования. Реализация должна обеспечивать:

  • запрет параллельного запуска двух копирований одного набора данных;
  • ограничение длительности и контролируемый повтор после временного отказа;
  • шифрование копий при передаче и хранении;
  • оповещение об ошибке, отсутствии свежей копии и недостатке места;
  • ротацию по утверждённому сроку без удаления последней успешной копии;
  • журналирование без паролей, ключей, токенов и подписанных S3-адресов.

Перед включением автоматической ротации маска удаления проверяется на тестовом наборе. Она должна быть ограничена каталогом или бакетом резервных копий и не может совпадать с префиксами рабочих данных LPI-VAP-MM.

5.2. Обновление версий и откат

До изменения релиза оформляется план обновления.

Сведение Что фиксируется
Исходная и целевая версии Редакции Helm-релиза и чартов, версии и digest образов
Изменения данных Миграции трёх баз PostgreSQL, преобразования объектов S3 и обратимость операций
Совместимость Версии Kubernetes, PostgreSQL, S3 API, Kafka, Redis, CUDA/TensorRT и межкомпонентных контрактов
Влияние Ожидаемый перерыв, временный запас CPU, памяти, GPU и места, ограничения загрузок и запусков
Критерии успеха Готовность рабочих нагрузок и обязательные проверки раздела 4
Условие отката Ошибка миграции, неготовность подов, нарушение сквозной функции или превышение окна работ
Ответственные Исполнитель, лицо, принимающее решение об откате, и канал уведомления

Таблица 5.2.1 — План обновления LPI-VAP-MM.

Порядок обновления:

  1. Сопоставьте формуляр исходной и целевой поставок. Проверьте изменение схем, параметров и контрактов с LPI-VAP-CORE, LPI-VAP-RS и вычислительным контуром.
  2. Проверьте helm history, состояние подов, PVC, хранилищ и очередей. До начала работ устраните исходные ошибки и нехватку ресурсов.
  3. Дождитесь завершения активных загрузок, конвертаций и запусков либо остановите их штатным способом. Выполните резервное копирование по 5.1.
  4. Подготовьте новый чарт и значения. Выполните helm lint и helm template, сравните Deployment, Service, Secret, задания и параметры миграций с текущей редакцией. Отрендерированный Secret не сохраняйте в открытом протоколе.
  5. Выполните helm upgrade с ключами --atomic --wait и установленным для поставки тайм-аутом. Не запускайте миграции базы вручную параллельно с init-контейнерами чарта.
  6. Проверьте helm status, состояние миграций, доступность трёх сервисов wf-*, отставание групп Kafka и журналы конвертеров.
  7. Выполните контрольные примеры раздела 4 и зарегистрируйте принятую редакцию.

Способ отката зависит от изменения данных:

flowchart TD START["Применена новая редакция"] --> MIG{"Миграции и преобразования
завершились успешно?"} MIG -- "Нет" --> RESTORE["Остановить сервисы;
восстановить БД, S3 и конфигурацию
из согласованной копии"] MIG -- "Да" --> CHECK{"Проверки раздела 4
успешны?"} CHECK -- "Да" --> ACCEPT["Зафиксировать приёмку
новой редакции"] CHECK -- "Нет" --> REV{"Новая схема данных
совместима с прежней версией?"} REV -- "Да" --> HELM["Выполнить helm rollback
и повторить проверки"] REV -- "Нет" --> RESTORE

Схема 5.1 — Выбор способа отката обновления.

helm rollback возвращает Kubernetes-ресурсы предыдущей редакции, но не отменяет уже выполненные необратимые изменения PostgreSQL и S3. В таком случае восстанавливается весь согласованный набор данных по 5.1. Предыдущие чарты и образы не удаляются до подтверждения новой версии и окончания установленного периода наблюдения.

5.3. Управление ёмкостью и очистка данных

Область Что контролируется Управляющие параметры или действие
Бакет моделей Общий объём пакетов, исполняемых представлений и временных архивов MINIO_MAX_BUCKET_SIZE_GB, MINIO_FILE_TTL_SEC, MINIO_CLEANUP_INTERVAL_SEC, штатное архивирование и удаление версий
Бакет ассетов Объём исходных медиафайлов и превью, число общих файлов у нескольких версий Те же параметры очистки, MINIO_GARBAGE_SCAN_DAYS, удаление только объектов без ссылок из действующих версий
Бакет запусков Кадры, события, результаты и журналы завершённых проверок Срок хранения результатов, предельный размер и период очистки
PostgreSQL Размер трёх баз, число версий, запусков и удалённых записей Штатные операции приложения и обслуживание PostgreSQL по общеплатформенному регламенту
Kafka и Redis Отставание потребителей, число ожидающих задач и объём сообщений Параллелизм исполнителей, сроки хранения Kafka и параметры очереди, согласованные с инфраструктурой
Рабочие каталоги Временные архивы, результаты распаковки, файлы конвертации и кэш Лимит ephemeral storage, срок жизни временных данных и регламент очистки после задачи
Журналы Скорость роста и глубина хранения Уровень журналирования, ротация и срок хранения централизованного журнала

Таблица 5.3.1 — Объекты контроля ёмкости LPI-VAP-MM.

Встроенная очистка S3 управляется параметром ENABLE_CLEARING_MINIO и в типовой конфигурации сервисов отключена. До её включения администратор обязан:

  1. Утвердить сроки хранения моделей, ассетов и результатов запусков.
  2. Проверить резервную копию и возможность восстановления.
  3. Проверить фактические имена бакетов, TTL, предельный объём и период запуска.
  4. На тестовом контуре подтвердить, что сохраняются объекты действующих и опубликованных версий, общие файлы ассетов и требуемые результаты запусков.
  5. Включить функцию через Helm и проконтролировать первый цикл по журналам, объёму до и после очистки и доступности записей в интерфейсе.

Очистка по превышению предельного размера может удалить старые объекты раньше TTL. Поэтому MINIO_MAX_BUCKET_SIZE_GB задаётся по расчётному объёму и политике хранения, а не оставляется равным демонстрационному значению чарта.

При достижении порога заполнения сначала определяется источник роста и проверяется работа штатной очистки. Затем, в зависимости от причины, увеличивается том или квота S3, корректируется срок хранения либо временно ограничиваются новые загрузки и запуски. Расширение PVC выполняется только для StorageClass, допускающего увеличение; существующий PVC не уменьшается.

Удалять строки непосредственно из PostgreSQL или объекты непосредственно из рабочего бакета MinIO запрещается: это нарушает ссылочную целостность. Модель или ассет удаляются штатной операцией после проверки использования в сценариях, на камерах, в запусках и других версиях. Параметры очистки не изменяются только ради освобождения места без оценки последствий для пользователей.

5.4. Диагностические средства и журналы

Средство Что показывает Когда применяется
Helm и Kubernetes Редакцию релиза, готовность Deployment, состояние подов, init-контейнеров, PVC, EndpointSlice и события Ошибка развёртывания, миграции, планирования, загрузки образа или сетевого доступа
Централизованные журналы Последовательность операций по времени, сервису и уровню Основной поиск причины ошибки загрузки, конвертации, публикации или запуска
kubectl logs Текущий и предыдущий журнал конкретного контейнера Сервис недоступен в централизованном журнале либо перезапустился
Метрики PostgreSQL и MinIO Подключения, ошибки, длительность запросов, объём баз и бакетов Медленное открытие каталога, ошибка чтения файла, недостаток места
Метрики Kafka Доступность брокера и отставание групп потребителей Состояние версии или запуска не меняется, WebSocket не получает обновление
Метрики Redis и исполнителей Очередь задач, активные и отказавшие исполнители Проверочный запуск ожидает выполнения или завис на обработке
Метрики GPU Доступность nvidia.com/gpu, занятость и память ускорителя Конвертация или контрольный инференс не запускается либо завершается по нехватке памяти
Пользовательский интерфейс Идентификаторы модели, версии, ассета и запуска, состояние и прикладное сообщение Определение затронутого объекта и сопоставление с журналами

Таблица 5.4.1 — Диагностические средства LPI-VAP-MM.

Рекомендуемый порядок диагностики:

  1. Зафиксировать время, операцию, идентификаторы сущностей и отображаемое состояние. Не повторять массово операцию до определения, была ли она фактически принята.
  2. Определить границу отказа: API и хранилище метаданных, S3, брокер, менеджер потоков, конвертер либо исполнитель sandbox.
  3. Проверить Helm-релиз, готовность подов, число перезапусков, init-контейнеры, EndpointSlice, PVC и события пространства имён.
  4. Найти записи за интервал инцидента по идентификатору модели, версии, ассета или запуска и сопоставить время между связанными сервисами.
  5. Проверить доступность PostgreSQL, MinIO, Kafka и Redis и наличие ресурса GPU, не выводя реквизиты подключения.
  6. После устранения причины повторить затронутый контрольный пример раздела 4 и проверить связанные функции.

Минимальный безопасный набор команд:

helm status <релиз> -n <пространство>
helm history <релиз> -n <пространство>
kubectl get deploy,pod,svc,endpointslice,pvc -n <пространство> -o wide
kubectl get events -n <пространство> --sort-by=.lastTimestamp
kubectl logs <под> -n <пространство> -c <контейнер> --since=30m
kubectl logs <под> -n <пространство> -c <контейнер> --previous --tail=200

Повышенный уровень журналирования включается только на время диагностики: он увеличивает объём данных и может вывести в журнал дополнительные сведения о запросах. После проверки возвращается штатный уровень.

Диагностический пакет содержит описание и время инцидента, версии релиза и образов, отфильтрованные состояния ресурсов, события, относящиеся к отказу журналы и идентификаторы затронутых сущностей. Из него удаляются значения Secret, строки подключения, токены, подписанные S3-адреса и пользовательские медиафайлы, не требуемые для разбора. Полные выгрузки kubectl cluster-info dump, переменных окружения и ресурсов Secret не прикладываются.

5.5. Масштабирование вычислительного контура

Масштабируются две разные группы нагрузок:

  • прикладные API wf-models-registry, wf-asset-storage и wf-launch-storage — по числу запросов, длительности ответа и соединениям с PostgreSQL;
  • конвертеры и исполнители проверочных запусков — по длине очереди, времени ожидания, числу задач и доступным GPU.

Простое увеличение реплик API не ускоряет GPU-задачи. Аналогично, добавление исполнителей не устраняет ограничение пропускной способности PostgreSQL, MinIO, Kafka или сети.

Перед горизонтальным масштабированием администратор проверяет:

  1. допускает ли сервис несколько реплик и не выполняет ли каждая реплика одну и ту же периодическую очистку или миграцию;
  2. поддерживают ли общий каталог и блокировки безопасное параллельное выполнение конвертаций;
  3. имеются ли свободные GPU, видеопамять, CPU, RAM и ephemeral storage;
  4. соответствуют ли nodeSelector, affinity, tolerations и запрос nvidia.com/gpu целевым вычислительным узлам;
  5. выдерживают ли PostgreSQL, MinIO, Kafka и Redis возросшее число подключений и поток данных;
  6. не вытеснит ли проверочная нагрузка рабочую видеоаналитику LPI-VAP-CORE.

Изменение выполняется через файл значений Helm с последующим helm upgrade. Ручное масштабирование kubectl scale допустимо только как временная мера при инциденте: желаемое число реплик затем переносится в Helm-конфигурацию, иначе следующее обновление его отменит.

После масштабирования проверяются размещение подов, число доступных реплик, ошибки конкуренции, отставание групп Kafka, длина очереди, использование GPU, скорость чтения S3 и время выполнения эталонной конвертации и запуска. Изменение принимается, если очередь сокращается, ошибки не растут, а рабочая видеоаналитика не ухудшилась.

При выводе вычислительной ноды новые задачи на неё не направляются; активным задачам дают завершиться либо штатно останавливают их. Затем ноду переводят в состояние cordon, выполняют drain с учётом локальных данных и PodDisruptionBudget и проверяют повторное размещение исполнителей. Перед удалением ноды подтверждается достаточность ресурсов оставшегося контура.

6. Сообщения системному программисту

Сообщения LPI-VAP-MM выводятся в веб-интерфейсе, ответах прикладных интерфейсов, событиях Kubernetes и журналах составных частей. В таблицах ниже приведены устойчивые признаки сообщений, их смысл и безопасный порядок действий. Точная формулировка может различаться между версиями образов, поэтому при диагностике вместе с сообщением фиксируются время, имя составной части, версия образа и идентификаторы модели, версии, ассета, запуска или фоновой задачи. Пользовательские сообщения и действия с объектами приведены в руководстве пользователя.

6.1. Сообщения при настройке

Сообщение или признак Вероятная причина Действия администратора
helm lint или helm template сообщает об отсутствующем либо недопустимом значении Не заполнен обязательный параметр или значение не соответствует схеме чарта Исправить файл значений по разделу 3 и приложению А; повторить обе проверки до обращения к кластеру
Под находится в состоянии Pending Недостаточно CPU, памяти, GPU или ephemeral storage; не выполнены правила размещения; PVC не связан Просмотреть kubectl describe pod и события; проверить requests/limits, метки нод, affinity, tolerations и PVC
ErrImagePull или ImagePullBackOff Образ или тег отсутствует, нет доступа к реестру либо неверен imagePullSecret Сверить образ и digest с формуляром, проверить Secret и его привязку к ServiceAccount; не заменять тег несогласованной версией
PersistentVolumeClaim находится в состоянии Pending Нет подходящего StorageClass, ёмкости или режима доступа Проверить запрос PVC, события контроллера хранения и доступную ёмкость; запуск хранилищ продолжать только после состояния Bound
CrashLoopBackOff сразу после установки Ошибка конфигурации, миграции, подключения к зависимости или несовместимость образов Просмотреть события, текущий и предыдущий журналы контейнера; проверить ConfigMap, Secret, версии образов и состояние зависимостей
wf-models-registry, wf-asset-storage или wf-launch-storage не подключается к PostgreSQL База или учётная запись не создана, неверен адрес, закрыт сетевой доступ либо не завершена инициализация Проверить готовность PostgreSQL, наличие базы и сетевую политику; реквизиты сверять без вывода их значений в протокол
Ошибка создания бакета, чтения или записи объекта в MinIO Неверен адрес или имя бакета, недостаточно прав, не доверен сертификат либо исчерпана квота Проверить доступность S3, бакеты, политику сервисной учётной записи, цепочку доверия и свободную ёмкость
Составная часть не подключается к Kafka Брокер или DNS недоступен, неверны адреса либо параметры защищённого соединения Проверить поды и Service Kafka, разрешение имени, сетевой доступ и параметры клиента; затем проконтролировать отставание групп
Исполнитель проверочных запусков не подключается к Redis или брокеру очереди Неверны адреса, Secret либо сетевые правила; очередь ещё не готова Проверить готовность Redis и sandbox, EndpointSlice и журналы nr-sbx-backend и nr-sbx-celery
Конвертер или исполнитель не получает GPU Нода не публикует nvidia.com/gpu, ресурс не запрошен, не выполнено правило размещения либо несовместимы драйвер и среда исполнения Проверить kubectl describe node, запросы ресурсов пода, device plugin, драйвер и согласованные версии CUDA/TensorRT
Ошибка применения схемы данных при старте сервиса Версия сервиса несовместима с состоянием БД либо миграция была прервана Остановить обновление; определить завершившиеся миграции и выполнить откат по 5.2, при необратимом изменении восстановить согласованную копию
Разделы MM отсутствуют или операции недоступны после входа Через общий шлюз не передано требуемое полномочие либо маршрут компонента отключён Проверить ролевую настройку и маршруты LPI-VAP-CORE. Отдельный OIDC-клиент и прямое подключение MM к СУДИР не настраивать

Таблица 6.1.1 — Сообщения и признаки ошибок при настройке.

6.2. Сообщения при проверке

Сообщение или признак Вероятная причина Действия администратора
Проверка готовности сервиса неуспешна или под перезапускается Недоступна зависимость, не завершена миграция либо неверна конфигурация probe Проверить события, EndpointSlice и журналы контейнера; устранить первичную ошибку зависимости, затем повторить проверку 4.1
Ответ API 400 Поле запроса имеет неверный тип, формат или недопустимое значение Сопоставить поле с контрактом API; исправить запрос, не изменяя серверные данные вручную
Ответ API 401 или 403 Пользовательский контекст отсутствует, истёк либо не содержит требуемого полномочия Повторить вход через LPI-VAP-CORE и проверить роль. При массовом отказе проверить общий шлюз и средство доступа CORE, а не настраивать СУДИР в MM
Ответ API 404 Объект, версия или маршрут отсутствует, удалён, архивирован либо недоступен в текущей области видимости Проверить идентификатор, архив и маршрут шлюза; обновить данные интерфейса перед повтором
Ответ API 409 Конфликт уникальности или состояния: номер версии уже существует, объект изменён параллельно либо операция несовместима с текущим статусом Обновить карточку, проверить фактическое состояние и повторить только допустимую операцию с уникальным номером версии
«Архив не прошёл базовую проверку» (invalid_archive) ZIP повреждён, имеет неверную структуру или не содержит обязательных файлов Проверить контрольную сумму и состав пакета; исправить дистрибутив модели и загрузить новую редакцию
«Ошибка во время распаковки архива» (unpack_error) Недостаточно места, отказ S3 или рабочего тома, повреждение архива либо ошибка распаковщика Проверить S3, PVC, ephemeral storage и журнал models-registry; повторять загрузку после устранения причины
«Валидация завершилась с ошибкой» (failed_validation) Метаданные или файлы несовместимы с типом модели, профилем конвертации или принятой версией средства исполнения Сопоставить ошибку с пакетом и конвертером; при корректном пакете проверить версию образа и конфигурацию профиля
«Тестирование в инференсе завершилось с ошибкой» (failed_testing) Исполняемое представление не загрузилось, не хватило GPU-памяти либо контрольный инференс завершился отказом Проверить журналы менеджера потоков, конвертера и исполнителя, ресурс GPU и сформированный артефакт; после исправления создать новую версию
Черновая версия отсутствует в форме создания запуска Версия не прошла полный цикл «Сохранить и валидировать» или находится в архиве Это штатное ограничение: запуск допускает только готовую к использованию версию. Проверить статус в карточке модели
Медиафайл ассета не принимается Тип или размер файла не поддерживается, повторяется имя либо недостаточно места в S3 Проверить ограничения поставки, тип ассета, имя и объём файла, затем доступность бакета ассетов
Запуск длительно остаётся созданным или с нулевым прогрессом Задача не получена исполнителем, недоступна очередь, Redis, S3 или нет свободного GPU Проверить launch-storage, sandbox, очередь Celery, Redis, S3 и размещение исполнителей; не создавать дубли до проверки исходной задачи
Запуск завершён с «Ошибкой обработки» Отказ произошёл при чтении ассета, подготовке модели или обработке кадра Найти первое существенное сообщение по идентификатору запуска, устранить причину и только затем выполнить повторный запуск
Опубликованная версия не появилась в сценариях Сообщение не доставлено через Kafka, отстаёт потребитель LPI-VAP-RS либо версия фактически не готова Проверить статус версии, публикацию, топик и отставание группы потребителя RS; прямое изменение ссылки в БД не выполнять
Архивирование или удаление отклонено Версия используется сценарием, камерой, запуском либо общей ссылкой на файл Получить перечень зависимостей, штатно заменить или завершить использование и повторить операцию после обновления карточки

Таблица 6.2.1 — Сообщения и признаки ошибок при проверке программы.

6.3. Сообщения при выполнении программы

Сообщение или признак Причина Влияние Действия администратора
Состояние версии длительно не изменяется на этапе распаковки, валидации или тестирования Потеряно сообщение, остановлен менеджер потоков или конвертер, недоступна зависимость Версия недоступна для запусков и сценариев Найти задачу по идентификаторам модели и версии; проверить Kafka, inf-flows-manager, конвертер и S3; повторять операцию только после определения судьбы исходной задачи
Отставание группы потребителя Kafka устойчиво растёт Сервис остановлен, недостаточно реплик или производительности, всплеск публикаций Задерживаются статусы, публикация и межкомпонентное обновление Определить отстающую группу и сервис; устранить отказ либо масштабировать допустимую нагрузку по 5.5
Очередь Celery растёт, активных исполнителей нет nr-sbx-celery не готов, потеряна связь с Redis или не выделен GPU Новые проверочные запуски ожидают выполнения Проверить исполнителей, очередь, Redis, события планирования и GPU; после восстановления убедиться, что ранее принятые задачи продолжили обработку
Конвертер завершён по тайм-ауту Пакет слишком велик, недостаточно CPU/GPU/памяти, завис внешний процесс или неверен предел времени Версия получает ошибку валидации либо тестирования Сопоставить длительность с эталоном, проверить ресурсы и журнал конвертера; менять тайм-аут только после подтверждения штатной длительной обработки
В журнале присутствует признак нехватки памяти GPU На ускорителе конкурируют задачи, профиль модели превышает доступную память или неверно задан параллелизм Конвертация либо запуск завершается ошибкой; рабочая видеоаналитика может деградировать Проверить занятость GPU и размещение; снизить параллелизм или перенести нагрузку, не вытесняя LPI-VAP-CORE
Ошибка чтения или записи объекта S3 MinIO недоступен, истёк сертификат, изменены права или заполнено хранилище Нельзя загрузить модель/ассет либо сохранить результат запуска Восстановить доступность и ёмкость S3, проверить права и сертификат; затем повторить контроль чтения и записи
Исчерпан PVC или ephemeral storage Не работает очистка, вырос объём пакетов, результатов или временных файлов Возможны ошибки загрузки, распаковки и перезапуски подов Выполнить диагностику и штатную очистку по 5.3; при необходимости расширить поддерживающий это PVC
PostgreSQL отклоняет соединения или запросы выполняются с тайм-аутом База недоступна, исчерпан пул подключений, блокировка или недостаточно ресурсов Каталоги и карточки не открываются, операции не фиксируются Проверить состояние БД, подключения, блокировки и ресурсы; не удалять и не исправлять прикладные строки вручную
Шлюз возвращает 502 или 503 для маршрутов MM Сервис не готов, EndpointSlice пуст, нарушено разрешение имени или шлюз использует неактуальную конечную точку Веб-интерфейс компонента временно недоступен Проверить поды, Service, EndpointSlice и DNS, затем конфигурацию общего шлюза; после восстановления повторить прикладной запрос
Интерфейс продолжает показывать старое состояние Не получено WebSocket-сообщение, вкладка потеряла соединение либо задерживается потребитель Пользователь может повторить уже принятую операцию Сверить состояние через API и журнал, обновить страницу; не считать отображение единственным источником состояния
Проверочный запуск остановлен Пользователь остановил задачу, исполнитель завершён или превышен системный предел Частичные результаты не являются завершённой проверкой Определить инициатора и причину остановки; после устранения причины создать новый запуск и сохранить итог только после завершения
Срок хранения архива истекает либо объект удалён очисткой Достигнут настроенный срок или выполнено окончательное удаление Объект нельзя выбрать; после окончательного удаления восстановление через UI невозможно До истечения срока восстановить требуемый объект; для удалённого объекта использовать согласованную резервную копию по 5.1

Таблица 6.3.1 — Сообщения и признаки отказов при выполнении программы.

При обращении в службу сопровождения передаются время и часовой пояс, наименование составной части, версия релиза и образа, наблюдаемый признак, действия перед отказом, идентификаторы сущностей и задачи, а также отфильтрованные события Kubernetes и журналы за соответствующий интервал. Пароли, токены, содержимое Secret, строки подключения, подписанные S3-адреса и пользовательские медиафайлы без отдельного согласования не передаются.

6.4. Диагностические коды

Группа Значения или признаки Смысл и применение
Коды ответов API 200 — успешно; 400 — недопустимый запрос; 401 — отсутствует или истёк пользовательский контекст; 403 — нет полномочия; 404 — объект или маршрут не найден; 409 — конфликт состояния; 500 — внутренняя ошибка; 502/503 — целевой сервис недоступен через шлюз Определяют границу между ошибкой запроса, доступа, состояния данных, сервиса и маршрутизации
Состояния пода Pending; Running; Succeeded; Failed; CrashLoopBackOff; ImagePullBackOff Используются для определения стадии запуска и инфраструктурной причины отказа
Проверки контейнера startup, readiness и liveness: успешно или неуспешно Неуспешная readiness исключает под из обслуживания; liveness может вызвать перезапуск, startup защищает длительный начальный запуск
Состояния PVC Pending; Bound; Lost Показывают возможность использования постоянного тома; рабочее хранилище запускают только при Bound
Обработка версии модели created; invalid_archive; unpacking_archive; unpack_done; unpack_error; in_validation; failed_validation; in_testing; failed_testing; tested; failed Определяет этап от создания версии до готовности. Полное соответствие кратких и развёрнутых подписей приведено в подразделе 3.3.2 руководства пользователя
Обработка запуска created; running; completed; failed; stopped Определяет ожидание, выполнение, успешное завершение, отказ или остановку проверочного запуска
Итог экспертной проверки «Тест пройден»; «Тест пройден с ошибками»; «Тест не пройден» Фиксируется только после завершения запуска и не заменяет технический статус обработки
Состояние использования версии Число сценариев и камер; действие архивирования доступно или заблокировано Показывает наличие зависимостей, которые требуется устранить до архивирования или удаления
Состояние очереди Число ожидающих и активных задач, ошибки исполнителей, отставание группы Kafka Применяется, если асинхронное состояние не меняется при готовых API и хранилищах
Состояние GPU Ресурс nvidia.com/gpu на ноде и в запросе пода; занятость и объём памяти Используется при ошибках планирования, конвертации и контрольного инференса

Таблица 6.4.1 — Диагностические коды и признаки состояний LPI-VAP-MM.

При расхождении между интерфейсом и журналом сначала проверяются фактический ответ API и состояние фоновой задачи, затем доставка событий в интерфейс. Текст сообщения без версии образа и идентификатора операции не используется как единственное основание для определения причины.

Приложения

Приложение А (обязательное). Параметры настройки

Значения целевой поставки фиксируются в файле значений Helm, защищённом хранилище реквизитов и формуляре. Имена путей в values.yaml могут различаться между редакциями чарта; перед изменением используется схема и результат helm template принятой версии, а не имя из другой поставки.

Область Параметр Назначение и рекомендации Применение и проверка
Размещение Пространство имён и имя Helm-релиза Идентификация установленного экземпляра; изменяются только по процедуре миграции helm status, перечень ресурсов пространства имён
Размещение nodeSelector, affinity и tolerations Разделение API, хранилищ, конвертеров и sandbox по подходящим узлам Новая редакция Helm; проверить фактические ноды подов
Ресурсы Requests/limits CPU, RAM и ephemeral storage Защита API и фоновых задач от взаимного вытеснения Новая редакция Helm; проверить QoS, перезапуски и длительность эталонной задачи
GPU Запрос nvidia.com/gpu, класс и число ускорителей Предоставление GPU конвертерам и исполнителям проверок Новая редакция Helm; проверить выделение ресурса, память GPU и контрольный инференс
Образы Репозиторий, тег и digest каждого образа Воспроизводимое развёртывание согласованной версии Новая редакция Helm; сверить imageID запущенных контейнеров с ведомостью поставки
Реестр образов imagePullSecrets Доступ к закрытому реестру Kubernetes Secret; проверить контрольную загрузку образа, значение Secret не выводить
Постоянные данные StorageClass, размер и режим доступа PVC Хранение PostgreSQL, MinIO, Kafka, Redis и рабочих данных Изменение PVC — по процедуре хранилища; состояние должно быть Bound
PostgreSQL Адрес, порт, база и сервисная учётная запись каждого wf-* Раздельное хранение метаданных моделей, ассетов и запусков Открытые значения — ConfigMap/Helm, пароль — Secret; проверить соединение и миграции
MinIO/S3 Endpoint, TLS, бакеты моделей, ассетов и запусков, сервисные права Хранение пакетов, медиафайлов и результатов ConfigMap и Secret; проверить запись, чтение и удаление тестового объекта штатным API
Kafka Адреса брокеров, TLS, топики и группы потребителей Доставка статусов, публикаций и межкомпонентных команд Новая редакция Helm; проверить подключение и отсутствие устойчивого отставания
Redis и Celery Адрес очереди, число исполнителей, параллелизм и тайм-ауты Диспетчеризация проверочных запусков Новая редакция Helm; проверить регистрацию исполнителей и эталонный запуск
Загрузка модели Максимальный размер ZIP, предел распакованного объёма и тайм-аут Защита сервиса и хранилища от чрезмерного пакета Проверить допустимый и заведомо недопустимый пакет на тестовом контуре
Конвертация Разрешённые типы моделей, профили CUDA/TensorRT, число параллельных задач Получение совместимого исполняемого представления без исчерпания GPU Новая редакция Helm; выполнить эталонную конвертацию для каждого поддерживаемого семейства
Ассеты Допустимые типы и размеры медиафайлов, число файлов версии Ограничение объёма проверочных данных Проверить загрузку эталонной фото- и видеоверсии в пределах поставки
Запуски Число параллельных запусков, тайм-аут и срок хранения результатов Управление очередью и объёмом данных проверки Проверить очередь, остановку, завершение и доступность результата
Очистка S3 ENABLE_CLEARING_MINIO Включение встроенной очистки несвязанных и устаревших объектов По умолчанию не включать без испытания; после изменения контролировать первый цикл очистки
Очистка S3 MINIO_FILE_TTL_SEC, MINIO_MAX_BUCKET_SIZE_GB, MINIO_CLEANUP_INTERVAL_SEC, MINIO_GARBAGE_SCAN_DAYS TTL, предельный объём, период очистки и глубина поиска мусора Подбирать по политике хранения и ёмкости; проверить сохранность объектов действующих версий
Архивы Срок хранения моделей, версий моделей, ассетов и версий ассетов Определение времени до автоматического удаления архивных объектов Изменяется штатным интерфейсом уполномоченным администратором; проверить столбец «До окончания хранения»
Журналирование Уровень, формат, корреляционные поля и срок хранения Поиск операции между API, брокером, конвертером и исполнителем Штатный уровень — информационный; повышенный включать временно и затем возвращать
Мониторинг Пороги очередей, ошибок, заполнения S3/PVC, перезапусков и использования GPU Раннее выявление деградации Проверить срабатывание оповещения контролируемым способом и маршрут доставки

Таблица А.1 — Параметры настройки LPI-VAP-MM.

Группа значения Источник Ресурс Kubernetes Конфиденциальность Способ применения
Размещение, ресурсы и образы Файл значений Helm Deployment, StatefulSet, Job и шаблоны подов Нет helm upgrade с предварительными helm lint и helm template
Открытые адреса, имена бакетов, топиков и режимы Файл значений Helm ConfigMap и шаблон рабочей нагрузки Обычно нет Новая редакция Helm; при отсутствии checksum-аннотации — контролируемый перезапуск потребителя
Пароли, ключи, сертификаты и маркеры Защищённое хранилище Secret и монтирование/переменная потребителя Да Ротация с последовательной проверкой всех потребителей; значение не включать в протокол
Постоянные тома Схема хранения и файл значений PVC и StorageClass Нет Расширение и изменение класса — отдельная операция с резервной копией
Сроки архивов Веб-интерфейс MM и хранилище конфигурации сервиса Прикладная конфигурация models-registry и asset-storage Нет Штатная операция интерфейса с проверкой пересчитанного срока

Таблица А.2 — Карта применения параметров целевой поставки.

Приложение Б (рекомендуемое). Регламентные операции обслуживания

Операция Периодичность Содержание Подраздел
Контроль Helm и Kubernetes Ежедневно Состояние релиза, подов, init-контейнеров, probes, событий и числа перезапусков 4.1
Контроль фоновых задач Ежедневно Версии без изменения статуса, запуски с нулевым прогрессом, отказавшие и повторяющиеся задачи 5.4
Контроль Kafka и Celery Ежедневно Отставание групп, длина очереди, число активных и отказавших исполнителей 5.4
Контроль ёмкости Ежедневно Заполнение PostgreSQL, S3, PVC и временных каталогов, результат последнего цикла очистки 5.3
Контроль резервного копирования Ежедневно Успешность последнего задания, возраст, состав, объём и доступность копии 5.1.4
Контроль GPU Еженедельно и при росте очереди Доступность ускорителей, память, ошибки, размещение и конкуренция с рабочей видеоаналитикой 5.5
Проверка публикации Еженедельно Доставка опубликованной версии в LPI-VAP-RS и отсутствие устойчивого отставания потребителя 4.2
Контроль архивов Еженедельно Объекты с истекающим сроком, соответствие сроков регламенту и необходимость восстановления 5.3
Проверка ротации копий и журналов Ежемесячно Соблюдение глубины хранения и наличие последней успешной копии после ротации 5.1.4
Контрольное восстановление По регламенту заказчика Восстановление на отдельном контуре и проверка согласованности PostgreSQL, S3 и прикладных функций 5.1.3
Проверка после изменения По событию Контрольные примеры раздела 4 после изменения конфигурации, сертификатов, состава узлов или зависимостей 4
Обновление версии По событию Резервная копия, проверка шаблонов, обновление, миграции, контрольные примеры и фиксация результата 5.2
Формирование диагностического пакета При инциденте Сбор минимальных сведений по приложению Е с удалением секретов и лишних пользовательских данных 6.3

Таблица Б.1 — Регламентные операции обслуживания LPI-VAP-MM.

Приложение В (обязательное при подготовке целевой поставки). Уточняемые сведения

Группа Требуется установить
Kubernetes Версия, пространство имён, имя Helm-релиза, метки узлов, affinity, tolerations, запросы и пределы ресурсов
Дистрибутив Версия чарта, дочерние чарты, образы и digest, контрольные суммы
Хранение StorageClass, PVC, бакеты, размеры, сроки хранения, запас ёмкости и политика возврата томов
Вычисления Модели GPU, драйвер, CUDA/TensorRT, число параллельных конвертаций и запусков
Интеграции Имена сервисов, маршруты шлюза, топики и группы Kafka, контракты LPI-VAP-CORE и LPI-VAP-RS
Доступ Роли и полномочия MM, способ передачи пользовательского контекста от CORE
Резервное копирование Состав, периодичность, глубина, RPO, RTO и порядок контрольного восстановления
Сопровождение Пороги мониторинга, сроки хранения журналов и реквизиты службы поддержки

Таблица В.1 — Сведения, уточняемые для целевой поставки.

Приложение Г (справочное). Исходные тексты схем Mermaid

MM-AG-MER-001. Схема 2.1 — Основные связи LPI-VAP-MM

Расположение схемы: 2.2. Связи между составными частями.

flowchart TB
    CORE["LPI-VAP-CORE<br/>единый вход и пользовательский контекст"]
    UI["Веб-интерфейс и API-шлюз"]
    subgraph MM["LPI-VAP-MM"]
        MR["svr-models-registry"]
        AS["svr-asset-storage"]
        LS["svr-launch-storage"]
        FM["inf-flows-manager"]
        CONV["Конвертеры<br/>основного контура"]
        SB["nr-sbx-backend"]
        CEL["nr-sbx-celery"]
        SCONV["Конвертеры<br/>контура проверки"]
    end
    DB[("PostgreSQL")]
    S3[("MinIO")]
    K["Kafka Платформы 4.0"]
    KS["Kafka и Redis<br/>контура проверки"]
    RS["LPI-VAP-RS"]
    INF["Исполняющее ядро<br/>видеоаналитики"]
    CORE --> UI
    UI --> MR
    UI --> AS
    UI --> LS
    UI --> FM
    MR --> DB
    AS --> DB
    LS --> DB
    MR --> S3
    AS --> S3
    LS --> S3
    MR <--> K
    K --> FM
    FM --> CONV
    FM --> MR
    FM <--> RS
    LS --> SB
    SB <--> KS
    SB --> CEL
    CEL --> SCONV
    CEL --> S3
    K --> INF
    INF --> MR

MM-AG-MER-002. Схема 3.1 — Размещение основных рабочих нагрузок LPI-VAP-MM

Расположение схемы: 3.1. Настройка на состав технических средств.

flowchart LR
    GW["Общий API-шлюз<br/>Платформы 4.0"]

    subgraph K8S["Кластер Kubernetes"]
        subgraph APP["Узлы прикладного контура"]
            MR["wf-models-registry"]
            AS["wf-asset-storage"]
            LS["wf-launch-storage"]
        end
        subgraph GPU["Вычислительные узлы"]
            FM["inf-flows-manager"]
            CV["Конвертеры моделей"]
            SB["Исполнители проверочных запусков"]
            DEV["nvidia.com/gpu"]
            FM --> CV --> DEV
            SB --> DEV
        end
    end

    PG[("PostgreSQL")]
    S3[("MinIO / S3")]
    K[("Kafka")]
    R[("Redis контура проверок")]

    GW --> MR
    GW --> AS
    GW --> LS
    MR --> PG
    AS --> PG
    LS --> PG
    MR --> S3
    AS --> S3
    LS --> S3
    MR <--> K
    LS <--> K
    K <--> FM
    LS --> SB
    SB <--> R

MM-AG-MER-003. Схема 5.1 — Выбор способа отката обновления

Расположение схемы: 5.2. Обновление версий и откат.

flowchart TD
    START["Применена новая редакция"] --> MIG{"Миграции и преобразования<br/>завершились успешно?"}
    MIG -- "Нет" --> RESTORE["Остановить сервисы;<br/>восстановить БД, S3 и конфигурацию<br/>из согласованной копии"]
    MIG -- "Да" --> CHECK{"Проверки раздела 4<br/>успешны?"}
    CHECK -- "Да" --> ACCEPT["Зафиксировать приёмку<br/>новой редакции"]
    CHECK -- "Нет" --> REV{"Новая схема данных<br/>совместима с прежней версией?"}
    REV -- "Да" --> HELM["Выполнить helm rollback<br/>и повторить проверки"]
    REV -- "Нет" --> RESTORE

Приложение Д (рекомендуемое). Протокол установки и приёмочной проверки

Поле Значение
Дата и время
Контур, кластер и пространство имён
Helm-релиз и версия чарта
Перечень образов и digest Прилагается ведомость
Результат проверки инфраструктуры Успешно / неуспешно
Результат установки и миграций Успешно / неуспешно
Результат контрольных примеров Успешно / неуспешно; перечень исключений
Выявленные отклонения
Исполнитель Должность, фамилия и инициалы, подпись
Представитель заказчика Должность, фамилия и инициалы, подпись

Таблица Д.1 — Форма протокола установки и приёмочной проверки.

Приложение Е (рекомендуемое). Состав диагностического пакета

Материал Содержание Ограничение
Паспорт инцидента Время и часовой пояс, наблюдаемый признак, затронутая функция, действия перед отказом и ожидаемый результат Не включать пользовательские данные сверх необходимых для идентификации операции
Идентификаторы Модель, версия модели, ассет, версия ассета, запуск, фоновая задача и корреляционный идентификатор запроса Не включать токены, подписанные URL и реквизиты доступа
Сведения о релизе helm status, helm history, версия чарта, образы и digest затронутых составных частей Значения Helm Secret и полный отрендерированный Secret не прикладывать
Состояние Kubernetes Нода, Deployment/StatefulSet/Job, поды, PVC, EndpointSlice и события пространства имён за интервал инцидента Ограничить выборку затронутыми ресурсами; не выгружать весь кластер без необходимости
Журналы Текущий и, после перезапуска, предыдущий журнал wf-*, менеджера потоков, конвертера или sandbox Удалить пароли, строки подключения, токены, подписанные S3-адреса и содержимое пакетов
Хранилища и очереди Доступность PostgreSQL, MinIO, Kafka и Redis, заполнение, число подключений, отставание группы и длина очереди Передавать агрегированные показатели и имена объектов без секретных значений
Ресурсы CPU, RAM, ephemeral storage, PVC, сеть, GPU и видеопамять; число перезапусков и длительность задачи Указывать период и единицы измерения; не подменять временным снимком анализ всего интервала
Воспроизведение Минимальная последовательность действий, допустимый эталонный пакет или ассет, фактический результат Не прикладывать модель или пользовательские медиафайлы без согласования владельца данных
Принятые меры Изменения конфигурации, перезапуски, повторы и их результат Не выполнять разрушающие действия на рабочем контуре только ради воспроизведения

Таблица Е.1 — Состав диагностического пакета LPI-VAP-MM.

Лист регистрации изменений

Изм. Изменённых листов Заменённых листов Новых листов Аннулированных листов Всего листов в документе № документа Входящий № сопроводительного документа Подпись Дата
Рабочая редакция 0.4 Все листы Определяется при выпуске DOCX/PDF Требуется присвоить при выпуске Требуется подпись ответственного исполнителя 11.09.2026

Таблица — Лист регистрации изменений.

Рабочая редакция 0.4 дополняет руководство эксплуатационными процедурами, таблицами сообщений, диагностическими кодами, параметрами настройки, регламентными операциями и составом диагностического пакета LPI-VAP-MM. Она не является зарегистрированным изменением утверждённого оригинала. История подготовки рабочей редакции сохраняется в Git и не заменяет оформленный лист регистрации изменений.