2025 04 11
2025-04-11¶
ArgoCD¶
- ArgoCD란?
- 쿠버 환경에서 어플리케이션 배포/관리 지원 도구
- GitOps 원칙에 기반하여 설계됨
- Git 저장소의 어플리케이션 상태를 쿠버 클러스터와 동기화
- 배포 전체 상태 & 변화 과정 Git으로 추적 가능
- Why ArgoCD?
- Git 저장소 기록 == 쿠버 클러스터 상태
- 대표적인 배포 방식: 이미지 빌드 -> 컨테이너 레지스트리 업로드 -> k8s 리소스 정의하고 적용
- 해당 방식으로는 변경 사항 시마다 새롭게 적용해야 함
- 장점
- Git == Kubernetes 효율적인 동기화
- 간결/직관적인 설치/운영
- helm/kustomize 연동 좋음
- 선언적 관리의 편리성
- 커뮤니티 업데이트
- 설치 및 운용 접근법
- kustomize 활용하여 ArgoCD 전체 상태를 명세화 하여 git에 저장
- 활용 사례
- 일반적인 백엔드 배포
- 환경에 따라 다양한 설정값 변경하면서 배포 (이미지 태그, 자원 제약사항, 스케일링 옵션, 환경 변수 등)
- ArgoCD Application (배포의 기본 단위) 을 환경에 따라 한벌씩 만드는 방식 가능
- 하나의 Application == 클러스터에 배포되어야 할 리소스 위치/배포 방법/목표 ns/클러스터 등 정보 담음
- 일반적인 백엔드 배포
- ArgoCD 장단점
- 장점
- 코드 == 클러스터 상태
- Argo CD를 통해 클러스터 상태 보여줌
- 쿠버 리소스들을 Application 단위로 관리. 프로젝트 개념을 제공해 다양한 서비스들의 배포 상태 관리 체계적 도움
- 단점
- 클러스터 전체 상태 완전히 선언적 만들기 어려움
- ex. 어플리케이션 간 디펜던시 -> ArgoCD 내에 배포순서 지정할 수 없어 문제 직접 해결
- 그 전까지는 명령형 요소를 배포과정에 포함시키자
- 클러스터 전체 상태 완전히 선언적 만들기 어려움
- 장점
참고: https://www.youtube.com/watch?v=cLgzqc_hwIg&list=PL1mta2YyMpPWItLT-9XCaSsdF_EysOS4Z
-
컨셉
- 사용자는 쿠버에 배포할 리소스를 git에 push
- ArgoCD는 git에 있는 내용(현재 상태와 차이가 있는 내용) 을 쿠버에 동기화
- GitOps 외 운영을 위한 유틸리티 다수 지원
- 멀티 쿠버네티스 클러스터 연계
- SSO 연동
- 권한 제어 (RBAC)
- Hook 지원
- 알림 기능
- Helm/Kustomize 지원
- 단점
- 쿠버에서만 동작
- 많은 지식 필요
- 빌드 파이프라인은 별도 구축 (빌드 파이프라인은 별도 구축해서 ArgoCD에 연동 필요)
- git에 있는 쿠버 리소스 yaml 읽어서 argoCD가 동기화 하는구나
-
Sync
- Refresh Period: 기본으로 3분에 한번씩 비교해서 동기화 (polling)
- Refresh: Manual/Auto
- Self Healing (Auto): Git과 무조건 동일하게 보장. 누가 클러스터에 명령어 날려도 다시 복구
- 모르는 용어
- 쿠버네티스 crd: CustomResourceDefinition (https://kubernetes.io/ko/docs/concepts/extend-kubernetes/api-extension/custom-resources/)