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 리소스는 Application과 ApplicationSet CRD예요. 이 리소스를 사용해서 사용자는 Kubernetes에서 애플리케이션을 배포하고 관리할 수 있어요.
Argo CD Core를 실행 중일 때도 Argo CD CLI를 사용할 수 있어요. 이 경우 CLI는 CLI 명령을 처리하기 위한 로컬 API 서버 프로세스를 생성해요. 명령이 끝나면 로컬 API 서버 프로세스도 종료돼요. 이 과정은 추가 명령 없이 사용자에게 투명하게 일어나요. Argo CD Core는 Kubernetes RBAC만 신뢰하며, CLI를 호출하는 사용자(또는 프로세스)는 특정 명령을 실행하기 위해 Application과 ApplicationSet 리소스에 대해 적절한 권한으로 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에서 사용할 수 있어요.