인포그랩
home
회사 소개
home

SonarQube 구축하기

소개

정적 코드 분석(Static Code Analysis)은 소프트웨어 개발에 사용하는 기술로, 실제로 프로그램을 실행하지 않고 소스 코드의 품질을 평가합니다. 여기에는 코드의 구조, 구문 및 기타 특성을 분석하여 잠재적인 결함, 보안 취약점 및 개선점을 식별하는 작업이 포함됩니다.
정적 코드 분석 도구를 사용하여 개발 팀은 개발 프로세스 초기에 잠재적인 문제를 포착하여 코드 품질을 개선하고 유지 관리성을 높이며 소프트웨어 결함을 줄일 수 있습니다.
다양한 정적 코드 분석 도구가 있으나, Community Edition으로 무료로 사용할 수 있고 많은 기능을 제공하는 SonarQube를 설치합니다.
학습의 결과로 SonarQube를 Kubernetes 클러스터에 배포합니다. 이후 GitLab CI/CD 파이프라인에서 구축한 SonarQube와 연동하여 변경된 소스 코드를 분석함으로써 코드 품질과 보안을 유지할 수 있습니다.

SonarQube란?

SonarQube는 클린 코드(clean code)를 제공하도록 체계적으로 도와주는 자체 관리형 자동 코드 리뷰 도구입니다. Sonar 솔루션의 핵심 요소인 SonarQube는 기존 워크플로에 통합되고 코드의 문제를 감지하여 프로젝트의 지속적인 코드 검사를 수행할 수 있도록 지원합니다. 이 도구는 30개 이상의 다양한 프로그래밍 언어를 분석하고 CI 파이프라인 및 DevOps 플랫폼에 통합되어 사용할 수 있습니다.
SonarQube는 코드 스멜(Code Smell), 버그, 보안 취약점, 중복 코드, 코드 복잡도, 단위 테스트 등의 보고서를 제공합니다.
SonarQube의 대표적인 특징은 아래와 같습니다.
지속적인 보안 통합
중앙 관리
DevOps 플랫폼 통합
다양한 언어 분석
플러그인 통합

학습 내용

SonarQube Helm 차트 리포지터리를 구성하는 방법
SonarQube Helm 차트의 구성 정보를 배포 환경에 맞게 설정하는 방법
Helm 차트로 SonarQube를 배포하고 확인하는 방법

아키텍처

사전 준비사항

기본 요건

Kubernetes에 대한 기본 개념
Helm, kubectl에 대한 기본 개념
정적 코드 분석의 이해

필요 항목

SonarQube를 배포할 Kubernetes 클러스터가 구축되어 있어야 합니다.
TLS/SSL 인증서를 사용할 수 있도록 cert-manager가 구축되어 있어야 합니다.
SonarQube Ingress 리소스를 사용할 수 있도록 NGINX Ingress Controller가 구축되어 있어야 합니다.