AI-Ops Documentation

Русский English
  • Главная
  • Карта документации
0. С чего начать
  • Что это за продукт
  • Для кого он
  • Как устроена документация
  • Быстрые ссылки
  • Как начать разработку
  • Как найти нужный сервис
  • К кому идти по вопросам
1. Продукт
Обзор продукта
  • Миссия продукта
  • Ценность для бизнеса
  • Основные сценарии
  • Границы системы
Пользователи и персоны
  • Сегменты пользователей
  • Роли пользователей
  • Основные потребности
Пользовательские сценарии
  • Регистрация / логин
  • Основной пользовательский сценарий
  • Оплата / заказ / действие
  • Поддержка и сценарий восстановления
Функции продукта
Фича: Аутентификация
  • Цель
  • Пользовательская история
  • Бизнес-правила
  • Ограничения
  • Метрики успеха
  • Связанные сервисы
  • Связанные события / данные
  • Фича: Профиль
  • Фича: Организации
  • Фича: Топология
  • Фича: Вычислительные ресурсы
  • Фича: Кластеры
  • Фича: Каталог сервисов
Требования
  • Функциональные требования
  • Нефункциональные требования
  • Требования к производительности
  • Требования к безопасности
  • Конфиденциальность и соответствие
  • Доступность
Метрики
  • Ключевая метрика (North Star)
  • Продуктовые KPI
  • Метрики воронки
  • Метрики качества
  • Метрики экспериментов
2. Домены
Домен: Identity
  • Назначение
  • Основные концепции
  • Сущности
  • Бизнес-правила
  • Сервисы домена
  • Данные домена
  • Связанные фичи
  • Домен: Профиль пользователя
  • Домен: Поиск
  • Домен: Заказы / транзакции
  • Домен: Уведомления
  • Домен: Аналитика
  • Домен: Рекомендации
3. Архитектура
Обзор системы
  • Что входит в систему
  • Что не входит
  • Высокоуровневая диаграмма
C4 Model
  • Контекстная диаграмма
  • Диаграмма контейнеров
  • Диаграмма компонентов
  • Диаграмма развёртывания
Интеграционная архитектура
  • Внешние системы
  • Интеграции API
  • Webhooks
  • Сторонние провайдеры
Потоки данных
  • Онлайн-поток данных
  • Пакетный поток данных
  • Поток событий
  • Владение данными
Архитектура безопасности
  • Аутентификация
  • Авторизация
  • Управление секретами
  • Шифрование
  • Аудит и логирование
Надежность и масштабируемость
  • SLA / SLO
  • Планирование мощностей
  • Отказоустойчивость
  • Обратное давление и повторы
  • Восстановление после сбоев
Архитектурные принципы
  • Границы доменов
  • Принципы проектирования API
  • Принципы проектирования событий
  • Принципы контрактов данных
  • Диаграмма: auth микросервисы
Control plane
  • Архитектура компонентов (control plane)
  • Доменная модель v0
  • Протокол v0 (control plane)
  • Примеры (control plane)
Сервисы (control plane)
Сервис control plane
  • API
  • Модель данных
  • События
  • Модули
  • Операции
Сервис execution plane
  • API
  • Модель данных
  • События
  • Модули
  • Операции
Сервис resource catalog
  • API
  • Модель данных
  • События
  • Модули
  • Операции
4. Инженерия
Сервисы
Каталог сервисов
  • Все сервисы списком
  • Владельцы
  • Критичность
  • Уровень / домен / статус
  • Сервис аутентификации
  • Сервис аккаунтов
  • Облачный сервис
  • Сервис учётных данных
  • Herald
  • Сервис идентификации
  • API Gateway
  • Сервис токенов
Фронтенд
  • Обзор фронтенда
  • Структура приложения
  • Routing (фронтенд)
  • State management (фронтенд)
  • Design system (фронтенд)
  • UI components (фронтенд)
  • API контракты фронтенда
  • Обработка ошибок (фронтенд)
  • Performance (фронтенд)
  • Feature flags (фронтенд)
  • Тестирование фронтенда
Бэкенд
  • Обзор бэкенда
  • Паттерны сервисов
  • Рекомендации по API
  • Событийные паттерны
  • Паттерны доступа к БД
  • Кэширование
  • Асинхронные задачи и воркеры
  • Идемпотентность
  • Обработка ошибок
  • Тестирование бэкенда
