새소식

Kubernetes

GitOps 개념과 Kubernetes

  • -

이번에 에이콘출판사에서 예제로 배우는 ArgoCD 책이 출판되었습니다.

 

한국어로 출간되는 첫 ArgoCD 관련 기술 서적으로 알고 있는데,

내용이 굉장히 좋아서 관심이 있다면 한 번 사서 읽어보는 것을 추천드립니다.

 

예제로 배우는 Argo CD

 

예제로 배우는 Argo CD - 예스24

Argo CD는 쿠버네티스 클러스터에서 선언적인 깃옵스 워크플로를 제공하는 대표적인 도구로, 깃 리포지터리를 기반으로 애플리케이션 배포와 관리를 자동화하는 역할을 한다. 『예제로 배우는 Ar

www.yes24.com

 

본 글은 책을 읽으며 공부한 내용을 축약하여 작성되었습니다.

 

 

 

1. GitOps 소개

 

GitOps 는 Flux 를 개발한 웨이브웍스 (Weaveworks) 직원들이 2017년 처음 사용

 

현재 GitOps 는 DevOps 다음으로 영향력 있는 단어가 되었습니다.

 

 

1.1. GitOps 의 다양한 정의

 

  • GitOps 는 다양하게 정의 될 수 있습니다.
  1. Weavworks
  • Weavworks 에서는 PR 을 통한 운영을 GitOps 라고 지칭했습니다.

 

  1. GitLab
  • GitLab 에서는 개발 관행 (버전 제어, 협업, 규정 준수, CI/CD) 를 인프라 자동화에 적용하는 것을 GitOps 라고 지칭했습니다.

 

  1. OpenGitOps - 링크
  • GitOpsCon / ArgoCon 을 주최하는 OpenGitOps 에서는 다음 4가지를 GitOps 원칙이라고 정의합니다.

 

 

1) Declarative

 

시스템은 선언형으로 관리되어야 한다.

 

2) Versioned and Immutable

 

Desired State 는 버전 관리가 되는 불변의 저장소에 저장되어야 한다.

 

3) Pulled Automatically

 

Software Agents 는 소스로부터 자동으로 선언된 Desired State 를 적용한다.

 

4) Continuously Reconciled

 

Software Agents 는 지속적으로 현재 시스템을 관찰하고 Desired State 를 적용한다.

 

 

1.2. Kubernetes 와 GitOps

 

Kubernetes 는 구글 엔지니어들이 Borg 란 이름으로 내부 컨테이너 오케스트레이션 시스템을 구축하던 것을 2014년에 오픈소스로 공개하면서 시작되었습니다.

 

현재 Kubernetes 는 매우 유연하고 확장이 용이한 특징을 가지고 플랫폼 구축을 위한 플랫폼이라 불리우며, 컨테이너 생태계의 표준이 되었습니다.

 

출처: https://kubernetes.io/docs/concepts/architecture/

 

Kubernetes 컴포넌트 구성

 

  1. Control Plane - 클러스터 관리 역할
  • API 서버
  • 데이터베이스 (ETCD)
  • 컨트롤러 매니저
  • 스케쥴러
  • 클라우드 컨트롤러 매니저

 

  1. Data Plane - 사용자 워크로드 실행 역할
  • 컨테이너 런타임
  • Kubelet
  • Kube-Proxy

 

 

1.3. Contoller Manager

 

모든 Kubernetes 컴포넌트가 중요하지만, GitOps 개념과 직접적인 연관관계가 있는 것은 컨트롤러 입니다.
컨트롤러의 기본 역할과 개념에 대해 알아보고 추후에 ArgoCD 가 컨트롤러를 어떻게 활용하는 지 알아볼 예정입니다.

 

 

컨트롤러 역할

 

실제 상태 (Live State / Current State) 와 원하는 상태 (Desired State) 가 일치하는 지 관찰하고,

최종 상태에 도달하기 위해 지속적으로 조정하는 것

 

 

컨트롤러 vs 오퍼레이터

  • 컨트롤러 : 쿠버네티스 내부 오브젝트에서 동작
  • 오퍼레이터 : 쿠버네티스와 그 외의 것들까지 동작, 커스텀 리소스(Custom Resource) 를 사용해 수행

 

 

1.4. IaC vs GitOps

 

IaC 와 깃옵스는 비슷하면서도 다른 개념입니다.

 

IaC 와 깃옵스 공통점

 

  • 소스 제어를 통해 상태 저장
  • 스테이징과 프로덕션 환경 간의 불일치 (구성 드리프트) 가 줄어듬

 

 

IaC 와 깃옵스 차이점

 

  • IaC
    • 인프라 변경 사항을 적용하는 오퍼레이터나 컨트롤러가 없음
    • Push 방식 변경 사항 업데이트
      • 파이프라인이나 CI/CD 시스템이 프로덕션 자격 증명을 가져야 함
  • 깃옵스
    • Pull 방식 변경 사항 업데이트 (보안상 우세)
      • 에이전트가 자격 증명 저장하고 신뢰할 수 있는 계정에서 실행
    • 컨트롤러, 오퍼레이터 존재

 

 

IaC 를 깃옵스 방식으로 활용하는 법

 

  • Terraform + Atlantis 함께 사용

 

  • Atlantis : 원격 설정으로 에이전트 실행, 파이프라인이 실행하는 것이 아니라 에이전트가 명령 실행

 

 


 

참고 문서

 

  • 예제로 배우는 ArgoCD

https://www.yes24.com/Product/Goods/125018027

 

  • What is GitOps? - GitLab

https://about.gitlab.com/topics/gitops/

 

  • GitOps Principles - OpenGitOps

https://opengitops.dev/

Contents

포스팅 주소를 복사했습니다