Sonarqube Kurulumu Docker & Kubernetes

Java & Python Uygulama Örneği

Merhabalar,

Bu yazımda kurulumunu Sonarqube Docker ve Kuberentes kurulumunu inceliycez. ilk olarak nedir, hangi amaçla kullanıyoruz.

Sonarqube: Projenizdeki kodların belirli kurallara uyup uymadığını denetleyen bir araçtır. Bu denetlemeyi yaparken kodu derlemez. Server olarak kurulur ve projenizdeki hataları gösterir. Ayrıca size bu hataların nasıl düzeltilebileceği konusunda örnek verir.

SonarQube, Jenkins, Azure DevOps, GitHub, GitLab, Bitbucket ve çok daha fazlası gibi CI / CD araçlarıyla entegre olabilir.

SonarScanner: SonarQube’ ün monitör edebilmesi için kodlarımızı araştıran bir tooldur.

Sonarqube kurulumunu ilk olarak docker ile gerçekleştiriyoruz. Docker compose yaml dosyamıza bakalım.

docker-compose -f docker-compose-cee.yaml

Komutu ile compose ayağa kaldırıyoruz.

ve container durumunu baktığımızda status up durumunda olduğunu görmekteyiz. Sonarqube logunu baktığımızda,

docker logs -f sonarqubeyadadocker logs -f container_id

Loglarda bir hata yoksa tarayıcıdan “ip_adresi:9000” gittiğimizde

username: adminpassword: admin

Note: Sonarqube docker host için geeksinimleri,

  • sysctl -w vm.max_map_count=524288
  • sysctl -w fs.file-max=131072
  • ulimit -n 131072
  • ulimit -n 8192

Docker ile sonarqube kurulumu başaralı. Kubernetes ile sonarqube kurulumuna geçmeden önce docker-compose silmek için,

docker-compose -f docker-compose-ce.yaml down -v

Şimdi de Sonarqube kubernetes ile kurarım. Bunun için ilk olarak minikube start etmekle başlıyoruz.

minikube start --cpus=4 --memory=8000

Eğer sisteminizde minikube yüklü değil ise diğer yazımdan minikube kurulumunu yapabilirsiniz.

Sonarqube, docker image için docker host zorunlu olarak ayarlamız gerekiyor, Eğer bu değerlere set etmezseniz sonarqube pods hep stop olur. Bunuda loglardan bakarak görebilirsiniz

sysctl -w vm.max_map_count=262144
sysctl -w fs.file-max=131072
ulimit -n 131072
ulimit -u 8192

İlk olarak sonar verilerini tutacak PostgreSql kurulumunu yapalım. Postgresql yaml bakacak olursak,

kubectl create ns sonarqubekubectl apply -f sonar-postgresql.yamlkubectl get pods -n sonarqubekubectl get svc-n sonarqube

Sonarqube yaml bakalım ve deploy edelim.

kubectl apply -f sonarqube.yamlkubectl get pods -n sonarqubekubectl get svc-n sonarqube

Ayrıca sonarqube loglarına bakıp database migration olup olmadığını veya herhangi bir hata var mı diye kontrol ediyoruz.

kubectl logs -f -n sonarqube sonarqube-statefulset-0

ve

Güzel herhangi bir hata oluşmamış ve database migration gerçekleşmiş. Kontrol için postgesql deki sonarqubedb bağlanıp database tablolarını bakalım.

kubectl exec -it -n sonarqube postgresql-statefulset-0 --bashpsql -U username -d database_name

Database migration kontrol ettik. Şimdide arayüze bağlanalım. Bunun için minikube ip adresi ve port yazacağız.

minikube ip ya da minikube service list

Tarayıcıdan “192.168.49.2:32000” gittiğimizde,

Username  adminPassword  admin

Login olduğunuzda,

Her seferin ip gitmek dense buraya bir tane ingress yazalım. Minikube ile gerçekleştirdiğimiz için ilk önce addons ingress aktifleştirmeliyiz.

minikube addons enable ingressminikube addons list

ve tarayıcıdan “web.sonarqube.com” gittiğimizde,

Java projesini sonarqube yollamak için, Projenin bulunduğu folderda aşağıdaki komutu çalıştıryoruz. Code coverage içinde ‘jococo’ plugini yüklemek gerekiyor. Bunu da pom.xml ekliyoruz.

<! —  https://mvnrepository.com/artifact/org.jacoco/jacoco-maven-plugin
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.6</version>
</dependency>

Sonarqube Create Project diyerek bir tane proje ismi giriyoruz.

Maven seçtikten sonra bize çalıştırcağımız komutu veriyor. Bu komutu projenin bulunduğu path de çalıştıroyoruz.

Komut success gördükten sonra,

Sonarqube bakarsak,

ve

Projeyi başarılı şekilde sonarqube atmış durumdayız.

Son olarak Python projesini yollayalım. Bunun için tekrar create project den bir proje ismi yazıyoruz.

Python ve işletim sistemi sectikten sonra,

sonar-scanner \
-Dsonar.projectKey=Python \
-Dsonar.sources=. \
-Dsonar.host.url=http://192.168.49.2:32000 \
-Dsonar.login=7f65aea103eabc9095276b97cb9848fa3948e183

ve sonarqube projemize baktığımızda,

Proje basit bir flask örneği olduğu için çok fazla deyay gözükmüyor. Zaten amacımda projenizi sonarqube nasıl atılacağını göstermekdir.

--

--

Medium independent DevOps publication. Join thousands of aspiring developers and DevOps enthusiasts

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store