Данные
  • Обзор данных
  • Системы-источники
  • Контракты данных
  • Каталог схем событий
  • Хранилище данных
  • Витрины данных
  • ETL / ELT-пайплайны
  • Качество данных
  • Происхождение данных
  • Политики хранения
  • Политики доступа
ML / DS
  • Обзор ML/DS
  • Сценарии (ML)
  • Каталог моделей
  • Feature store
  • Training pipelines
  • Inference pipelines
  • Offline evaluation
  • Online evaluation / A-B
  • Мониторинг (ML)
  • ML runbooks
QA / Качество
  • Стратегия качества
  • Пирамида тестов
  • Тестовые окружения
  • Тестовые данные
  • Ручное тестирование
  • Автоматизированное тестирование
  • Нагрузочное тестирование
  • Тестирование безопасности
  • Критерии приёмки релиза
  • Процесс разбора багов
5. Платформа
Инфраструктура
  • Ansible
  • WireGuard
  • Kubernetes
  • Longhorn
  • Ingress
  • PostgreSQL Cluster
  • Redis
  • Kafka
  • Vault
  • MinIO
  • Authentik
  • Monitoring
  • Logging
  • Tracing
  • Nexus
  • SonarQube
  • GlitchTip
  • GitLab Runner
  • Kubernetes Dashboard
  • OLM
  • Deploy
  • Internal DNS
  • Обзор (инфраструктура)
  • Config generator
  • Пример (инфраструктура)
  • Скрипты (инфраструктура)
Окружения
  • Локальное
  • Stage
  • Pre
  • Продакшен (prod)
  • Tech
  • Облако
  • Объектное хранилище
  • CI/CD
  • Секреты и сертификаты
Наблюдаемость
  • Логирование
  • Метрики
  • Трейсинг
  • Алертинг
  • Резервное копирование и восстановление
6. Разработка
  • Быстрый старт
  • Локальная настройка
  • Карта репозиториев
  • Стандарты кода
  • Git-процесс
  • Стратегия ветвления
  • Руководство по код-ревью
  • Критерии готовности
  • Процесс релиза
  • Флаги фич
  • FAQ разработчика
  • Миграция secure auth
7. Эксплуатация
  • Дежурство
  • Управление инцидентами
  • Уровни критичности
  • Политика эскалации
  • Постмортемы
  • Ранбуки
  • Управление изменениями
  • Непрерывность бизнеса
8. Аналитика
  • План трекинга событий
  • Определения KPI
  • Каталог дашбордов
  • Словарь метрик
  • Эксперименты
  • Стандарты отчётности
9. Управление
  • Решения (ADR)
  • Политика статуса контента
  • Changelog обновлений документации
Безопасность и соответствие
  • Модель угроз
  • Безопасная разработка
  • Управление доступом
  • Конфиденциальность
  • Реагирование на инциденты
Ответственность и владельцы
  • Команды
  • Зоны ответственности команд
  • Владельцы сервисов
  • Владельцы доменов
  • Контакты
Глоссарий
  • Бизнес-термины
  • Продуктовые термины
  • Технические термины
  • Сокращения

Index

Этот модуль поднимает MinIO Operator и HA S3-совместимый кластер s3-public в Kubernetes.

Текущая конфигурация

  • Operator namespace: tech-minio-operator
  • Tenants namespace: tech-minio-tenants
  • Storage: Longhorn (longhorn-minio StorageClass, 1 реплика)
  • Placement:
  • Operator — на master нодах
  • MinIO tenant (data-поды) — на любых нодах (masters + workers), с podAntiAffinity по kubernetes.io/hostname
  • Console: отключена (MinIO перестал публиковать образы консоли в публичный реестр)

Быстрый старт

  1. Подготовка нод
1
cd ../.. && make k8s-prepare-nodes
  1. Установка MinIO Operator
1
2
cd infra/k8s
make minio-install-operator
  1. Создание секрета с root-креденшалами для s3-public

Tenant использует существующий Secret с ключом config.env (формат v5.0.15+).

Вариант A: через Makefile (интерактивно)

1
make minio-create-secret

Вариант B: вручную через kubectl

1
2
3
kubectl -n tech-minio-tenants create secret generic s3-public-env-configuration \
  --from-literal=config.env='export MINIO_ROOT_USER=YOUR_USER
export MINIO_ROOT_PASSWORD=YOUR_PASSWORD'

Или через YAML манифест:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
apiVersion: v1
kind: Secret
metadata:
  name: s3-public-env-configuration
  namespace: tech-minio-tenants
