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

Документация по установке и использованию Nexus Repository Manager через m88i Nexus Operator.

Оглавление

  • Описание
  • Быстрый старт
  • Архитектура
  • Команды
  • Конфигурация
  • Подключение
  • Troubleshooting
  • UI «Initializing» и JVM deadlock

Описание

m88i Nexus Operator - Kubernetes оператор для управления инстансами Nexus Repository Manager.

Возможности

  • ✅ Управление Nexus инстансами через CRD
  • ✅ Persistent storage
  • ✅ Автоматическое развертывание и обновление
  • ✅ Минимальное использование ресурсов

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

  • Operator namespace: tech-nexus-operator
  • Instances namespace: tech-nexus-instances
  • Storage: Longhorn (40Gi, StorageClass: longhorn-nexus)
  • Placement: Operator и Nexus поды могут размещаться на любых нодах (masters + workers)
  • Resources: 250m-1 CPU, 512Mi-2Gi RAM

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

1. Подготовка нод

Подготовка нод выполняется автоматически через Ansible playbook:

1
cd ../.. && make k8s-prepare-nodes

Это добавит: - На master нодах: label node-role.kubernetes.io/control-plane=true и taint node-role.kubernetes.io/control-plane:NoSchedule - На worker нодах: label node-role.kubernetes.io/worker=true

2. Установка Operator

1
2
cd infra/k8s
make nexus-install-operator

Это установит m88i Nexus Operator через Helm chart из официального репозитория.

3. Создание инстанса

1
make nexus-create-instance

Это создаст: - StorageClass longhorn-nexus - Nexus инстанс nexus-tech с 40Gi storage

4. Проверка статуса

1
make nexus-status

5. Доступ к Nexus

1
make nexus-port-forward

Затем откройте в браузере: http://localhost:8081

Архитектура

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
┌─────────────────────────────────────┐
│  tech-nexus-operator                 │
│  └── nexus-operator (deployment)    │
└─────────────────────────────────────┘

┌─────────────────────────────────────┐
│  tech-nexus-instances                │
│                                     │
│  nexus-tech (Nexus CR)              │
│  ├── nexus-tech-xxx (pod)          │
│  └── nexus-tech (service)           │
│                                     │
│  Storage: 40Gi (Longhorn)           │
└─────────────────────────────────────┘

Команды

Управление

1
2
3
4
5
6
7
make nexus-install-operator   # Установка оператора
make nexus-create-instance    # Создание инстанса nexus-tech
make nexus-delete-instance    # Удаление инстанса (сохраняет оператор)
make nexus-port-forward       # Port-forward Nexus (http://localhost:8081)
make nexus-status             # Статус оператора и инстансов
make nexus-connect            # Инструкции по подключению
make nexus-uninstall          # Удаление (УДАЛЯЕТ ДАННЫЕ!)

Справка

1
make nexus-help  # Справка по Nexus командам

Конфигурация

Operator

Оператор устанавливается через Helm chart из официального репозитория: - Helm chart: m88i/nexus-operator версия 0.8.0 - Helm repository: https://m88i.github.io/helm-charts/ - CRDs устанавливаются автоматически при установке Helm chart - ServiceAccount, Role, RoleBinding создаются автоматически

Инстанс nexus-tech

Конфигурация в manifests/nexus-operator/nexus-tech.yaml:

  • Image: Официальный образ Nexus (не Red Hat)
  • Storage: 40Gi (Longhorn, StorageClass: longhorn-nexus)
  • Resources: 250m-1 CPU, 512Mi-2Gi RAM
  • Node placement: Любые ноды (masters + workers)
  • Networking: Без Ingress и LoadBalancer (доступ через port-forward)

StorageClass

StorageClass longhorn-nexus создается автоматически при создании инстанса: - Provisioner: driver.longhorn.io - Replicas: 1 - Reclaim policy: Delete - Volume binding: Immediate - Size: 40Gi

Подключение

Service Endpoint

1
nexus-tech.tech-nexus-instances.svc.cluster.local:8081

Доступ через port-forward

1
make nexus-port-forward

Затем откройте в браузере: http://localhost:8081

Получение пароля администратора

Пароль администратора хранится в секрете, созданном оператором:

1
2
3
# Получение пароля
kubectl -n tech-nexus-instances get secret nexus-tech-admin-password \
  -o jsonpath='{.data.password}' | base64 -d

Примечание: При первом запуске Nexus может создать пароль администратора автоматически. Проверьте логи пода для получения начального пароля:

1
kubectl -n tech-nexus-instances logs -l app=nexus | grep -i password

Подключение из приложения

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
apiVersion: v1
kind: Secret
metadata:
  name: nexus-credentials
  namespace: my-app
type: Opaque
stringData:
  url: http://nexus-tech.tech-nexus-instances.svc.cluster.local:8081
  username: admin
  password: <password>

Troubleshooting

Проверка статуса оператора

1
2
kubectl -n tech-nexus-operator get pods
kubectl -n tech-nexus-operator logs deployment/nexus-operator

Проверка статуса инстанса

1
2
3
4
5
6
7
8
# Статус CR
kubectl -n tech-nexus-instances get nexus nexus-tech -o yaml

# Статус подов
kubectl -n tech-nexus-instances get pods -l app=nexus

# Логи пода
kubectl -n tech-nexus-instances logs -l app=nexus

Проблемы с PVC

1
2
3
4
5
# Проверка PVC
kubectl -n tech-nexus-instances get pvc

# Проверка StorageClass
kubectl get storageclass longhorn-nexus

Проблемы с доступом

1
2
3
4
5
6
7
8
# Проверка service
kubectl -n tech-nexus-instances get svc nexus-tech

