Развертывание экземпляра SonarQube
В этом документе описывается подписка на SonarQube Operator и функциональность по развертыванию экземпляров SonarQube.
SonarQube не поддерживает развертывание в пространствах имён с политикой SPA (Security Policy Admission), установленной в Restricted или Baseline по следующим причинам:
- Init Container требует прав root: SonarQube использует init-контейнеры для инициализации прав на директорию PVC, что требует прав root, которые не разрешены при политике
Restricted. - InitSysctl требует привилегированных прав: По умолчанию SonarQube использует initSysctl-контейнеры для настройки параметров sysctl (например,
vm.max_map_countиfs.file-max), необходимых Elasticsearch. Для этого требуются привилегированные права для изменения системных параметров ядра.
Рекомендация: Создайте отдельное пространство имён для развертывания SonarQube и убедитесь, что его политика безопасности установлена в privileged.
Содержание
Предварительные требованияПланирование развертыванияОсновная информацияПланирование ресурсов перед развертываниемРазвертывание экземпляраРазвертывание из шаблонаQuickstart TemplateРазвертывание из шаблона Production TemplateРазвертывание из YAMLКонфигурация ресурсовКонфигурация сетиКонфигурация храненияКонфигурация учётных данных доступа к PostgreSQLКонфигурация учётной записи администратораПолный пример YAMLКонфигурация SSOИспользование в чисто IPv6 кластерахПредварительные требования
-
Этот документ применим к версиям SonarQube 9.9.5 и выше, предоставляемым платформой. Он отделён от платформы с использованием таких технологий, как Operator.
-
Убедитесь, что SonarQube Operator был развернут (подписан) в целевом кластере, то есть создание экземпляров через SonarQube Operator готово к использованию.
Планирование развертывания
SonarQube поддерживает различные конфигурации ресурсов для удовлетворения различных сценариев клиентов. В разных сценариях требуемые ресурсы, конфигурации и прочее могут значительно отличаться. Поэтому в этом разделе описывается, какие аспекты необходимо учитывать при планировании развертывания перед созданием экземпляра SonarQube, а также как влияют ключевые решения, чтобы пользователи могли на основе этой информации осуществлять последующие конкретные развертывания экземпляров.
Основная информация
- SonarQube Operator, предоставляемый платформой, основан на официальном сообществом SonarQube Chart с расширенными корпоративными возможностями, такими как поддержка IPv6 и исправления уязвимостей безопасности. Он полностью совместим с версией сообщества по функционалу и улучшает удобство развертывания SonarQube за счёт опциональных, настраиваемых шаблонов и других методов.
Планирование ресурсов перед развертыванием
Планирование ресурсов перед развертыванием включает принятие решений до начала развертывания, которые будут применяться в процессе развертывания.
Для получения дополнительных рекомендаций по ресурсам среды обратитесь к официальной документации: https://docs.sonarsource.com/sonarqube-server/2025.1/setup-and-upgrade/installation-requirements/server-host/#hardware
Развертывание экземпляра
Развертывание из шаблона Quickstart Template
Этот шаблон используется для быстрого создания лёгкого экземпляра SonarQube, подходящего для сценариев разработки и тестирования, не рекомендуется для производственной среды.
- Вычислительные ресурсы: 800m CPU, 4 Gi памяти
- Хранение: Используется локальное хранилище узла, настройте IP узла хранения и путь
- Сетевой доступ: Используется NodePort для доступа к сервису, IP узла совпадает с узлом хранения, укажите порт
Развертывание из шаблона Production Template
Этот шаблон используется для быстрого создания производственного экземпляра SonarQube, подходит для производственных сценариев, рекомендуется для продакшн-среды.
- Вычислительные ресурсы: 8 ядер CPU, 16 Gi памяти
- Хранение: Используется PVC, настройте класс хранения
- Сетевой доступ: Используется доменное имя для доступа к сервису.
Развертывание из YAML
Конфигурация ресурсов
SonarQube требует настройки только общих ресурсов, например:
Подробнее см. Описание ресурсов в SonarQube Chart
Конфигурация сети
Конфигурации сети делятся на два типа:
- Конфигурация сети на основе ingress
- Конфигурация сети на основе NodePort
Конфигурация сети на основе ingress поддерживает протоколы https и http. В кластере должен быть предварительно развернут ingress controller.
Конфигурация сети на основе NodePort:
Конфигурация хранения
Конфигурации хранения делятся на три категории:
- Конфигурация хранения на основе StorageClass
- Конфигурация хранения на основе PVC
- Конфигурация хранения на основе HostPath
Конфигурация хранения на основе StorageClass:
Конфигурация хранения на основе PVC:
Конфигурация хранения на основе HostPath:
Конфигурация учётных данных доступа к PostgreSQL
На платформе необходимо заранее создать экземпляр PostgreSQL и базу данных для использования.
Поддерживаемые версии PostgreSQL для SonarQube 25.1.0 — от 13 до 17.
Доступ к PostgreSQL осуществляется путём настройки ресурса secret с определённым форматом содержимого. Подробнее см. Настройка PostgreSQL и учётных данных доступа.
Использование секрета для учётных данных доступа к PG в yaml SonarQube:
Конфигурация учётной записи администратора
При инициализации экземпляра SonarQube необходимо настроить учётную запись администратора и её пароль. Это делается путём настройки ресурса secret. Подробнее см. Настройка PostgreSQL и учётных данных доступа.
Укажите это в YAML SonarQube:
Полный пример YAML
NodePort, PVC, PostgreSQL, учётная запись администратора
Конфигурация SSO
Настройка SSO включает следующие шаги:
Регистрация клиента аутентификации SSO в глобальном кластере
- Создайте ресурс OAuth2Client в глобальном кластере для регистрации клиента аутентификации SSO.
- Настройте экземпляр SonarQube для использования аутентификации SSO
Добавьте конфигурацию SSO в экземпляр SonarQube:
Включение SSO для платформ с самоподписанными сертификатами
Если доступ к платформе осуществляется по https с использованием самоподписанного сертификата, необходимо смонтировать CA самоподписанного сертификата в экземпляр SonarQube. Метод следующий:
В пространстве имён cpaas-system глобального кластера найдите секрет с именем dex.tls, получите из него содержимое ca.crt и tls.crt, сохраните как новый секрет и создайте его в пространстве имён экземпляра SonarQube.
Отредактируйте экземпляр SonarQube для использования этого CA:
Использование в чисто IPv6 кластерах
При развертывании в среде чисто IPv6 кластера необходимо явно настроить параметры протокола IPv6, поскольку Java по умолчанию поддерживает dual-stack. Добавьте следующую конфигурацию для обеспечения корректного подключения: