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

Документация по установке и использованию SonarQube в Kubernetes.

Оглавление

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

Описание

SonarQube - платформа для непрерывного анализа качества кода, которая обнаруживает ошибки, уязвимости и запахи кода в коде.

Возможности

  • ✅ Анализ кода на 30+ языках программирования
  • ✅ Обнаружение уязвимостей и запахов кода
  • ✅ Интеграция с CI/CD
  • ✅ Отчеты и метрики качества кода
  • ✅ Поддержка плагинов

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

  • Namespace: tech-sonarqube
  • Storage: Longhorn (15Gi, StorageClass: longhorn-sonarqube)
  • Database: PostgreSQL (pg-public cluster)
  • Placement: Поды могут размещаться на мастерах и воркерах
  • Resources: 1Gi-2Gi RAM, 400m-1000m CPU
  • Ingress: Отключен (используется port-forward)

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

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

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

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

2. Проверка зависимостей

Убедитесь, что PostgreSQL кластер pg-public запущен:

1
make postgres-status

Если кластер не создан:

1
2
make postgres-install-operator
make postgres-create-cluster

3. Создание секрета с паролем PostgreSQL

Создайте секрет с паролем для пользователя PostgreSQL:

1
make sonarqube-create-secret

Вам будет предложено ввести пароль для пользователя sonarqube в PostgreSQL.

Важно: После создания секрета, создайте пользователя и базу данных в PostgreSQL:

1
2
3
4
5
6
7
8
9
-- Подключитесь к PostgreSQL
kubectl -n tech-postgres-databases exec -it \
  $(kubectl -n tech-postgres-databases get pod -l cluster-name=pg-public,spilo-role=master -o jsonpath='{.items[0].metadata.name}') \
  -- psql -U postgres

-- Создайте пользователя и базу данных
CREATE USER sonarqube WITH PASSWORD 'your_password';
CREATE DATABASE sonarqube OWNER sonarqube;
GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonarqube;

4. Установка SonarQube

1
make sonarqube-install

Это создаст: - StorageClass longhorn-sonarqube - SonarQube deployment через Helm chart - Service для доступа к SonarQube

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

1
make sonarqube-status

6. Доступ к SonarQube

1
make sonarqube-port-forward

Откройте в браузере: http://localhost:9000

Учетные данные по умолчанию: - Username: admin - Password: admin (измените при первом входе)

Архитектура

Компоненты

Компонент Namespace Расположение Описание
SonarQube Pod tech-sonarqube Любые ноды Основной под SonarQube
PostgreSQL tech-postgres-databases Worker ноды База данных (pg-public)
PVC tech-sonarqube Longhorn Хранилище данных (15Gi)

Схема подключений

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
┌─────────────────────────────────────┐
│  tech-sonarqube                     │
├─────────────────────────────────────┤
│  sonarqube (Pod)                    │
│  ├── SonarQube 2025.5               │
│  ├── Volume: 15Gi (Longhorn)        │
│  └── Resources: 1Gi-2Gi RAM        │
│                                      │
│  sonarqube (Service)                │
│  └── ClusterIP: 9000                │
└─────────────────────────────────────┘
              │
              │ JDBC
              ▼
┌─────────────────────────────────────┐
│  tech-postgres-databases            │
│  └── pg-public (PostgreSQL)         │
│      └── Database: sonarqube        │
└─────────────────────────────────────┘

Команды

Управление

1
2
3
4
5
6
7
8
9
make sonarqube-help              # Справка по SonarQube командам
make sonarqube-add-repo          # Добавить Helm репозиторий
make sonarqube-create-secret     # Создать секрет пароля PostgreSQL
make sonarqube-install          # Установить SonarQube
make sonarqube-status            # Статус SonarQube
make sonarqube-port-forward      # Port-forward к localhost:9000
make sonarqube-connect           # Инструкции по подключению
make sonarqube-uninstall         # Удалить SonarQube (сохраняет данные)
make sonarqube-delete            # Удалить SonarQube и данные

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

Helm Values

Основные настройки в charts/sonarqube/values.yaml:

  • Image: sonarqube:2025.5-community
  • Storage: 15Gi (Longhorn, StorageClass: longhorn-sonarqube)
  • Resources: 1Gi-2Gi RAM, 400m-1000m CPU
  • JVM Options: -Xmx1024m -Xms512m
  • PostgreSQL: Внешний кластер pg-public
  • Tolerations: Разрешено размещение на control-plane нодах
  • Node Selector: Пустой (разрешено размещение везде)

PostgreSQL Connection

SonarQube подключается к PostgreSQL через:

  • Host: pg-public.tech-postgres-databases.svc.cluster.local:5432
  • Database: sonarqube
  • Username: sonarqube
  • Password: Из секрета sonarqube-postgres-secret

Создание секрета пароля PostgreSQL

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

1
make sonarqube-create-secret

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

1
2
kubectl -n tech-sonarqube create secret generic sonarqube-postgres-secret \
  --from-literal=password=YOUR_PASSWORD

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

1
2
3
4
5
6
7
8
apiVersion: v1
kind: Secret
metadata:
  name: sonarqube-postgres-secret
  namespace: tech-sonarqube
type: Opaque
stringData:
  password: YOUR_PASSWORD

Подключение

Service Endpoint

1
sonarqube.tech-sonarqube.svc.cluster.local:9000

Port-Forward

1
make sonarqube-port-forward

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

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
apiVersion: v1
kind: Service
metadata:
  name: sonarqube-external
  namespace: tech-sonarqube
spec:
  type: ClusterIP
  ports:
    - port: 9000
      targetPort: 9000
  selector:
    app: sonarqube

