Kubernetes 이야기

GitOps의 장단점 본문

Kubernetes/일반

GitOps의 장단점

kmaster 2023. 1. 10. 00:25
반응형

GitOps는 하나의 목표를 가진 운영 프레임워크으로 애플리케이션 개발에 사용되는 DevOps 모범 사례를 인프라 자동화 프로세스에 적용하는 것이다.

 

GitOps를 사용하는 이유

우선 DevOps에 대해 알아보자. 대부분의 경우 팀은 속도와 규모를 염두에 두고 최신 애플리케이션을 개발한다. 그렇기 때문에 성숙한 DevOps 문화를 가진 회사는 하루에 수백 번은 아니더라도 수십 번 프로덕션에 코드를 배포할 수 있다. DevOps의 주요 가치는 소프트웨어 개발 수명 주기(SDLC)의 중요한 부분을 자동화했다는 것이다.

 

그러나, 인프라관리는 수동적으로 된다는 것이 일반적이다. 이러한 인프라까지 자동화하려는 것이 GitOps가 나오게 된 배경으로 보인다. GitOps는 이러한 인프라 구성정보를 코드로 관리하는 것을 목표로 한다. 이러한 구성 파일은 빌드할 때마다 항상 동일한 애플리케이션 바이너리를 생성하는 애플리케이션 소스 코드와 같이 배포될 때마다 동일한 인프라 환경을 생성한다.

 

GitOps의 특징

  • 전체 시스템은 코드로 설명한다. ( IaC )
  • 시스템의 원하는 상태는 Git에서 버전 관리한다.
  • Git에서 변경 사항을 시스템에 자동으로 적용할 수 있다.
  • 자동화는 시스템이 신뢰할 수 있는 위치에 설명된 상태와 항상 일치하는지 확인한다.

 

GitOps의 동작방식

 

GitOps는 Infrastructure-as-Code 시스템과 CI/CD 파이프라인이라는 두 가지 조합으로 작동한다. GitOps는 2가지의 Git을 관리한다.

 

  • Application Repository : 개발 팀이 일상 업무에서 사용하는 소스 저장 Git Repository
  • Environment Repository : 이Repository는 IAC 접근 방식의 핵심으로 환경을 생성하는 환경 구성 코드가 포함되는 Git Repository

출처 : https://www.gitops.tech/

 

GitOps 의 장점

자동화 

Kubernetes에서 수동으로 변경하거나 Git에서 상태를 동기화하기 위한 수동 작업을 수행하지 않는다. GitOps Operator는 모든 것을 동기화 상태로 유지할 책임이 있으며 자동으로 수행한다.

친숙한 도구 

GitOps를 통해 팀은 애플리케이션 개발에서 이미 사용하고 있는 것과 동일한 많은 도구 및 사례를 사용하여 IT 인프라를 관리할 수 있다. Git은 대부분의 개발자에게 친숙한 도구이며 버전 제어 및 CI/CD는 DevOps에서 실행된다.

향상된 액세스 제어
팀 구성원에게 모든 인프라 구성 요소에 대한 자격 증명을 제공할 필요가 없다. 모든 변경 사항은 완전히 자동화되어 있으며 CI/CD 도구만 액세스하면 된다.

생산성 향상
코드를 통한 실행은 가리키고 클릭하는 수동 작업보다 훨씬 빠르다. 모든 테스트 사례도 자동화되고 반복 가능하다. 이를 통해 팀은 안정적인 환경을 신속하게 제공하고 전체 개발 프로세스의 속도를 높일 수 있다.

위험 완화
병합 요청을 사용하여 인프라에 대한 모든 변경 사항을 추적하므로 모든 변경 사항을 이전 상태로 쉽게 롤백할 수 있다. 이것이 GitOps가 인프라를 보호하는 데 도움이 되는 방법이다. 

비용 절감
인프라 정의 및 테스트를 자동화하면 대량의 수동 작업을 제거할 수 있다. 우선, 이것은 개발 팀을 보다 생산적이고 행복하게 만들 것이다. 또한 내장된 되돌리기/롤백 기능 덕분에 다운타임을 줄일 수 있다. 자동화는 또한 인프라 팀이 클라우드 비용 절감으로 직접 변환할 수 있는 클라우드 리소스 관리를 개선하는 데 도움이 된다.

오류 감소
GitOps에서 인프라 정의는 반복 가능하고 체계화된다. 이것은 인간이 만든 실수와 오류에 덜 취약하다. 또한 병합 요청에서 코드 검토 및 협업을 사용하여 식별할 수 있다. 이것은 팀이 생산에 들어가기 훨씬 전에 오류를 수정할 수 있는 기회를 제공한다.

쉬운 롤백
GitOps 이전에는 이전 버전을 유지하고 시스템의 호환성을 유지하는 것이 어렵기 때문에 롤백이 어려웠다. GitOps를 사용하면 새 상태에서 문제가 발생한 경우 이전 상태로 롤백할 수 있으며 몇 번의 클릭만으로 이를 수행할 수 있다.

더 빠른 환경 복제
전통적인 인프라 개발 방법을 따르는 팀의 경우 어떤 목적으로든 환경을 복제하려면 많은 시간과 노력이 필요하다. GitOps 덕분에 IAC 접근 방식을 사용하고 다른 팀이나 지역을 위해 신속하게 환경을 복제할 수 있다. 어쨌든 모든 것은 저장소 내부에 코드로 저장된다.

 

GitOps의 단점

일관성 있는 표준 부족

새로운 기술 사례와 마찬가지로 GitOps는 아직 업계 전반에서 동일한 방식으로 정의되지 않는다. 

대규모 실행 문제

배포 리포지토리의 수가 새로운 애플리케이션으로 확장됨에 따라 각각은 적절한 액세스 권한으로 구성되고 필요한 에이전트와 동기화되어야 하는 성능 문제가 발생할 수 있다. 이는 복잡한 환경에서 엄청난 시간이 소요될 수 있다. 

숙련된 인재 부족

GitOps는 여전히 비교적 새로운 기술이므로 이를 실행, 관리 및 전파할 수 있는 숙련된 엔지니어를 찾는 것이 어려울 수 있다. 또한 많은 조직이 최근에야 DevOps를 채택했기 때문에 훨씬 덜 주류적인 방법론을 사용하도록 경영진을 설득하는 것은 어려운 일이 될 수 있다.

감사

Git 에 대한 감사 및 Registry Push에 대한 감사가 K8S 에 배포된 감사와 통합된 형태가 아니다.

보안
Git에 Secret 데이터를 저장해야 하는 경우가 발생한다. 이 때 인프라에 대한 비밀정보가 누출되지 않도록 신경써야 한다.

 

참고

https://maximaconsulting.com/newsroom/gitops-pros-cons

 

반응형

'Kubernetes > 일반' 카테고리의 다른 글

KubeVela  (0) 2023.01.26
Impersonation (Kubernetes Authentication)  (0) 2023.01.26
Ingress vs Service Mesh  (0) 2022.12.28
Kubernetes와 Edge computing  (0) 2022.12.09
Data Prepper  (0) 2022.11.22
Comments