# Проверка endpoints
kubectl -n tech-nexus-instances get endpoints nexus-tech

# Тест подключения через port-forward
kubectl -n tech-nexus-instances port-forward svc/nexus-tech 8081:8081

Пересоздание инстанса

1
2
3
4
5
# Удаление инстанса
make nexus-delete-instance

# Создание заново
make nexus-create-instance

Проблемы с памятью

Если Nexus не запускается из-за нехватки памяти:

  1. Проверьте доступную память на нодах:

    1
    kubectl top nodes
    

  2. Увеличьте лимиты в manifests/nexus-operator/nexus-tech.yaml:

    1
    2
    3
    4
    5
    resources:
      requests:
        memory: "1Gi"
      limits:
        memory: "4Gi"
    

  3. Примените изменения:

    1
    kubectl apply -f manifests/nexus-operator/nexus-tech.yaml
    

UI «Initializing» и JVM deadlock

Симптом: веб-интерфейс Nexus долго или бесконечно показывает Initializing при этом одинаково через Ingress и через kubectl port-forward (значит не nginx/Authentik, а процесс Nexus).

Суть: у JVM Nexus случается deadlock между Logback (блокировки LogbackLock / BasicStatusManager) и цепочкой Shiro / SessionServlet. REST-запросы с учётными данными перестают отвечать, а раздача / и статики может ещё работать.

Быстрая проверка из контейнера (подставьте namespace и имя пода, для Helm-чарта stevehipwell/nexus3 обычно tech-nexus / nexus-tech-nexus3-0, контейнер nexus3):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# Под StatefulSet обычно nexus-tech-nexus3-0 (Helm release nexus-tech, чарт stevehipwell/nexus3)
POD=nexus-tech-nexus3-0

# Анонимный health — обычно сразу 200, тело пустое (так задумано Sonatype)
kubectl -n tech-nexus exec "$POD" -c nexus3 -- \
  curl -m 5 -sS -o /dev/null -w "%{http_code}\n" http://127.0.0.1:8081/service/rest/v1/status

# Защищённый REST с Basic — при дедлоке «висит» до таймаута; при норме 200/401 приходит быстро
kubectl -n tech-nexus exec "$POD" -c nexus3 -- sh -c \
  'PW=$(cat /nexus-data/admin.password | tr -d "\r\n"); curl -m 15 -sS -o /dev/null -w "%{http_code}\n" -u "admin:$PW" http://127.0.0.1:8081/service/rest/v1/repositories'

Файл /nexus-data/admin.password содержит начальный пароль; после смены пароля в мастере он может не совпадать с реальным — для проверки используйте актуальный пароль admin.

Подтвердить deadlock: отправить JVM SIGQUIT (треддамп в лог) и поискать deadlock / waiting to lock:

1
2
3
kubectl -n tech-nexus exec nexus-tech-nexus3-0 -c nexus3 -- kill -QUIT 1
# затем
kubectl -n tech-nexus exec nexus-tech-nexus3-0 -c nexus3 -- tail -200 /nexus-data/log/jvm.log

Быстрое восстановление: перезапуск пода (например kubectl delete pod -n tech-nexus nexus-tech-nexus3-0 — StatefulSet поднимет новый).

Профилактика: не оставлять внутри пода зависшие curl к REST с логином; по возможности обновить образ sonatype/nexus3 (старые версии чаще страдают от багов вокруг логирования); следить за ошибками logback в логах (например replicationAppender).

См. также Sonatype: UI hangs on Initializing due to 500 on extdirect — другая частая причина «Initializing» (битый/очищенный tmp/nexus-extdirect), отличайте по коду ответа и Network в браузере.

Использование Nexus

Первый вход

  1. Запустите port-forward:

    1
    make nexus-port-forward
    

  2. Откройте http://localhost:8081

  3. Получите начальный пароль администратора:

    1
    kubectl -n tech-nexus-instances logs -l app=nexus | grep -i "admin password"
    

  4. Войдите с учетными данными:

  5. Username: admin
  6. Password: (из логов или секрета)

  7. При первом входе Nexus попросит изменить пароль.

Настройка репозиториев

После входа в Nexus можно настроить репозитории:

  • Maven (hosted): Для публикации артефактов
  • Maven (proxy): Для проксирования внешних репозиториев (Maven Central)
  • Maven (group): Для группировки репозиториев
  • Docker (hosted): Для хранения Docker образов
  • Docker (proxy): Для проксирования Docker Hub
  • npm (hosted/proxy): Для npm пакетов
  • И другие типы репозиториев

Примеры использования

Maven

1
2
3
4
5
6
<repositories>
  <repository>
    <id>nexus</id>
    <url>http://nexus-tech.tech-nexus-instances.svc.cluster.local:8081/repository/maven-public/</url>
  </repository>
</repositories>

Docker

1
docker login nexus-tech.tech-nexus-instances.svc.cluster.local:8081

Дополнительные ресурсы

  • m88i Nexus Operator GitHub
  • Nexus Repository Manager Documentation
  • Nexus Repository Manager User Guide

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

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

На странице

Оглавление Описание Возможности Текущая конфигурация Быстрый старт 1. Подготовка нод 2. Установка Operator 3. Создание инстанса 4. Проверка статуса 5. Доступ к Nexus Архитектура Команды Управление Справка Конфигурация Operator Инстанс nexus-tech StorageClass Подключение Service Endpoint Доступ через port-forward Получение пароля администратора Подключение из приложения Troubleshooting Проверка статуса оператора Проверка статуса инстанса Проблемы с PVC Проблемы с доступом Пересоздание инстанса Проблемы с памятью UI «Initializing» и JVM deadlock Использование Nexus Первый вход Настройка репозиториев Примеры использования Дополнительные ресурсы