MSA/Part4. Ch.7 Kubernetes Custom 관리 방법

03. Kubernetes Operator 소개

Engineer-Lee 2023. 2. 8. 21:53
반응형

1. Kubernetes Controller 소개

• Kubernetes Controller는 Object의 선언적인 Spec 기준 원하는 상태(Desire 
  State)를 읽고 Object의 현재 상태(Current State)와 비교해서 처리한 후에
  etcd에서 상태(Status)를 갱신하는 방식으로 동작하는 컴포넌트

 

• CRD를 사용하여 만든 Custom Resource를 이용하여 사용자가 원하는 상태를
  선언하면(etcd에 갱신되면), Custom Controller가 그 상태를 맞추기 위해 동작

 

2. Kubernetes Operator 소개

• Kubernetes Operator는 Custom Resource Definition(CRD)를 기반으로
  애플리케이션 및 컴포넌트를 관리하는 Kubernetes API 확장 개념


• Kubernetes의 워크로드 배포, 실행 등의 자동화 및 수행 방식의 자동화 구현

 

• Kubernetes Controller 개념을 통해 Go언어 기반의 Kubernetes 구현
  소스코드를 수정(빌드/컴파일/배포) 하지 않고 K8s 클러스터의 동작을 확장


• Operator를 작성 후 적용하면 Custom Resource와 CRD에 의한 etcd 변경을 

  감지하고 Kubernetes에 원하는 동작을 구현 가능

 

3. Operator 작성 도구 소개

• Operator를 작성하기 위한 도구로는 KUDO, kubebuilder, Operator Framework가 있음


• Operator 작성 도구를 사용하게 되면 Custom Resource나 Controller를
  작성하는데 필요한 BoilerPlate를 제공, 작성자는 핵심 로직 작성에 집중가능

 

• Operator Framework는 Operator 개발 플로우를 제공하는 Operator SDK와
  Operator의 라이프 사이클을 관리하는 Operator OLM으로 구성


• Operator Lifecycle Manager (OLM)은 Operator의 생애주기를 관리하는
  매니저로, Operator를 설치하고, 업데이트, 백업, 스케일링 등 운영/관리 가능

 

4. Helm vs Operator 비교

Helm과 Operator는 모두 Kubernetes 클러스터의 애플리케이션과 리소스를 관리하는 도구이지만, 이를 위한 접근 방식은 서로 다르다.

Helm은 Kubernetes의 패키지 관리자로, 응용프로그램과 종속성을 정의, 설치 및 관리하는 단순하고 유연한 방법을 제공한다. Helm을 사용하면 애플리케이션을 차트로 패키징하고 설치, 업그레이드 및 구성을 관리할 수 있다. 차트는 응용 프로그램의 구조 및 구성을 정의하는 템플릿 및 메타데이터의 모음이다.

반면에, 오퍼레이터 패턴은 클러스터 내에서 실행되는 사용자 지정 컨트롤러에 응용 프로그램 로직을 캡슐화하여 Kubernetes 클러스터의 복잡한 응용 프로그램을 관리하는 방법이다. 운영자는 필요에 따라 클러스터의 리소스를 변경하여 원하는 애플리케이션 상태를 달성할 책임이 있다. 운영자는 Kubernetes API와 통신하여 리소스를 관리하고 사용자 지정 리소스를 사용하여 응용 프로그램의 상태를 저장하고 관리한다.

결론적으로, Helm은 애플리케이션 관리를 위한 고수준의 도구를 제공하는 반면, Operator 패턴은 복잡한 애플리케이션 관리를 사용자 정의하기 위한 저수준의 도구를 제공합니다. 응용프로그램의 복잡성과 요구사항에 따라 이러한 도구 중 하나가 사용 사례에 더 적합할 수 있다.

 

5. KUDO 소개

• KUDO(Kubernetes Universal Declarative Operator) = Operator 작성 도구


• Yaml 형태의 선언적 명세 작성만으로 손쉽게 Operator를 만들 수 있는 도구 제공


• Operator 라이프 사이클 간의 공통화 및 재사용 할 수 있는 기능 제공

 

반응형