type: Opaque
stringData:
  config.env: |-
    export MINIO_ROOT_USER=YOUR_USER
    export MINIO_ROOT_PASSWORD=YOUR_PASSWORD

Важно: - Secret должен быть в namespace tech-minio-tenants - Имя Secret должно совпадать с spec.configuration.name в Tenant (по умолчанию s3-public-env-configuration) - Секрет должен содержать ключ config.env с export statements для MINIO_ROOT_USER и MINIO_ROOT_PASSWORD

  1. Создание HA-кластера s3-public
1
make minio-create-tenant
  1. Проверка статуса
1
make minio-status
  1. Включение метрик Prometheus (рекомендуется)

После создания tenant примените ServiceMonitor для сбора метрик:

1
make minio-enable-metrics

Или вручную (из директории infra/k8s/):

1
kubectl apply -f monitoring/manifests/monitors/minio-servicemonitor.yaml

Метрики MinIO автоматически собираются через ServiceMonitor после применения.

ServiceMonitor находится в infra/k8s/monitoring/manifests/monitors/minio-servicemonitor.yaml и автоматически подхватывается Prometheus благодаря label prometheus: monitoring.

Метрики доступны по пути: - /minio/metrics/v3 - метрики v3 (используется в ServiceMonitor, рекомендуется для новых установок) - /minio/v2/metrics/cluster - метрики кластера (legacy, не используется)

Настройка аутентификации для метрик:

MinIO v3 метрики требуют bearer token для доступа. ServiceMonitor уже настроен на использование токена из Secret minio-prometheus-token.

  1. Сгенерируйте bearer token через mc:

Вариант A: Из консоли пода MinIO (если вы подключились к поду)

Если вы подключились к поду MinIO (например, kubectl exec -it s3-public-pool-0-0 -n tech-minio-tenants -- sh):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# В поде MinIO переменные окружения MINIO_ROOT_USER и MINIO_ROOT_PASSWORD уже доступны
# Проверьте их:
echo $MINIO_ROOT_USER
echo $MINIO_ROOT_PASSWORD

# Установите mc клиент (если еще не установлен)
# Для Linux:
wget -q https://dl.min.io/client/mc/release/linux-amd64/mc -O /tmp/mc
chmod +x /tmp/mc

# Настройте alias используя localhost (MinIO слушает на порту 9000 внутри пода)
/tmp/mc alias set s3-public http://localhost:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD

# Сгенерируйте токен для Prometheus
/tmp/mc admin prometheus generate s3-public --api-version v3

Команда выведет bearer token, который нужно скопировать.

Альтернатива: Если mc недоступен, можно использовать curl:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# В поде MinIO используйте curl для генерации токена через MinIO API
# Получите credentials из переменных окружения
ROOT_USER=$MINIO_ROOT_USER
ROOT_PASS=$MINIO_ROOT_PASSWORD

# Сгенерируйте токен через MinIO Admin API
curl -X POST \
  -u "${ROOT_USER}:${ROOT_PASS}" \
  "http://localhost:9000/minio/admin/v3/prometheus/generate" \
  -H "Content-Type: application/json" \
  -d '{"apiVersion":"v3"}'

Ответ будет содержать bearer token в формате JSON.

Вариант B: С локальной машины (если есть доступ к MinIO через ingress или port-forward)

Сначала настройте alias для MinIO:

1
2
# Получите endpoint MinIO (например, через port-forward или ingress)
mc alias set s3-public https://s3.internal.ai-ops.tech YOUR_ROOT_USER YOUR_ROOT_PASSWORD

Затем сгенерируйте токен:

1
mc admin prometheus generate s3-public --api-version v3

Команда выведет bearer token, который нужно скопировать.

  1. Создайте Secret с токеном:
1
2
# Из директории infra/k8s/
make minio-create-prometheus-token

Или вручную:

1
2
kubectl -n tech-monitoring create secret generic minio-prometheus-token \
  --from-literal=token='YOUR_BEARER_TOKEN'

Важно: Secret должен быть создан в namespace tech-monitoring с именем minio-prometheus-token и ключом token.

Проверка метрик:

1
2
3
4
5
6
# Проверить, что ServiceMonitor создан
kubectl -n tech-monitoring get servicemonitor minio-s3-public

# Проверить targets в Prometheus
kubectl -n tech-monitoring port-forward svc/kube-prometheus-stack-prometheus 9090:9090
# Откройте http://localhost:9090/targets и найдите minio-s3-public

Алерты и дашборды:

