완전히 자동화된 Cloud-Native CI/CD 환경

CNAP의 CI/CD는 애플리케이션의 소스코드가 변경되면, 개발부터 운영 환경에 이르는 배포 전 과정을 GitOps 기반으로 완전 자동화합니다. Jenkins는 코드 빌드, 품질 리포트 생성, 이미지 빌드 및 Harbor 업로드를 자동으로 처리하며, 이후 GitOps 저장소의 이미지 태그를 업데이트합니다. ArgoCD는 GitOps 저장소의 변경 사항을 자동으로 감지해 Harbor에서 이미지를 가져와 Kubernetes 환경에 신속하고 안정적으로 배포합니다.

CICD Overview
지금, Cloud-Native Application Platform을 통해 더 빠르게 개발을 완료하고 더 안전하게 서비스를 배포하며, 더 높은 품질로 비즈니스를 성장시키시기 바랍니다.

브랜치 전략과 파이프라인

Jenkins는 GitLab 저장소의 소스 코드가 변경이 되면 이를 감지하여 자동으로 파이프라인을 실행합니다. 일반적으로 안정적인 개발 위해 소스 코드의 브랜치 관리는 Feature 브랜치와 Main 브랜치 파인프라인를 각각 구성합니다. 먼저 Feature 브랜치 파이프라인이 정상적으로 빌드와 품질 검증이 완료되면, 그 다음으로 Main 브랜치 파이프라인에서는 코드 빌드, 품질 리포트 생성, 이미지 빌드 및 Harbor 업로드를 수행하고 GitOps 저장소의 이미지 태그도 함께 업데이트합니다. 이후, ArgoCD는 GitOps 저장소의 변경 사항을 자동 감지하여 Harbor에서 이미지를 가져오고, Kubernetes 환경에 신속하고 안정적으로 변경사항을 반영합니다.

Branch strategy

Feature 브랜치는 Merge Request를 생성 시점에만 Jenkins가 파이프라인을 자동으로 실행합니다. 이후, 이 브랜치를 Main 브랜치로 Merge를 하면 Jenkins가 Main 브랜치의 변경 사항을 감지하여 파이프라인을 실행합니다.

CICD merge request

코드 품질 분석

SonarQube 코드 품질 리포트는 CI/CD 파이프라인에서 개발자와 운영팀이 신뢰할 수 있는 소프트웨어를 만들기 위한 핵심 도구입니다. 코드 변경이 병합되기 전, 자동으로 코드의 버그, 보안 취약점, 코드 스멜, 테스트 커버리지, 중복도, 기술 부채를 분석하고 시각화합니다. 이 리포트는 단순한 검사 결과가 아닌, 배포 가능 여부를 판단하는 품질 게이트이자 지속적인 리팩토링과 품질 개선의 기준점입니다. CI/CD와 통합된 SonarQube 리포트를 통해 코드 품질을 지속적으로 모니터링하고 개선할 수 있습니다.


Branch strategy

라이브러리 관리

CI 파이프라인에서 자바 라이브러리 모듈이 빌드에 성공하면, 해당 아티팩트를 경량 아티팩트 저장소인 Reposilite에 자동으로 배포합니다. 이후, 이 저장소에 등록된 라이브러리는 다른 애플리케이션에서 의존성으로 참조되어 일관된 빌드 환경과 재사용 가능한 아키텍처를 제공합니다.

Reposilite Diagram

애플리케이션간 참조가 필요한 공통 라이브러리를 빌드하고 배포하고, 이를 다양한 프로젝트에서 참조하기 위해 Reposilite와 함께 경량화된 사내 자바 라이브러리 배포 체계를 구성할 수 있습니다.


GitOps 기반 배포

GitOps는 애플리케이션 배포 및 인프라 구성을 GitOps 저장소를 통해 제어하는 운영 방식입니다. GitLab에 위치한 GitOps 저장소에서 배포 정의 파일을 수정하고, ArgoCD와 연계하여 변경에 대한 배포를 시작합니다. ArgoCD는 Git을 단일 진실 소스로 삼아 Kubernetes 애플리케이션을 자동으로 배포하고 동기화하는 GitOps 기반 배포 도구입니다. 선언적 설정, 변경 추적, 실시간 상태 확인을 통해 안정적이고 일관된 클러스터 운영을 가능하게 합니다.

Branch strategy

Git과 ArgoCD의 연계가 곧 배포 도구입니다. GitOps 저장소에 변경하면 ArgoCD가 자동으로 배포하고, 클러스터 상태까지 동기화합니다. 이제 GitOps를 통해 개발부터 운영까지 완전히 자동화된 배포환경을 구성할 수 있습니다.


애플리케이션 이미지 관리

CI/CD 파이프라인에서는 Jenkins가 자동으로 이미지를 빌드하여 Harbor에 등록하고, ArgoCD는 이 이미지를 참조하여 Kubernetes 클러스터에 자동으로 배포합니다. Harbor는 빌드에서 배포까지의 과정을 안정적이고 안전하게 연결하는 핵심 저장소 역할을 수행합니다.

Branch strategy

Harbor는 보안, 감사, 접근 제어, 이미지 서명 및 취약점 분석 기능을 갖춘 엔터프라이즈급 오픈소스 컨테이너 이미지 레지스트리입니다. 프라이빗 환경에서도 안정적으로 컨테이너 이미지를 저장하고 관리할 수 있도록 설계되었습니다.