GitOps & ArgoCD?

2025. 10. 5. 11:38·Container & DevOps

ArgoCD에 대해 간단히 알아보기 이전에 GitOps라는 개념을 먼저 알아야 한다.

GitOps?

GitOps는 “Git을 인프라와 애플리케이션 배포의 단일 진실의 원천(Single Source of Truth)” 으로 삼는 운영 방식이다.
즉, Git 저장소에 정의된 상태(Desired State) 를 기준으로 쿠버네티스 실제 상태(Actual State) 를 자동으로 맞춰주는 시스템을 의미한다.

쉽게 말하면, 개발자가 Git에 배포 설정을 올리면, 시스템이 알아서 배포하고 상태를 유지하는 방식이다.

GitOps 동작 흐름

GitOps의 핵심은 선언(Declarative) + 자동화(Automation) + 감시(Observation) 세가지 개념이다.

 

1. 선언(Declarative)

모든 인프라와 애플리케이션 설정을 YAML 등 선언형 코드로 작성하여 다음과 같은 형식으로 Git에 저장한다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  replicas: 3
  template:
    spec:
      containers:
        - name: myapp
          image: myapp:v1.2

위 YAML 자체가 시스템 요구 사항이 되는 것이다.

 

2. 자동화(Automation) 

Git에 변경사항이 생기면 ArgoCD 같은 GitOps 도구가 이를 자동으로 감지한다.
즉, 쿠버네티스 클러스터의 실제 상태(Actual State)를 Git 상태로 자동 동기화(Sync) 한다.

ex. Git에 myapp:v1.3 으로 변경되면, ArgoCD가 감지하여 클러스터에 배포 중인 Pod를 자동으로 업데이트하게 된다.

 

3. 상태 감시(Observation)

ArgoCD는 항상 “Git의 상태”와 “쿠버네티스 실제 상태”를 비교한다.
만약 운영자가 직접 클러스터 리소스를 수정해서 Git과 다르게 되면, ArgoCD는 이를 “드리프트(Drift)”로 감지하고 경고를 표시한다.
자동 복구 모드일 경우, Git 상태로 롤백하게 된다.

GitOps가 제공하는 장점

GitOps가 제공하는 장점은 다음과 같다.

항목 설명
일관성(Consistency) Git이 모든 설정의 기준이므로 환경마다 설정 불일치가 없다.
재현성(Reproducibility) Git 히스토리로 과거 상태로 쉽게 복원 가능.
감사 추적(Auditability) 누가 언제 무엇을 변경했는지 Git 커밋으로 남는다.
자동화(Automation) 수동 배포가 필요 없고 오류를 줄인다.
안정성(Stability) 드리프트 감지로 실시간 상태를 보정한다.
협업 효율성(Team Collaboration) Git 기반이라 코드리뷰, PR, 브랜치 전략을 그대로 인프라 관리에 활용 가능.

 

GitOps를 구현할 수 있는 Tool

도구  역할 특징
ArgoCD GitOps 기반 CD UI 제공, Helm/Kustomize 지원, 상태 모니터링
FluxCD CNCF GitOps 도구 경량 CLI 중심, 자동 동기화 강점
Jenkins X Jenkins 기반 GitOps 확장판 CI/CD 통합형, 관리 복잡
Weave GitOps Flux 기반 상위 프로젝트 시각화 기능 추가, 엔터프라이즈 친화

 

GitOps vs 기존 방식

구분
 전통적 CI/CD 방식  GitOps 방식
배포 트리거 Jenkins, Pipeline Script 실행 Git commit/push 이벤트
상태 저장소 Jenkins나 외부 시스템 Git Repository
배포 방식 명령형(Imperative) — “이걸 실행해라” 선언형(Declarative) — “이 상태가 되어야 한다”
오류 복구 수동 롤백 Git revert → 자동 복원
배포 주체 개발자 또는 CI 서버 GitOps Operator (예: ArgoCD)
추적성 로그 기반 Git commit 기반
환경 일관성 환경별 수동 설정 필요 모든 환경이 Git 기준으로 동기화됨

 

GitOps는 “Git이 곧 운영의 중심”이라는 개념이고,
ArgoCD는 “그 철학을 Kubernetes 위에서 자동으로 실행해주는 도구”이다.

 

Jenkins? ArgoCD?

Jenkins와 ArgoCD를 비교하는 사람들이 있지만, 사실 둘은 목적이 다르다. 젠킨스는 사실상 CI를 담당하고, ArgoCD는 CD를 담당하고 있기 때문이다.

물론,  Jenkins를 통해 CD까지 구현할 수는 있지만, 비효율적이기 때문에 대부분의 현업에서는 Jenkins+ArgoCD 또는 GitLab+ArgoCD 조합으로 CI/CD 파이프라인을 구축한다.

 

CI/CD에 대한 내용을 표로 정리하자면 다음과 같다.