После включения метрик автоматически применяются: - PrometheusRule с алертами: infra/k8s/monitoring/alerts/minio-alerts.yaml - Алерты доступности (MinIODown, MinIOMetricsDown) - Алерты производительности (MinIOHighLatency, MinIOHighErrorRate) - Алерты хранилища (MinIOHighDiskUsage, MinIOCriticalDiskUsage) - Алерты кластера (MinIOInsufficientNodes, MinIOClusterDown) - Алерты ресурсов (MinIOHighCPUUsage, MinIOHighMemoryUsage)

  • Grafana дашборд: infra/k8s/monitoring/dashboards/infra/minio/minio-cluster.json
  • Метрики кластера (активные ноды, использование диска)
  • Метрики производительности (request rate, latency, throughput)
  • Метрики хранилища (disk usage, capacity)
  • Метрики ресурсов (CPU, memory)

Для применения алертов:

1
2
# Из директории infra/k8s/
kubectl apply -f monitoring/alerts/minio-alerts.yaml

Для синхронизации дашборда с Grafana:

1
2
# Из директории infra/k8s/
make monitoring-sync-dashboards

Детали реализации

  • Helm chart оператора: minio/operator v5.0.15 (infra/k8s/charts/minio-operator/values.yaml)
  • nodeSelector и tolerations настроены так, чтобы оператор работал только на master нодах (node-role.kubernetes.io/control-plane=true).
  • Console отключена (console.enabled: false) из-за отсутствия публичных образов.

  • Namespaces:

  • infra/k8s/manifests/namespaces/tech-minio-operator.yaml
  • infra/k8s/manifests/namespaces/tech-minio-tenants.yaml

  • Tenant s3-public:

  • CR: infra/k8s/manifests/minio/s3-public.yaml
  • servers: 4, volumesPerServer: 1 — 4 pod'а MinIO, каждый со своим PVC.
  • PVC использует StorageClass: longhorn-minio, размер 50Gi на pod.
  • Размещение:
    • нет жёсткого nodeAffinity — поды могут быть и на masters, и на workers
    • podAntiAffinity — разведение pod'ов по разным нодам по kubernetes.io/hostname
  • SecurityContext настроен для non-root пользователя (UID 1000)
  • Сервисы создаются автоматически оператором (ClusterIP для внутреннего доступа)
  • Метрики Prometheus доступны через ServiceMonitor (infra/k8s/monitoring/manifests/monitors/minio-servicemonitor.yaml)

  • Configuration Secret (формат v5.0.15+):

  • Tenant использует существующий Secret через spec.configuration.name: s3-public-env-configuration.
  • Secret не хранится в репозитории (только ссылка в манифесте Tenant).
  • Secret должен быть создан до применения Tenant манифеста.
  • Формат Secret:
    • Namespace: tech-minio-tenants
    • Имя: s3-public-env-configuration
    • Тип: Opaque
    • Ключ: config.env с содержимым:
      1
      2
      export MINIO_ROOT_USER=<username>
      export MINIO_ROOT_PASSWORD=<password>
      
  • Создание: через make minio-create-secret или вручную через kubectl create secret.

← Назад к главной документации

Меню
Главная Карта документации
0. С чего начать
С чего начать Что это за продукт Для кого он Как устроена документация Быстрые ссылки Как начать разработку Как найти нужный сервис К кому идти по вопросам
1. Продукт
Продукт
2. Домены
Домены Домен: Профиль пользователя Домен: Поиск Домен: Заказы / транзакции Домен: Уведомления Домен: Аналитика Домен: Рекомендации
3. Архитектура
Архитектура Диаграмма: auth микросервисы
4. Инженерия
Инженерия
5. Платформа
Платформа Облако Объектное хранилище CI/CD Секреты и сертификаты Резервное копирование и восстановление
6. Разработка
Разработка Быстрый старт Локальная настройка Карта репозиториев Стандарты кода Git-процесс Стратегия ветвления Руководство по код-ревью Критерии готовности Процесс релиза Флаги фич FAQ разработчика Миграция secure auth
7. Эксплуатация
Эксплуатация Дежурство Управление инцидентами Уровни критичности Политика эскалации Постмортемы Ранбуки Управление изменениями Непрерывность бизнеса
8. Аналитика
Аналитика План трекинга событий Определения KPI Каталог дашбордов Словарь метрик Эксперименты Стандарты отчётности
9. Управление
Управление Решения (ADR) Политика статуса контента Changelog обновлений документации

На странице

Текущая конфигурация Быстрый старт Детали реализации