Skip to content

FISA-Agri-Pay/git-ops

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

159 Commits
 
 
 
 
 
 

Repository files navigation

🌱 콩콩팥팥 · GitOps

농업 데이터 기반 BNPL 플랫폼 '콩콩팥팥'의 쿠버네티스 매니페스트를 관리하는 GitOps 레포지토리입니다. ArgoCD가 이 레포를 단일 소스(Single Source of Truth)로 삼아 클러스터 상태를 동기화합니다.

Note: 실제 운영은 온프레미스 내부의 GitLab에서 이루어졌으며, 본 GitHub 저장소는 공개용 미러링 레포지토리입니다. 아래 CI/CD 흐름의 소스 및 GitOps 저장소는 모두 GitLab을 기준으로 동작합니다.


Jenkins Argo CD Harbor GitLab Kubernetes


📂 디렉터리 구조

git-ops/
├── on-prem/              # 온프레미스 쿠버네티스 클러스터 매니페스트
│   ├── redis/            # Redis 7 (캐시 및 세션 관리)
│   ├── service-auth/     # 인증 서비스
│   ├── service-core/     # 코어 서비스
│   ├── service-payment/  # 결제 서비스
│   ├── service-admin/    # 관리자 서비스
│   └── service-batch/    # 정산 및 연체 관리 배치 (CronJob)
└── aws/                  # AWS(EKS) 환경 매니페스트
    └── service-catalog/  # 상품 카탈로그 서비스

온프레미스와 AWS 환경을 분리하여 매니페스트를 관리합니다. 각 서비스 디렉터리는 기본적으로 deployment.yaml, service.yaml, ingress.yaml로 구성됩니다.


🚀 CI/CD 파이프라인

GitLab(소스) → Jenkins(빌드) → Harbor(이미지) → 현재 레포(GitOps) → ArgoCD(배포)로 이어지는 Push 기반 CI + Pull 기반 CD 파이프라인을 구축했습니다. 애플리케이션 소스 저장소와 배포 매니페스트 저장소를 분리하여, 이미지 태그 업데이트 커밋만으로 배포가 트리거되도록 구성했습니다.

CICD

CI (Jenkins)

  1. GitLab 소스 저장소에 코드가 Push 되면, Webhook을 통해 Jenkins 파이프라인 트리거

  2. Jenkins에서 코드 빌드, 테스트 및 컨테이너 이미지 빌드를 수행한 후 Harbor에 이미지를 Push

  3. Jenkins가 현재 GitOps 레포지토리deployment.yaml내 이미지 태그를 새로 빌드한 버전으로 자동 교체하고 Commit & Push (예: ci: update service-admin image tag to <sha>)


CD (ArgoCD)

  1. GitOps 저장소에 커밋이 발생하면 GitLab Webhook이 ArgoCD에 알림을 보내고, ArgoCD는 저장소를 Pull 하여 매니페스트 변경 사항(이미지 태그 등)을 감지

  2. 변경된 매니페스트를 기준으로 Harbor에서 새 이미지를 Pull 하고, 새로운 Pod를 띄워 무중단 롤아웃을 수행

    • 온프레미스 이미지는 Harbor(harbor.dev6.fisa)에서 imagePullSecrets: harbor-secret을 통해 인증 후 가져오며, AWS 환경은 ECR 사용

🛠 인프라 관리 도구

Jenkins

빌드 파이프라인 대시보드 > 프론트엔드 및 백엔드의 각 마이크로서비스(admin, auth, core, payment 등)에 대한 빌드 진행 상태, 최근 성공/실패 여부, 소요 시간을 한눈에 모니터링하고 관리합니다.

jenkins

Harbor & Trivy

프라이빗 컨테이너 이미지 저장소 (On-Prem) > Jenkins에서 성공적으로 빌드된 서비스별 도커 이미지가 안전하게 보관되는 레지스트리입니다. 프로젝트별 접근 권한 제어 및 이미지 관리를 담당합니다.

harbor trivy

Trivy 기반 취약점 스캔 결과 > Harbor는 저장된 컨테이너 이미지에 대해 Trivy 스캐너를 사용하여 보안 취약점을 자동으로 분석합니다. 위 이미지는 특정 서비스 이미지에 대한 스캔 결과이며, Critical(47개), High(58개) 등 취약점의 심각도와 수정 가능 여부를 한눈에 파악하여 배포 전 보안 결함을 최소화합니다.


ArgoCD

서비스별 Application 동기화 상태 > Git 저장소의 매니페스트와 실제 쿠버네티스 클러스터의 상태가 일치하는지(Synced), 리소스가 정상적으로 구동 중인지(Healthy) 시각적으로 확인하고 관리할 수 있습니다.

argocd_main argocd_detail

📦 배포 서비스 목록

On-Prem (Harbor 레지스트리)

Ingress는 nginx IngressClass를 사용합니다. 상시 실행 워크로드는 nodeSelector: workload=core 조건에 따라 스케줄링됩니다. (배치 CronJob은 노드 제약 없음)

서비스 포트 외부 호스트(Ingress) 비고
service-auth 8091 api-auth.dev6.fisa
service-core 8090 api-core.dev6.fisa HikariCP keepalive 튜닝
service-payment 8092 api-payment.dev6.fisa HPA용 resources, readiness/liveness probe
service-admin 8080 api-admin.dev6.fisa
service-batch - - CronJob
redis 6379 (클러스터 내부) redis:7-alpine

AWS (EKS & ECR)

서비스 포트 비고
service-catalog 8081 EKS 환경 배포 및 ECR 이미지 사용

🔒 시크릿 데이터 관리

민감 정보(DB 비밀번호, 토큰 등)는 GitOps 레포지토리에 직접 저장하지 않습니다. 각 애플리케이션은 쿠버네티스 클러스터 내부에 별도로 생성된 Secret 객체를 envFrom.secretRef방식으로 참조하여 구동됩니다.


🔗 관련 레포지토리

전체 시스템을 구성하는 프로젝트 레포지토리 목록입니다.

레포 설명
back-end 금융 핵심 도메인 백엔드
front-end 사용자용 웹앱 프론트엔드
front-end-admin 관리자용 웹 프론트엔드
ai-prediction-model 시계열 예측 모델 · 오토스케일링 정책
mcp-aiops-backend FastMCP 기반 AIOps 백엔드
infra Terraform 기반 IaC · 운영 스크립트

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors