TIL

Jenkins + GitOps 기반 배포 자동화 정리

하얀잔디 2026. 3. 26. 18:42

인프라 서버 위치를 싹 옮기면서

 우선 급한대로 배포를 수동으로 진행했었음

 

  • Docker 이미지 빌드
  • 이미지 태깅
  • 서버 접속 후 kubectl 배포

이 과정이 반복되다 보니
실수도 나오고, 시간도 꽤 소요되는 구조였음

그래서 이번에 Jenkins + GitOps + Argo CD 구조로 정리함

 

 


1. Jenkins로 빌드 및 GitOps 반영

Jenkins에서는 다음 역할만 수행하도록 구성함

  • 소스 Checkout
  • Docker 이미지 빌드
  • 사내 레지스트리 push
  • GitOps repo의 kustomization.yaml 이미지 태그 변경

핵심은

 

 

 Jenkins는 배포를 하지 않음
 Git 상태만 변경함

 

 

이미지 태그 변경 = 배포 트리거

이 구조로 가져감

 


2. GitOps 구조 정리

배포 설정은 전부 Git으로 관리

  • kustomize 기반 overlay 구조 사용
  • 환경(dev/prd)별로 분리

이미지 태그는

 
images:
- name: ezaria/api
newTag: 1.4.xxx
 

 

이 부분만 변경하면 끝


3. Argo CD로 자동 배포

Argo CD를 붙이면서 구조가 깔끔해짐

  • GitOps repo 변경 감지
  • 자동 sync
  • Kubernetes 배포 반영

즉 흐름이 이렇게 됨

 Jenkins → GitOps repo 수정
 Argo CD → 변경 감지 후 자동 배포

 

 

이제 서버 접속해서 kubectl 칠 필요 없음

완전 Git 기반 배포 구조로 전환됨

 

 


4. 중간 이슈

  • kubeconfig 권한 문제로 배포 안 되던 이슈 있었음
  • .kube/config 권한 조정으로 해결

그리고

  • Jenkins 로그 너무 많아서
    필요한 로그만 남기도록 정리함

 


5. 구조 정리

최종 구조는 이렇게 정리됨

  • Jenkins → 빌드 & 이미지 push
  • Jenkins → GitOps repo 업데이트
  • Argo CD → 자동 sync & 배포

완전히 역할 분리됨

 

 


결론

  • 수동 배포 제거
  • Jenkins + Argo CD 기반 GitOps 구조 적용 완료
  • 이미지 태그만 바꾸면 자동 배포되는 구조 완성

운영하면서 느낀 건

 

 

 Jenkins에서 배포까지 다 하는 구조보다
 Argo CD로 분리하는 게 훨씬 안정적이고 깔끔함