Fall in IT.

Argo CD (GitOps) 간단하게 알아보기 본문

시스템구축

Argo CD (GitOps) 간단하게 알아보기

D.Y 2021. 6. 10. 14:45

안녕하세요.

 

오늘은 Kubernetes 클러스터 배포 도구인 Argo CD에 대해서 간단하게 알아보겠습니다.

 

Argo CD

  • Argo CD는 GitOps 스타일의 배포를 지원하는 CD 도구이다
  • Git 저장소의 내용과 쿠버네티스 클러스터를 동기화해주는 역할을 하는 에이전트이다
  • 쿠버네티스 클러스터 내부에서 Pod 형태로 배포가 된다.

 

특징

  • 애플리케이션 정의, 구성 및 환경은 선언적이어야하며 버전을 제어해야한다.
  • 애플리케이션 배포 및 수명주기 관리는 자동화되고 확인하기 쉽다.

 

작동 원리

  • Argo CD는 원하는 애플리케이션 상태를 정의하기위한 소스로 Git repository를 사용하는 GitOps 패턴을 따른다.
  • Kubernetes 매니페스트는 여러 방법으로 지정할 수 있다. (필자는 helm 차트를 사용하였습니다.)
  • Argo CD는 지정된 대상 환경에서 원하는 애플리케이션 상태의 배포를 자동화한다.

 

빠른 시작

$kubectl create namespace argocd

$kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

 

Architecture

Argo CD는 실행중인 애플리케이션을 지속적으로 모니터링하고 현재 라이브 상태를 원하는 대상 상태와 비교하는 Kubernetes 컨트롤러로 구현된다.

 

 

GitOps

  • 핵심은 git repository에 저장된 쿠버네티스 매니페스트 같은 파일을 이용하여 배포를 선언적으로 하는 것이다.
  • git 저장소에 있는 것을 쿠버네티스 클러스터에 동기화한다.

 

기존의 배포 방식

  1. 개발자가 소스코드를 작성한다.
  2. git 저장소에 올린다.
  3. Jenkins, CircleCI, Github Action과 같은 CI툴에 의해서 테스트와 빌드 같은 작업이 실행되고
  4. 생성한 컨테이너 이미지를 컨테이너 저장소(ECR)에 업로드 한다.
  5. CI/CD 툴은 업로드 된 컨테이너 이미지의 정보를 참조해서 서버에 배포한다.

 

GitOps의 배포방식

  1. (기존과 동일) 개발자가 소스코드를 작성한다.
  2. (기존과 동일) Git저장소에 올린다.
  3. (기존과 동일) Jenkins, CircleCI, Github Action과 같은 CI툴에 의해서 테스트와 빌드 같은 작업이 실행되고 생성한 컨테이너 이미지를 컨테이너 저장소(ECR)에 업로드 한 후
  4. 매니페스트가 저장된 Git 저장소를 가져온다.
  5. 그리고 매니페스트의 특정 부분(예를 들면 이미지 태그)을 업데이트한 후 Git 저장소에 올리고 작업을 종료한다.

참조

Comments