Используйте endpoint: sonarqube.tech-sonarqube.svc.cluster.local:9000

Мониторинг

Метрики Prometheus

SonarQube поддерживает сбор метрик для Prometheus через плагин Prometheus Exporter.

Установка плагина Prometheus Exporter

  1. Войдите в SonarQube UI (http://localhost:9000)
  2. Перейдите в Administration → Marketplace
  3. Найдите плагин "Prometheus Exporter" или "SonarQube Prometheus Exporter"
  4. Установите плагин
  5. Перезапустите SonarQube (плагин будет активирован после перезапуска)

Примечание: После установки плагина метрики будут доступны по endpoint /api/prometheus/metrics или /api/monitoring/metrics (зависит от плагина). Проверьте документацию установленного плагина для точного пути.

Настройка ServiceMonitor

ServiceMonitor для SonarQube уже настроен в infra/k8s/monitoring/manifests/monitors/sonarqube-servicemonitor.yaml.

Для активации сбора метрик:

1
2
# Применить ServiceMonitor
kubectl apply -f ../../monitoring/manifests/monitors/sonarqube-servicemonitor.yaml

Важно: ServiceMonitor настроен на endpoint /api/prometheus/metrics. Если плагин использует другой путь (например, /api/monitoring/metrics), обновите path в ServiceMonitor:

1
2
3
4
# Отредактируйте файл
kubectl edit servicemonitor -n tech-monitoring sonarqube
# Или измените файл напрямую:
# infra/k8s/monitoring/manifests/monitors/sonarqube-servicemonitor.yaml

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

  1. Проверьте, что ServiceMonitor создан:

    1
    kubectl get servicemonitor -n tech-monitoring sonarqube
    

  2. Проверьте targets в Prometheus:

    1
    2
    3
    # Port-forward к Prometheus
    kubectl -n tech-monitoring port-forward svc/kube-prometheus-stack-prometheus 9090:9090
    # Откройте http://localhost:9090/targets и найдите sonarqube
    

  3. Проверьте доступность метрик:

    1
    2
    3
    4
    5
    6
    # Port-forward к SonarQube
    kubectl -n tech-sonarqube port-forward svc/sonarqube 9000:9000
    # Проверьте endpoint метрик (попробуйте оба варианта)
    curl http://localhost:9000/api/prometheus/metrics
    # или
    curl http://localhost:9000/api/monitoring/metrics
    

Доступные метрики

После установки плагина Prometheus Exporter, SonarQube будет экспортировать метрики о: - Состоянии системы (up/down) - Производительности (время ответа, throughput) - Использовании ресурсов - Статистике анализа кода - Количестве проектов, анализов и т.д.

Troubleshooting

SonarQube pod не запускается

1
2
3
4
5
6
7
8
# Проверить логи
kubectl -n tech-sonarqube logs -l app=sonarqube

# Проверить статус пода
kubectl -n tech-sonarqube get pods -o wide

# Проверить события
kubectl -n tech-sonarqube get events --sort-by='.lastTimestamp'

Проблемы с подключением к PostgreSQL

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# Проверить секрет
kubectl -n tech-sonarqube get secret sonarqube-postgres-secret

# Проверить подключение к PostgreSQL
kubectl -n tech-postgres-databases exec -it \
  $(kubectl -n tech-postgres-databases get pod -l cluster-name=pg-public,spilo-role=master -o jsonpath='{.items[0].metadata.name}') \
  -- psql -U postgres -c "\l" | grep sonarqube

# Проверить логи SonarQube на ошибки подключения
kubectl -n tech-sonarqube logs -l app=sonarqube | grep -i "jdbc\|postgres\|database"

Проблемы с PVC

1
2
3
4
5
6
7
8
# Проверить PVC
kubectl -n tech-sonarqube get pvc

# Проверить StorageClass
kubectl get storageclass longhorn-sonarqube

# Проверить Longhorn volumes
kubectl -n longhorn-system get volumes

SonarQube не отвечает

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# Проверить health check
kubectl -n tech-sonarqube exec -it \
  $(kubectl -n tech-sonarqube get pod -l app=sonarqube -o jsonpath='{.items[0].metadata.name}') \
  -- curl http://localhost:9000/api/system/status

# Проверить ресурсы
kubectl -n tech-sonarqube top pod

# Проверить limits
kubectl -n tech-sonarqube describe pod -l app=sonarqube | grep -A 5 "Limits\|Requests"

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

Если SonarQube падает из-за нехватки памяти, увеличьте ресурсы в charts/sonarqube/values.yaml:

1
2
3
4
5
6
7
8
9
resources:
  requests:
    memory: "2Gi"
    cpu: "1000m"
  limits:
    memory: "4Gi"
    cpu: "2000m"

jvmOpts: "-Xmx2048m -Xms1024m"

Ссылки

  • 📚 SonarQube Documentation
  • 🐳 SonarQube Docker Hub
  • 🔗 SonarQube Helm Chart

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

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

На странице

Оглавление Описание Возможности Текущая конфигурация Быстрый старт 1. Подготовка нод 2. Проверка зависимостей 3. Создание секрета с паролем PostgreSQL 4. Установка SonarQube 5. Проверка статуса 6. Доступ к SonarQube Архитектура Компоненты Схема подключений Команды Управление Конфигурация Helm Values PostgreSQL Connection Создание секрета пароля PostgreSQL Подключение Service Endpoint Port-Forward Подключение из приложения Мониторинг Метрики Prometheus Troubleshooting SonarQube pod не запускается Проблемы с подключением к PostgreSQL Проблемы с PVC SonarQube не отвечает Проблемы с памятью Ссылки