Index
Документация по установке и использованию SonarQube в Kubernetes.
Оглавление
Описание
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 | |
2. Проверка зависимостей
Убедитесь, что PostgreSQL кластер pg-public запущен:
1 | |
Если кластер не создан:
1 2 | |
3. Создание секрета с паролем PostgreSQL
Создайте секрет с паролем для пользователя PostgreSQL:
1 | |
Вам будет предложено ввести пароль для пользователя sonarqube в PostgreSQL.
Важно: После создания секрета, создайте пользователя и базу данных в PostgreSQL:
1 2 3 4 5 6 7 8 9 | |
4. Установка SonarQube
1 | |
Это создаст:
- StorageClass longhorn-sonarqube
- SonarQube deployment через Helm chart
- Service для доступа к SonarQube
5. Проверка статуса
1 | |
6. Доступ к SonarQube
1 | |
Откройте в браузере: 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 | |
Команды
Управление
1 2 3 4 5 6 7 8 9 | |
Конфигурация
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 | |
Вариант B: вручную через kubectl
1 2 | |
Или через YAML манифест:
1 2 3 4 5 6 7 8 | |
Подключение
Service Endpoint
1 | |
Port-Forward
1 | |
Затем откройте в браузере: http://localhost:9000
Подключение из приложения
1 2 3 4 5 6 7 8 9 10 11 12 | |
Используйте endpoint: sonarqube.tech-sonarqube.svc.cluster.local:9000
Мониторинг
Метрики Prometheus
SonarQube поддерживает сбор метрик для Prometheus через плагин Prometheus Exporter.
Установка плагина Prometheus Exporter
- Войдите в SonarQube UI (http://localhost:9000)
- Перейдите в Administration → Marketplace
- Найдите плагин "Prometheus Exporter" или "SonarQube Prometheus Exporter"
- Установите плагин
- Перезапустите SonarQube (плагин будет активирован после перезапуска)
Примечание: После установки плагина метрики будут доступны по endpoint /api/prometheus/metrics или /api/monitoring/metrics (зависит от плагина). Проверьте документацию установленного плагина для точного пути.
Настройка ServiceMonitor
ServiceMonitor для SonarQube уже настроен в infra/k8s/monitoring/manifests/monitors/sonarqube-servicemonitor.yaml.
Для активации сбора метрик:
1 2 | |
Важно: ServiceMonitor настроен на endpoint /api/prometheus/metrics. Если плагин использует другой путь (например, /api/monitoring/metrics), обновите path в ServiceMonitor:
1 2 3 4 | |
Проверка метрик
-
Проверьте, что ServiceMonitor создан:
1kubectl get servicemonitor -n tech-monitoring sonarqube -
Проверьте 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 -
Проверьте доступность метрик:
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 | |
Проблемы с подключением к PostgreSQL
1 2 3 4 5 6 7 8 9 10 | |
Проблемы с PVC
1 2 3 4 5 6 7 8 | |
SonarQube не отвечает
1 2 3 4 5 6 7 8 9 10 | |
Проблемы с памятью
Если SonarQube падает из-за нехватки памяти, увеличьте ресурсы в charts/sonarqube/values.yaml:
1 2 3 4 5 6 7 8 9 | |