Развертывание экземпляра 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-community-build/server-installation/server-host-requirements
Развертывание экземпляра
Развертывание из шаблона 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 и учётных данных доступа.
Укажите это в SonarQube через YAML:
Полный пример 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. Добавьте следующую конфигурацию для обеспечения корректного подключения: