본문 바로가기
INFRA/DevOps

GitOps와 ArgoCD란?

by BTC_SEUNGJUN 2022. 12. 11.

GitOps 란?


개발자와 운영자의 소통, 협업, 통합을 강조하는 DevOps 는 다들 잘 아실거라고 생각합니다.

GitOps 는 DevOps 의 실천 방법 중 하나로 애플리케이션의 배포와 운영에 관련된 모든 요소들을 Git 에서 관리(Operation) 한다는 뜻입니다.

 

아주 간단하게 말해서 GitOps 는 Kubernetes Manifest 파일들을 Git 에서 관리하고, 배포할 때도 Git 에 저장된 Manifest 로 클러스터에 배포하는 일련의 과정들을 의미합니다.

 

GitOps 의 원칙


1. 모든 시스템은 선언적으로

2. 시스템의 상태는 Git 의 버전을 따라감

3. 승인된 변화는 자동으로 시스템에 적용됨

4. 배포에 실패하면 이를 사용자에게 경고해야함

 

 

GitOps Repository


 

GitOps Pipeline 을 설계할 때는 Git Repository 를 최소 두개 이상 사용하는 것을 권장합니다.

  • App Repo : App 소스 코드와 배포를 위한 Manifest 파일
  • 배포 환경 구성요 Repo : 배포 환경에 대한 모든 Manifest 들이 어떤 버전으로 어떻게 구성되어있는지 포함

 

GitOps 배포 전략


총 두가지 방법이 존재합니다.

 

1. Push Type

- Git Repo 가 변경되었을 때 파이프라인을 실행시키는 구조

 

배포 환경의 개수에 영향을 받지 않으며 접속 정보를 추가하거나 수정하는 것만으로도 간단하게 배포 환경을 추가하거나 변경할 수 있습니다. 아키텍처가 쉬워서 많은 곳에서 사용하고 있지만 보안 정보가 외부로 노출될 수 있다는 단점이 있습니다.

 

2. Push Type

- 배포하려는 클러스터에 위치한 별도의 오퍼레이터가 배포 역할을 대신하는 구조

 

해당 오퍼레이터는 Git Repo 의 Manifest 와 배포 환경을 지속적으로 비교하다가 차이가 발생할 경우, Git Repo 의 Manifest 를 기준으로 클러스터를 유지시켜줍니다.

 

 

GitOps 의 구현체 ArgoCD


 

ArgoCD 는 Kubernetes 를 위한 CD(Continuous Delivery) 툴입니다.

GitOps 방식으로 관리되는 Manifest 파일의 변경사항을 감시하며, 현재 배포된 환경의 상태와 Git 에 정의된 Manifest 상태를 동일하게 유지하는 역할을 수행합니다. Push 타입과 Pull 타입을 모두 지원하며 Pull 타입 배포를 권장하고 있습니다.

 

정리하자면 Kubernetes 의 구성 요소들을 관리하고 배포하기 위해서는 Manifest 파일을 구성하여 실행해야하는데 이러한 파일들은 계속해서 변경되기 때문에 지속적인 관리가 필요한테 이를 편하게 Git 으로 관리하는 방식이 GitOps,

GitOps 를 실현시키며 Kubernets 에 배포까지 해주는 툴이 ArgoCD 가 되겠습니다.

 

GitOps 스타일로 Kubernetes 앱 배포를 하게되면서 작업이 간결해지고 명확해지는 것을 느낄 수 있습니다.

 

 

출처: https://coffeewhale.com/kubernetes/gitops/argocd/2020/02/10/gitops-argocd/

 

GitOps와 ArgoCD

오늘은 GitOps가 무엇인가에 대해서 알아보고 그 구현체인 ArgoCD에 대해서 살펴보는 시간을 가져보겠습니다.

coffeewhale.com

출처: https://gruuuuu.github.io/cloud/argocd-gitops/

 

GipOps와 ArgoCD란?

Overview 이번 포스팅에서는 GitOps란 무엇인지, 대표되는 솔루션인 ArgoCD에 대해서 기술하도록 하겠습니다. GitOps란? 참고 WeaveWorks/Guide To GitOps 참고2 GitOps 개발자와 운영자의 소통, 협업, 통합을 강조

gruuuuu.github.io

'INFRA > DevOps' 카테고리의 다른 글

[K8s] Ingress 개념 및 Ingress Controller 설치, 활용  (0) 2022.12.19
[k8s] Kube-proxy  (0) 2022.12.12
Amazon GameLift 란?  (0) 2022.12.11
http status code  (0) 2022.12.10
Windows Server Driver Upgrade  (0) 2022.12.10

댓글