구분 CI (Continuous Integration) CD (Continuous Delivery / Deployment)
대표 도구 Jenkins, GitHub Actions, GitLab CI ArgoCD, FluxCD, Spinnaker
목적 코드를 빌드하고 테스트 빌드된 결과물을 클러스터에 배포
실행 시점 코드 변경 시 자동 실행 CI 완료 후 자동 배포
결과물 Docker Image, Helm Chart 등 실제 서비스가 배포된 상태

 

ArgoCD?

출처: https://devtron.ai/what-is-argocd

ArgoCD는 Kubernetes 애플리케이션을 GitOps 방식으로 지속적으로 배포하고 관리할 수 있게 해주는 오픈소스 CD(Continuous Delivery) 도구이다.
즉, Git에 선언된 애플리케이션 상태를 기준으로 쿠버네티스 클러스터를 자동으로 맞춰주는 역할을 한다.

 

ArgoCD의 장점

CNCF(Cloud Native Computing Foundation)의 2024년 조사에 따르면, Kubernetes 기반 환경에서는 ArgoCD와 FluxCD 같은 GitOps 도구 사용 비율이 Jenkins보다 2배 이상 빠르게 증가 중이라고 한다. 그러면 ArgoCD의 장점은 무엇이길래, 이렇게 사용량이 증가하고 있는것일까?

ArgoCD의 주된 장점은 다음과 같다.

 

1. 쿠버네티스 네이티브 

ArgoCD는 쿠버네티스 리소스로 완전히 작동한다.
즉, kubectl apply 대신 ArgoCD가 YAML을 자동으로 적용하고 상태를 감시한다.
→ Jenkins는 파이프라인에서 kubectl 명령어를 직접 호출해야 함.

 

2. GitOps 철학 반영

ArgoCD는 Git 커밋을 기준으로 자동 배포한다.
즉, Git commit == 배포 이력이다.
→ Jenkins는 스크립트 실행 로그를 봐야 함.

 

3. UI 지원으로 직관적인 관리 가능

ArgoCD는 웹 UI에서 배포 상태, Sync 여부, 드리프트 감지를 한눈에 볼 수 있다.
→ Jenkins는 로그 기반이라 운영 가시성이 낮음.

 

4. 선언형 배포 + 자동 복구

ArgoCD는 YAML에 정의된 “원하는 상태(Desired State)”를 유지한다.
→ 누군가 수동으로 kubectl로 바꿔도 ArgoCD가 즉시 복원한다.

 

5. DevOps 팀에 적합

개발자들이 Pull Request로 배포 변경을 제안 → ArgoCD가 자동 반영.
→ 운영팀 개입이 최소화되고 협업이 쉬워진다.

 

그럼에도 Jenkins가 여전히 필요한 이유

항목  이유
빌드/테스트 ArgoCD는 애초에 빌드 기능이 없다. Jenkins나 GitHub Actions이 여전히 필요하다.
레거시 환경 지원 VM, 온프레미스, Docker Compose 환경에서는 Jenkins가 더 적합하다.
복잡한 워크플로우 Jenkins는 파이프라인 스크립트로 다양한 시나리오를 자동화할 수 있다.

따라서 빌드는 Jenkins, 배포는 ArgoCD를 이용하는 것이 가장 흔한 CI/CD 파이프라인 구조이다.

 

주요 기업들의 사례는 다음과 같다.

기업 
구조 설명
A 기업 Jenkins + ArgoCD Jenkins에서 Docker 이미지 빌드 → ECR 푸시 → ArgoCD가 Git 변경 감지 후 자동 배포
B 기업 Spinnaker → ArgoCD 전환 중 Spinnaker의 복잡도와 운영비를 줄이기 위해 ArgoCD 도입
C 기업 GitOps 완전 전환 Jenkins 제거하고 CI는 GitHub Actions, CD는 ArgoCD로 단순화

 

ArgoCD에 대한 더 자세한 내용은 다음 포스팅에서 직접 테스트를 해보면서 알아가도록 하자.

'Container & DevOps' 카테고리의 다른 글
  • Kubernetes - Metrics Server 구축 및 리소스 사용량 확인
  • Kubernetes - ArgoCD를 통한 CD 구현
  • Kubernetes - Github Actions를 이용한 CI 구현
  • Kubernetes - Django & Flask 웹 서비스 배포
SummerToday
SummerToday
summertoday 님의 블로그 입니다.
  • SummerToday
    SummerToday
    SummerToday
  • 전체
    오늘
    어제
  • 인기 글

  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 관리자
    • 분류 전체보기 (62)
      • OS & Network (4)
      • Cloud (11)
      • Container & DevOps (41)
      • Database (4)
      • Develop (0)
      • IaC (2)
  • 태그

    openebs
    Grafana
    s2s vpn
    tailscale
    Kubernetes
    cloud
    CloudWatch
    EIP
    Galera Cluster
    K8S
    container
    CI/CD
    MariaDB
    gitops
    argocd
    점프 계정
    aws
    AmazonSNS
    계정 관리
    Eni
  • hELLO· Designed By정상우.v4.10.3
SummerToday
GitOps & ArgoCD?
상단으로

티스토리툴바