Argo CD Core

Argo CD Core

Argo CD Core는 Argo CD를 headless 모드로 실행하는 별도의 설치 방식이에요. 이 설치로 Git 리포지토리에서 원하는 상태를 가져와 Kubernetes에 적용하는 완전한 GitOps 엔진을 사용할 수 있답니다.

출처: 문서

본문

소개 (Introduction)

Argo CD Core는 Argo CD를 headless 모드로 실행하는 다른 설치 방식이에요. 이 설치 방식에서는 Git 리포지토리에서 원하는 상태를 가져와 Kubernetes에 적용할 수 있는 완전한 기능의 GitOps 엔진을 사용할 수 있어요.

이 설치 방식에서는 다음 기능 그룹을 사용할 수 없어요:

  • Argo CD RBAC 모델
  • Argo CD API
  • Argo CD Notification Controller
  • OIDC 기반 인증

다음 기능은 부분적으로 사용할 수 있어요(자세한 내용은 아래 사용 섹션 참고):

  • Argo CD Web UI
  • Argo CD CLI
  • 멀티 테넌시(multi-tenancy, git push 권한에 기반한 엄격한 GitOps)

Argo CD Core를 실행할 만한 몇 가지 사용 사례는 다음과 같아요:

  • 클러스터 관리자: Kubernetes RBAC만 신뢰하고 싶어요.
  • DevOps 엔지니어: 배포 자동화를 위해 새 API를 배우거나 다른 CLI에 의존하고 싶지 않아요. Kubernetes API만 신뢰하고 싶어요.
  • 클러스터 관리자: 개발자에게 Argo CD UI나 CLI를 제공하고 싶지 않아요.

아키텍처 (Architecture)

Argo CD는 컴포넌트 기반 아키텍처로 설계되어 있기 때문에 더 미니멀한 설치가 가능해요. 이런 경우 더 적은 컴포넌트를 설치하면서도 핵심 GitOps 기능은 그대로 동작해요.

아래 다이어그램에서 Core 박스는 Argo CD Core를 선택할 때 설치되는 컴포넌트를 보여줘요.

Argo CD 컨트롤러가 Redis 없이도 실행될 수는 있지만 권장되지는 않아요. Argo CD 컨트롤러는 Redis를 중요한 캐싱 메커니즘으로 사용해서 Kube API와 Git에 가해지는 부하를 줄여줘요. 그래서 이 설치 방식에도 Redis가 포함돼 있어요.

설치 (Installing)

Argo CD Core는 필요한 모든 리소스를 포함한 단일 매니페스트 파일을 적용해서 설치할 수 있어요.

예시:

export ARGOCD_VERSION=<desired argo cd release version (e.g. v2.7.0)>
kubectl create namespace argocd
kubectl apply -n argocd --server-side --force-conflicts -f https://raw.githubusercontent.com/argoproj/argo-cd/$ARGOCD_VERSION/manifests/core-install.yaml

사용 (Using)

Argo CD Core가 설치되면 사용자는 GitOps를 통해 상호작용할 수 있어요. 사용 가능한 Kubernetes 리소스는 ApplicationApplicationSet CRD예요. 이 리소스를 사용해서 사용자는 Kubernetes에서 애플리케이션을 배포하고 관리할 수 있어요.

Argo CD Core를 실행 중일 때도 Argo CD CLI를 사용할 수 있어요. 이 경우 CLI는 CLI 명령을 처리하기 위한 로컬 API 서버 프로세스를 생성해요. 명령이 끝나면 로컬 API 서버 프로세스도 종료돼요. 이 과정은 추가 명령 없이 사용자에게 투명하게 일어나요. Argo CD Core는 Kubernetes RBAC만 신뢰하며, CLI를 호출하는 사용자(또는 프로세스)는 특정 명령을 실행하기 위해 ApplicationApplicationSet 리소스에 대해 적절한 권한으로 Argo CD 네임스페이스에 접근할 수 있어야 해요.

Core 모드에서 Argo CD CLI를 사용하려면 login 서브커맨드에 --core 플래그를 전달해야 해요. --core 플래그는 CLI와 Web UI 요청을 처리하는 로컬 Argo CD API 서버 프로세스를 생성해요.

예시:

kubectl config set-context --current --namespace=argocd # change current kube context to argocd namespace
argocd login --core

마찬가지로 사용자는 Web UI로 상호작용하는 것을 선호한다면 Web UI를 로컬에서도 실행할 수 있어요. Web UI는 다음 명령으로 로컬에서 시작할 수 있어요:

argocd admin dashboard -n argocd

Argo CD Web UI는 http://localhost:8080에서 사용할 수 있어요.

더 알아보기 (Learn more)