Table of Contents | ||||
---|---|---|---|---|
|
...
1. Argo CD 개요
...
CI/CD 파이프라인 구축 시 애플리케이션을 지속적으로 관찰하여 최신 상태로 유지시켜주는 CD(Continuous Delivery) 솔루션이 필요하며, PlayceKube 패키지에서는 Argo-CD를 이용하여 기능을 구현합니다.
Continuous Delivery란?
배포 자동화 과정을 말하며, CD는 지속적인 서비스 제공(Continuous Delivery) 또는 지속적인 배포(Continuous Deployment)를 의미합니다.
테스트 및 배포를 자동화하는 DevOps 파이프라인 이전 단계가 모두 수행되면 자동으로 변경사항이 운영 환경에 배포됩니다.
Argo CD란?
애플리케이션 정의, 구성 및 환경은 선언적이고 버전이 제어되어야 하고 애플리케이션 배포 및 수명 주기 관리는 자동화되고 감사 가능하며 이해하기 쉬워야 합니다.
Argo-CD는 쿠버네티스를 위한 CD 솔루션으로 사용하기 쉬운 인터페이스를 제공하며 SSO, 멀티 클러서터 관리, RBAC 등 기능을 지원합니다.
Argo CD 특징
지정된 대상 환경에 애플리케이션 자동 배포
여러 구성 관리/템플릿 도구 지원(Kustomize, Helm, Jsonnet, plain-YAML)
여러 클러스터를 관리하고 배포하는 기능
SSO 통합(OIDC, OAuth2, LDAP, SAML 2.0, GitHub, GitLab, Microsoft, LinkedIn)
승인을 위한 다중 테넌시 및 RBAC 정책
Git 레포지토리에 커밋된 모든 애플리케이션 구성으로 롤백/롤
애플리케이션 리소스의 상태 분석
자동화된 구성 드리프트 감지 및 시각화
애플리케이션을 원하는 상태로 자동 또는 수동 동기화
애플리케이션 활동의 실시간 보기를 제공하는 웹 UI
자동화 및 CI 통합을 위한 CLI
Webhook 통합(GitHub, BitBucket, GitLab)
자동화를 위한 액세스 토큰
PreSync, Sync, PostSync는 복잡한 애플리케이션 롤아웃(예: 블루/그린 및 카나리아 업그레이드)을 지원합니다.
애플리케이션 이벤트 및 API 호출에 대한 감사 추적
프로메테우스 매트릭
Git에서 helm 매개변수 재정의를 위한 매개변수 재정의
Argo CD의 구조
...
Argo CD는 실행 중인 애플리케이션을 지속적으로 모니터링하고 현재 라이브 상태를 원하는 대상 상태(Git 저장소에 지정된 상태)와 비교하는 쿠버네티스 컨트롤러로 구현됩니다.
라이브 상태가 대상 상태와 차이가 생기게 되면 다시 자동 또는 수동으로 동기화하는 기능을 제공하며, 차이점을 보고 및 시각화합니다.
2. Argo CD 사용
GitOps를 위한 애플리케이션 생성
(1) Argo CD GUI 페이지 접속 (ex. https://argo.k8s.test.playce.cloud)
...
(7) 해당 애플리케이션에서 생성된 리소스 생성 및 상태 확인
...
(8) 클러스터에서 생성된 리소스 확인
...
애플리케이션 롤백
(1) 애플리케이션 상태 확인 페이지 상단에 [HISTORY AND ROLLBACK] 버튼 클릭
...
특정 버전으로 애플리케이션 롤백을 원할 경우, 더보기 버튼에서 [Rollback]을 클릭
...
애플리케이션 동기화
(1) helm으로 배포된 Argo-CD는 기본 3분 주기로 Git과 동기화를 진행하며, 시간을 변경하고 싶을 경우 helm chart에서 appResyncPeriod 값을 변경이 가능합니다.
...
Git에서 리소스가 삭제되고 Prune 옵션이 비활성화일 경우, 아래 그림과 같이 삭제된 리소스(nginx-service)에 노란색 X 표시가 발생하며 쿠버네티스에서도 삭제되지 않습니다.
...
3. Argo CD 기술자료
https://argo-cd.readthedocs.io/en/stable/
4. Argo CD 릴리즈 노트
https://github.com/argoproj/argo-cd/releases
...