ArgoCD Image Updater로 CI/CD 파이프라인 자동화!

by DD
4개월 전
조회수 132

Argo CD Image Updater는 Argo CD 기반 쿠버네티스(Kubernetes) 워크로드의 컨테이너 이미지 자동 업데이트를 지원하며, GitOps 원칙 준수(GitOps Compliance)를 보장함

다양한 업데이트 전략(Update Strategies), 레지스트리 지원, Git Write-back 기능 등을 제공하며, CI/CD 파이프라인(CI/CD Pipeline) 자동화를 실현함

기존 Annotation 기반에서 CRD 기반 설정 방식(CRD-based Configuration)으로 변경되어 설정 관리의 명확성을 높임

Argo CD API 방식(Local)과 Git Write-Back 방식(Git)을 지원하며, GitOps 원칙 준수 여부(GitOps Compliance)에 따라 선택 가능

Jenkins 파이프라인을 경량화하고, 이미지 배포 자동화를 통해 개발 생산성 향상(Developer Productivity)을 이끌어냄

Argo CD Image Updater의 핵심 기능

Argo CD Image Updater는 컨테이너 이미지 자동 업데이트를 위해 다양한 기능을 제공한다. 다양한 업데이트 전략(Update Strategies)을 통해 SemVer, 최신 빌드, 알파벳 순, 다이제스트(Digest) 기반 업데이트를 지원하며, 사용자는 환경에 맞는 전략을 선택할 수 있다.

광범위한 레지스트리 지원(Broad Registry Support): Docker Hub, ECR, GCR 등 주요 컨테이너 레지스트리를 지원하며, pull secrets 설정도 유연하게 지원한다.

Git Write-back 기능(Git Write-back Feature): 이미지 변경 사항을 Git 저장소에 직접 커밋하고 푸시하여 GitOps 원칙을 준수한다.

필터링(Filtering): 정규식을 활용하여 업데이트할 태그를 필터링할 수 있으며, 병렬 처리(Parallel Processing)를 통해 여러 애플리케이션의 업데이트를 동시에 처리할 수 있다.

Annotation 기반에서 CRD 기반 설정으로의 변화

Argo CD Image Updater는 v1.0.0 릴리스부터 설정 방식이 Annotation(주석) 기반에서 CRD(Custom Resource Definition) 기반으로 변경되었다. 기존에는 Argo CD Application 리소스에 주석을 달아 설정을 관리했지만, CRD 기반으로 전환되면서 ImageUpdater라는 별도의 커스텀 리소스를 통해 이미지 모니터링 및 업데이트 설정을 정의한다.

설정 관리의 명확성(Configuration Clarity) 증대: CRD를 통해 설정 관리가 더 체계적이고 명시적으로 변경되었다.

유지보수성 향상(Maintainability Improvement): CRD 기반 설정은 설정 파일의 가독성을 높여 유지보수를 용이하게 한다.

확장성 확보(Extensibility): CRD를 통해 Image Updater의 기능을 확장하고, 사용자 정의 설정을 추가하는 것이 용이해졌다.

CI/CD 파이프라인에서의 위치

Argo CD Image Updater는 CI/CD 파이프라인에서 코드 빌드, 이미지 생성, 레지스트리 푸시 이후 Git 저장소의 매니페스트 파일 수정(Gap)을 자동화한다. CI 파이프라인에서 이미지를 레지스트리에 푸시하면, Image Updater가 이를 감지하여 Argo CD를 통해 배포(또는 Git 커밋)를 수행한다.

파이프라인 간소화(Pipeline Simplification): Jenkins 파이프라인에서 Git 저장소에 접근하여 매니페스트 파일을 수정하는 단계를 제거하여 파이프라인을 간소화한다.

배포 자동화(Deployment Automation): 이미지 업데이트를 자동으로 감지하고 배포하여 수동 작업을 줄이고 배포 속도를 향상시킨다.

GitOps 원칙 강화(GitOps Principle Reinforcement): Git Write-Back 방식을 통해 모든 변경 이력을 Git에 기록하여 GitOps 원칙을 준수한다.

Argo CD API 방식 vs Git Write-Back 방식

Argo CD Image Updater는 Argo CD API 방식(Local)과 Git Write-Back 방식을 모두 지원한다. Argo CD API 방식은 Argo CD의 파라미터 오버라이드 기능을 사용하여 즉시 반영되므로 빠르고 설정이 간단하다.

Git Write-Back 방식(Git Write-Back Method): Image Updater가 Git 저장소를 클론하여 태그를 수정한 뒤 커밋&푸시하는 방식으로, GitOps 원칙을 완벽하게 준수한다.

GitOps 원칙 준수(GitOps Compliance): 모든 변경 이력이 Git에 기록되어 변경 이력 관리 및 롤백(Rollback)이 용이하다.

설정 복잡성(Configuration Complexity): Git 인증 설정이 필요하며, 커밋 로그가 많아질 수 있다.

ArgoCD Image Updater CRD 설치 및 설정

ArgoCD Image Updater는 v1.0.0 릴리스부터 CRD 기반으로 설정되며, Helm 차트를 통해 설치 및 관리된다. 설치 후에는 ImageUpdater CRD를 정의하여 Argo CD Application의 이미지 업데이트를 설정할 수 있다.

Helm 설치(Helm Installation): `helm repo add argo`, `helm repo update` 명령어를 통해 Argo CD Image Updater를 설치한다.

CRD 설정(CRD Configuration): `ImageUpdater` 리소스를 정의하여 모니터링할 이미지, 업데이트 전략, Git Write-Back 설정을 구성한다.

Git Write-Back 설정(Git Write-Back Configuration): `writeBackConfig`를 통해 Git 저장소 정보, 브랜치, Kustomize 설정 등을 지정한다. 이 설정을 통해 GitOps 환경에서 이미지 태그를 자동 업데이트할 수 있다.

ArgoCD Image Updater를 활용한 CI/CD 파이프라인 개선

댓글 0

첫 번째 댓글을 남겨보세요!