[Cloud Native Application Delivery] CI/CD with GitOps

IMKUNYOUNG·2024년 7월 31일
0

KCNA

목록 보기
54/56

현대의 소프트웨어 개발과 배포 환경에서 GitOps는 Git을 단일 진실의 원천(Single Source of Truth)으로 사용하여 Kubernetes 인프라와 애플리케이션을 관리하는 강력하고 인기 있는 방법론으로 자리 잡았습니다. GitOps는 선언적 구성과 자동화된 배포를 강조하여, 팀이 빠르고 예측 가능하며 안전한 배포를 실현할 수 있도록 돕습니다.

GitOps의 기본 개념

GitOps에서는 두 개의 Git 리포지토리를 활용합니다. 하나는 애플리케이션 코드와 리소스(구성, 데이터, 이미지 등)를 위한 리포지토리이고, 다른 하나는 Kubernetes 매니페스트를 위한 리포지토리입니다. 이 매니페스트 리포지토리에는 클러스터의 원하는 상태를 정의하는 Yaml 파일이 포함되어 있으며, 여기에는 배포, 서비스, 인그레스, ConfigMap, 시크릿 등 다양한 Kubernetes 리소스가 포함됩니다.

ArgoCD: GitOps의 핵심 툴

GitOps를 구현하기 위해, 우리는 Kubernetes 클러스터 내에서 실행되는 ArgoCD와 같은 오퍼레이터를 사용합니다. ArgoCD는 Kubernetes 매니페스트 리포지토리를 지속적으로 모니터링하여 클러스터의 실제 상태와 원하는 상태를 일치시킵니다. 이를 통해 ArgoCD는 필요한 경우 업데이트를 배포하고 리소스를 릴리스하여 원하는 상태를 유지합니다.

개발자의 코드 변경과 배포 과정

예를 들어, 개발자가 애플리케이션 코드 리포지토리에 새로운 변경 사항을 커밋하면, 이러한 변경 사항을 배포하기 위해 CI 파이프라인이 작동합니다. 이 파이프라인은 단위 테스트를 실행하고, 빌드 아티팩트를 생성하며, Docker 이미지를 생성합니다. 생성된 이미지는 컨테이너 레지스트리에 푸시됩니다. 그 후, Kubernetes 매니페스트 리포지토리를 새로운 이미지 버전으로 업데이트해야 합니다. 이는 Yaml 파일을 수정하고 리포지토리에 커밋하는 방식으로 이루어집니다.

그 다음으로, 우리는 Kubernetes 매니페스트 리포지토리에 대한 풀 리퀘스트(PR)를 생성합니다. 이 PR은 프로젝트 매니저나 아키텍트에 의해 검토되고, 마스터 브랜치에 병합되기 전에 승인됩니다. PR이 병합되면, 변경 사항은 Kubernetes 리포지토리에 반영되고, ArgoCD는 이를 감지하여 클러스터를 새로운 상태로 동기화합니다.

자동화된 롤백과 안정성

ArgoCD는 배포를 자동화하는 것 외에도, 문제가 발생하거나 실패할 경우 신뢰할 수 있는 롤백 메커니즘을 제공합니다. ArgoCD의 기능을 활용하면 ArgoCD 앱 히스토리 및 앱 롤백 명령을 통해 이전의 안정적인 버전으로 쉽게 롤백할 수 있습니다. 이를 통해 예상치 못한 상황에서도 시스템의 안정성을 유지할 수 있습니다.

마치며

GitOps는 선언적 구성과 자동화를 통해 Kubernetes 인프라와 애플리케이션 배포를 효율적으로 관리할 수 있는 강력한 방법입니다. 특히, ArgoCD와 같은 툴을 활용하면 코드 변경 사항을 빠르게 배포하고, 안정적으로 롤백할 수 있어 개발자와 운영팀의 협업을 강화할 수 있습니다.

0개의 댓글