• ArgoCD 란?

    2025. 2. 14.

    by. Daramu

    귀여웡

    수년간 애플리케이션은 개발,테스트,스테이징,프로덕션 환경으로 구분했다. 

    쿠버네티스에서 이렇게 환경을 분리하는 방법은 다양하고 예산같이 다양한 요소에 달라진다.

     

    예를 들면 각 환경별로 쿠버네티스 클러스터가 있을 수 있고, 아니면 하나의 클러스터 안에서 네임스페이스(namespace)를 통해 구분할 수 도 있다.

     

    그런데 이러한 방식의 문제점은 구성 드리프트(시간이 지남에 따라 인프라 자원들이 서로 다른 상태가 되는 현상)가 발생한다는 것이다. 예를 들어 개발 환경 클러스터 네임스페이스에만 최신 버전의 애플리케이션이 배포되었거나, 아니면 네트워크 정책과 같은 리소스가 다르거나 하는 등의 문제가 발생한다.

     

    이 문제를 단순화 하기 위하여 깃옵스(gitops)방식이 해결사로 등장한다.

    깃 리포지터리에 풀 리퀘스트 및 모든 변경 이력인 원천 소스를 보관한다. 그렇게 된다면 컨트롤러는 깃 리포지터리의 모든 구성을 자동으로 적용할 것이다.

     

    이 역할을 해주는 것이 Argo CD이다.

    아르고씨디는 선언적인 쿠버네티스의 깃옵스 CD 도구이다. 핵심 두성 요소 중 애플리케이션 컨트롤러가 있는데, 애플리케이션 컨트롤러는 운영 중인 애플리케이션을 지속적으로 관찰하고 현재 애플리케이션 상태와 원천 소스인 깃 리포지터리에 작성된 상태를 비교한다.

     

    그리고 그 비교를 통해 아래와 같은 작업을 진행할 수 있다.

    1. 배포 자동화

    => 깃 커밋 또는 CI 파이프라인이 동작하고 수동 동기화를 트리거한 후에 Argo CD컨트롤러는 자동으로 클러스터를 깃 리포지터리에 의도한 상태로 푸시한다. 이 방법은 Argo CD 이벤트 자동화 프레임워크를 통해 구현할 수 있다.

    2. 관찰 가능성

    => Argo CD 는 애플리케이션 상태가 깃에서 의도된 상태와 동기화되어 있는지 식별할 수 있는 UI와 CLI를 제공하고, Argo CD Notifications엔진을 제공한다.

    3. 멀티네넌시

    => 인증을 위한 RBAC 정책을 사용해 여러 클러스터를 관리하고 배포하는 기능또한 제공한다.

    그 외에도 Cd, Rollouts,Events,Wrokflows등의 도구가 있다.

     

    조정

    깃 리포지터리에 담긴 의도한 상태를 현재 클러스터에 일치시켜야 하며, 필요한 환경에 올바르게 전달해야 한다.

    이것을 조정(reconciling)이라고 하는데 Argo CD는 깃 리포지터리에서 쿠버네티스로 향하는 조정 루프 속에 있다.

     

     

    예시 그림은 헬름(Helm)이며, Argo CD는 바라보는 깃 리포지터리에 있는 헬름 차트를 쿠버네티스 yaml로 렌더링 한다. 그리고 클러스터를 의도한 상태와 비교한다. 이것을 "동기화 상태(Sync Status)"라 부른다.

     

    만약 Argo CD가 다르다고 판단이 된다면 자동 혹은 수동으로 kubectl apply를 사용하여 템플릿화된 파일을 적용시키고, 쿠버네티스를 의도한 상태로 변경한다.

     

     

    댓글