• ArgoCD는 쿠버네티스 위한 CD(Continuous Delivery) → "Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.”
  • GitOps방식으로 관리되는 Manifest 파일의 변경사항을 감시하며, 현재 배포된 환경의 상태와 Git에 정의된 Manifest 상태를 동일하게 유지하는 역할을 수행
  • ArgoCD는 push타입과 pull타입 모두를 지원하며 pull타입 배포를 권장함
  • ArgoCD는 GitOps 스타일로 쿠버네티스 앱 배포를 하게 되면서 배포 작업이 간결해지고 명확해짐
  • 배포하는 작업이 편해지게 되니 스트레스 없이 더 자주, 더 빠르게 새로운 버전을 운영에 반영할 수 있게 되어 진정한 CI/CD를 이룩하게됨
  • GitOps 스타일로 앱을 배포하여 손쉬운 소프트웨어 배포 프로세스를 정립해 나가는 것이 중요
  • ArgoCD로 배포하는 작업은 편하기에 스트레스 없이 더 자주, 더 빠르게 새로운 버전을 운영에 반영 → 진정한 CI/CD를 가능하도록 하게 함

 

GitOps 배포 전략 두가지 방법

1.Push Type

  • Git Repo가 변경되었을 때 파이프라인을 실행시키는 구조
  • 배포 환경의 개수에 영향을 받지 않으며 접속 정보를 추가하거나 수정하는 것만으로도 간단하게 배포 환경을 추가하거나 변경 가능
  • 아키텍처가 쉬워 많은 곳에서 사용하고 있으나, 보안정보가 외부로 노출될 수 있다는 단점이 있음

 

2.Pull Type

  • 배포하려는 클러스터에 위치한 별도의 오퍼레이터가 배포역할을 대신함
  • 해당 오퍼레이터는 Git Repo의 Manifest와 배포환경을 지속적으로 비교하다가 차이가 발생할 경우, Git Repo의 Manifest를 기준으로 클러스터를 유지시켜줌
  • Push Type과 달리 오퍼레이터가 App과 동일한 환경에서 동작중이므로 보안 정보가 외부에 노출되지 않고 실행할 수 있음

 

GitOps의 구현체 ArgoCD

  • GitOps는 특정 소프트웨어나 프로덕트가 아닌 철학 혹은 방법론에 더 가깝움
  • GitOps에서 요구하는 원칙

1. 선언형 배포 작업 정의서

  • 배포 방법이 명령형 방식으로 정의된 것이 아니라 배포된 상태가 어떤 모양을 가져야 할지 선언되어 있는 방식으로 정의가 되어 있어야함
  • 사용자가 배포의 원하는 상태 (desired state)를 선언적으로 정의하였다는 것을 의미
  • Git 저장소를 이용하여 단일 진실의 원천 조건을 만족할 수 있음
  • 배포 작업 정의서가 선언형으로 되어 있으면 더 쉽게 배포할 수 있으며 문제 발생시, 롤백하기도 쉬움
  • 또한 장애 등으로 인해 손상된 배포 환경을 자가 치유하기 유리함

 

2. Git을 이용한 배포 버전 관리

  • Git에 모든 배포에 관련된 정보가 정의되어 있어야함
  • 또한, 각 버전이 Git 저장소에 기록이 되어 있어야함
  • 사용자는 쉽게 예전 버전으로 롤백을 하거나 새로운 버전으로 업그레이드를 할 수 있음

 

3. 변경 사항 운영 반영 자동화

  • 사용자는 Git 저장소에 선언형 정의서를 저장하게 되면 실제 배포가 일어나는 작업은 자동으로 이루어져야함
  • 책임지는 주체가 ArgoCD와 같은 배포 주체(deploy operator)가 됨
  • ArgoCD를 사용하면, human error를 줄이고 지속적 빌드/배포를 가능하게 만듦

 

4. 자가 치유 및 이상 탐지

  • 사용자가 원하는 배포 상태 (desired state)를 작성하게 되면 실제 배포 환경이 그에 맞게 유지되고 있는지 책임지는 것 또한 배포 주체(deploy operator)가 됨
  • 배포를 관장하는 소프트웨어가 주체가 되어 현재 배포 상태를 확인하고 Git 저장소의 변경 사항 등이 없는지를 체크하여 운영 환경에 반영하는 역할을 함
  • 현재 GitOps의 구현체로 ArgoCD 뿐만 아니라 Weaveworks flux, Codefresh, Jenkins X 등 다양한 소프트웨어들이 존재함

 

참고 URL : https://coffeewhale.com/kubernetes/gitops/argocd/2020/02/10/gitops-argocd/
참고 URL : https://gruuuuu.github.io/cloud/argocd-gitops/
참고 URL : https://waspro.tistory.com/758

 

+ Recent posts