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/
'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 |
댓글