SonarQube Connector
SonarQube Connector — это коннектор, который обеспечивает подключение к любой инстанции SonarQube.
Вы можете использовать SonarQube Connector для безопасного доступа к SonarQube в CI/CD пайплайнах для анализа качества кода, сканирования безопасности и проверки quality gate.
Кроме того, коннектор позволяет централизованно управлять конфигурациями доступа к SonarQube по пространствам имён, устраняя необходимость дублировать токены SonarQube в каждом пространстве имён.
Содержание
OverviewIntegration RequirementsCreating a Simple SonarQube ConnectorFields ReferenceCapabilities of SonarQube ConnectorAuthenticationCredential Permissions RequiredSonarQube Connector Proxy and Configuration with sonar-project.properties FileProxy Addresssonar-project.properties Configuration FileUsing sonar-project.properties in PodsHealth ChecksBest PracticesTroubleshootingOverview
В этом документе рассматриваются:
- Integration Requirements: требования к целевым инстанциям SonarQube
- Creating SonarQube connector
- Advanced Features: возможности прокси и настройки SonarQube Connector
Integration Requirements
SonarQube Prerequisites
- Инстанция SonarQube должна быть доступна по HTTP/HTTPS
- Версия SonarQube должна поддерживать API эндпоинты, используемые коннектором:
/api/authentication/validate— для проверки аутентификации/api/system/status— для проверки работоспособности
Creating a Simple SonarQube Connector
Пример создания базового SonarQube Connector для self-hosted инстанции SonarQube:
Fields Reference
spec.connectorClassName:
sonarqube (константа), указывает имя ConnectorClass для интеграции с SonarQube.
spec.address:
Адрес целевого сервера SonarQube, например:
- Self-hosted:
https://sonarqube.example.com
spec.auth (опционально):
Определяет метод аутентификации для инстанции SonarQube.
-
spec.auth.name: должен бытьtokenAuthдля SonarQube Connector. -
spec.auth.secretRef: указывает секрет, содержащий токен аутентификации для SonarQube. Секрет должен быть создан в том же пространстве имён, что и коннектор.
Опциональные поля метаданных:
-
cpaas.io/description: описание для SonarQube Connector, например:
Capabilities of SonarQube Connector
Authentication
SonarQube Connector поддерживает следующие типы аутентификации:
tokenAuth: аутентификация на основе токена, соответствующий тип секрета:connectors.cpaas.io/bearer-token
Пример:
SonarQube поддерживает несколько типов токенов:
- User Token: персональный токен доступа для отдельных пользователей
- Project Analysis Token: токен, ограниченный конкретными проектами (рекомендуется для CI/CD)
- Global Analysis Token: токен для анализа любых проектов (использовать с осторожностью)
Для production-сред рекомендуем использовать Project Analysis Tokens с минимально необходимыми правами.
Для подробной информации о статусе смотрите Connector Status Documentation.
Credential Permissions Required
Необходимые права для настроенных учётных данных зависят от того, как вы планируете их использовать в Pods/Pipelines.
Например:
- Code Analysis: если требуется только анализ кода, токен должен иметь право "Execute Analysis" на целевом проекте.
- Quality Gate Checks: для проверки статуса quality gate токен должен иметь права чтения quality gates.
- Creating Projects: для создания новых проектов во время анализа требуются дополнительные права.
Для безопасности рекомендуем создавать токены с минимально необходимыми правами. Если нужны дополнительные привилегии, создавайте отдельные Connectors с более привилегированными токенами и используйте изоляцию по пространствам имён для контроля доступа пользователей к каждому Connector.
SonarQube Connector Proxy and Configuration with sonar-project.properties File
Чтобы клиенты могли обращаться к SonarQube без прямого управления токенами, SonarQube Connector предоставляет прокси-сервер, который автоматически внедряет информацию об аутентификации.
Клиенты могут использовать этот прокси для доступа к SonarQube без необходимости настраивать токены на стороне клиента.
Для упрощения использования SonarQube Connector предоставляет файл sonar-project.properties, который можно монтировать в Pods через CSI. При выполнении операций сканера в Pod прокси-сервис автоматически внедряет данные аутентификации.
Proxy Address
При создании Connector система автоматически создаёт прокси-сервис для целевой инстанции SonarQube.
Адрес прокси записывается в status.proxy.httpAddress:
Например:
sonar-project.properties Configuration File
SonarQube Connector предоставляет следующую конфигурацию:
sonar-project.properties:
- Предоставляет конфигурационный файл
sonar-project.properties. Этот файл монтируется в Pod через CSI, что позволяет обращаться к SonarQube через прокси без необходимости настройки токена на стороне клиента.
Пример содержимого файла конфигурации, созданного в ConfigMap:
Конфигурация включает:
sonar.host.url: реальный адрес сервера SonarQubesonar.scanner.proxyHost: имя хоста прокси для безопасного доступаsonar.scanner.proxyPort: порт прокси (80 для HTTP, 443 для HTTPS)sonar.scanner.proxyUser: закодированное пространство имён и имя коннектораsonar.scanner.proxyPassword: токен аутентификации (управляется автоматически)
Sonar Scanner версии 8.0+ по умолчанию отключает аутентификацию туннельного прокси. Чтобы включить поддержку аутентификации прокси, необходимо добавить параметр -Djdk.http.auth.tunneling.disabledSchemes= через SONAR_SCANNER_OPTS при запуске.
Using sonar-project.properties in Pods
Коннектор монтирует конфигурационный файл sonar-project.properties через CSI, который содержит настройки сканера с прокси configuration.names.
Чтобы использовать его в вашем Pod:
Сканер будет использовать прокси-конфигурацию для безопасного доступа к SonarQube без необходимости прямого доступа к токену.
Если ваша инстанция SonarQube использует HTTPS, необходимо импортировать CA-сертификат в Java truststore в контейнере сканера:
ca.cert автоматически монтируется коннектором и содержит CA-сертификат сервера Connector Proxy. Подробнее см. в Connectors CSI Built-in Configurations.
Health Checks
SonarQube Connector выполняет автоматические проверки состояния для проверки доступности:
Liveness Probe:
- Эндпоинт:
/api/system/status - Ожидаемый ответ: HTTP 200 с
{"status": "UP"} - Назначение: проверка работоспособности инстанции SonarQube
Authentication Probe:
- Эндпоинт:
/api/authentication/validate - Ожидаемый ответ: HTTP 200 с
{"valid": true} - Назначение: проверка валидности предоставленного токена
Эти проверки выполняются автоматически, а результаты отражаются в условиях статуса Connector.
Best Practices
- Namespace Isolation: создавайте отдельные коннекторы для разных команд или проектов с использованием изоляции по пространствам имён
- Token Rotation: регулярно обновляйте токены аутентификации и соответствующие секреты
- Monitor Status: отслеживайте состояние Ready коннектора для выявления проблем с аутентификацией или подключением
- Minimize Permissions: предоставляйте только минимально необходимые права для вашего конкретного сценария
Troubleshooting
Если коннектор отображает статус не Ready:
- Check Authentication: проверьте, что токен в секрете действителен и не истёк
- Verify Connectivity: убедитесь, что инстанция SonarQube доступна из Kubernetes кластера
- Review Logs: проверьте логи connector-proxy-service для подробных сообщений об ошибках
- Validate Address: убедитесь, что
spec.addressуказан корректно и содержит протокол (https://) - API Access: убедитесь, что инстанция SonarQube разрешает API-доступ из вашего кластера
Для дополнительной помощи смотрите Troubleshooting Guide.