Интеграция SonarQube в Kubernetes

Kate

Administrator
Команда форума
В современном мире разработка программного обеспечения стала неотъемлемой частью бизнес-процессов, требующей не только высокой производительности, но и надежной защиты от угроз безопасности. В этом контексте DevSecOps выступает как ключевая парадигма, интегрируя принципы безопасности непосредственно в процессы разработки и поставки. Особое внимание уделяется инструментам, способствующим обеспечению безопасности приложений на каждом этапе их жизненного цикла. В данной статье мы сосредоточим взгляд на сочетании двух мощных технологий — Kubernetes и SonarQube, и рассмотрим, как их совместное использование в рамках DevSecOps способствует созданию надежных и безопасных решений.

SonarQube представляет собой мощный инструмент статического анализа кода, который активно внедряется в практики DevSecOps для обеспечения высокого уровня безопасности и качества программного обеспечения. Этот инструмент разработан с целью выявления потенциальных уязвимостей, дефектов кода и проблем производительности на ранних этапах разработки.

Одним из ключевых преимуществ SonarQube является его способность автоматизированного анализа кода на множестве языков программирования. Интегрированные статические анализаторы позволяют выявлять такие проблемы, как некорректное использование аутентификации, утечки конфиденциальной информации, потенциальные уязвимости безопасности и другие аспекты, влияющие на безопасность приложения.

Однако, SonarQube не ограничивается только безопасностью. Он также предоставляет разработчикам ценные инсайты по качеству кода, поддерживая множество метрик, таких как цикломатическая сложность, покрытие кода тестами, степень повторного использования кода и другие.

Давайте начнем

Нам понадобится Helm для установки Sonarqube в кластер

helm repo add sonarqube https://SonarSource.github.io/helm-chart-sonarqube && helm repo list
e119ac0e241bcbb25586c14e37471cea.png

Задеплоим

helm install my-sonarqube sonarqube/sonarqube \
--version $VERSION \
--namespace sonarqube \
--create-namespace \
--values sonarqube-values.yaml
1d77c2ef71ba9e85c1c9c43aeb9d7336.png

Этот набор данных автоматически инициализирует экземпляр SonarQube вместе с базой данных PostgreSQL. SonarQube также загружает несколько полезных плагинов для анализа, определенных в конфигурации Helm-чарта:

39be0264bbbfd7e92ee1f150af3277d9.png

Проверим, все ли задеплоилось

watch kubectl get statefulset,pods,services --namespace sonarqube
d66a46695969572bd5fd56414073b5ca.png

Сервис SonarQube открыт как NodePort на порту — 31111.

в состояние READY 1/1, и может потребоваться еще минута или две, прежде чем будет доступен рабочий инструментарий.

Мы можем войти под учетной записью admin/admin и просмотреть предварительно установленные выбранные плагины.

9bc50e92b3827082cf5397bb85d7a469.png

Поменяем пароль на очень безопасный 123 (Конечно шутка)

e03e19bbad23e49960770a6cae077e8d.png



95c9898d7ab4023955bad59b582946d3.png

Анализ проекта с использованием SonarQube​

Склонируем сампловый репо:

git clone https://github.com/javajon/smelly && cd smelly
Этот проект включает в себя каталог микросервиса, который содержит небольшое приложение Spring Boot, построенное с использованием Gradle:

08604ec37d512ae7f529f9986d4ca3d7.png

Мы проводим анализ данного Java-проекта, используя SonarQube в качестве механизма правил и панели инструментов, где результаты публикуются.

Получим местоположение нашего SonarQube:

SONAR_SERVICE=https://sonarqube.qa.environments.ibm.com
Запустим анализ

./gradlew -Dsonar.host.url=$SONAR_SERVICE -Dsonar.login=admin -Dsonar.password=12QA67wWbA. Sonarqube


dfbae199ec705daf6b06419bb102f3f7.png



Анализ займет примерно 2 минуты для публикации результатов в SonarQube. По завершении переходим на портал SonarQube и наблюдаем проанализированный проект.

a4c944072edd3f6bdc79da95fdcf8c15.png
db6df8fc2063f58e4023c154a7413855.png
75b6bc700adc4e6181f7fa58ec6751ef.png
48e9ab6a6e95335132ac1f0b00fdc0ee.png
cc3c98fab5682d4f8e21e075895cb980.png

Простой в интеграции и конфигурации, но достаточно полезный инструмент.

 
Сверху