인프라 서버 위치를 싹 옮기면서
우선 급한대로 배포를 수동으로 진행했었음
- 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로 분리하는 게 훨씬 안정적이고 깔끔함
'TIL' 카테고리의 다른 글
| 중요한 로그가 무엇인지 (0) | 2026.04.03 |
|---|---|
| 공인 IP 2개 나오는 이유 (VIP 구조 정리) (0) | 2026.04.01 |
| 오늘 느낀 것 — 개발보다 더 중요한 것 (0) | 2026.03.20 |
| DB CPU가 미친듯이 튀었는데, 범인은 DB가 아니었다 (0) | 2026.03.18 |
| OpenSearch로 느린 API Top 뽑는 방법 (0) | 2026.03.17 |