[k8s] 오퍼레이터란

Seunghyun Moon·2023년 4월 27일
0

Kubernetes

목록 보기
1/3

Definition

Operators are software extensions to Kubernetes that make use of custom resources to manage applications and their components. Operators follow Kubernetes principles, notably the control loop.

https://kubernetes.io/docs/concepts/extend-kubernetes/operator/

공식문서에 따르면 Operator는 Custom Resource를 이용하여 어플리케이션과 컴포넌트를 관리하는 소프트웨어 익스텐션이다.

간단히 이야기하자면, 쿠버네티스에서 제공하는 리소스 이외에 사용자가 새롭게 정의한 리소스를 관리해주는 패턴이라고 이해하면된다.

감이 잘 잡히지 않으니, 아래 쿠버네티스와 오퍼레이터 아키텍처를 참고하자.

[Operator Flow]

[용어정리]

  • CRD Custom Resource Definition : 오퍼레이터로 사용할 상태 관리용 객체들의 Spec 을 정의
  • CR Custom Resource : CRD의 Spec 를 지키는 객체들의 실제 상태 데이터 조합
  • CC Custom Controller : CR의 상태를 기준으로 현재의 상태를 규정한 상태로 처리하기 위한 컨트롤 루프

Operator 동작흐름을 보면, 기존에 Kuberentes에서 Resource가 Controller에 의해 관리되던 로직이 Custom Resource가 Custom Controller에 의해 관리된다고 이해하면 된다.(Controller는 API Server를 통해 Resource가 정의된 스펙과 같은 상태인지 체크를 하고, 알맞게 상태를 업데이트 또는 모니터링을 하는 역할)

실제로 현업에서 Kubernetes를 모니터링하기 위해서 Prometheus Operator를 사용중인데, 처음에는 단순히 helm으로 패키징된 것이라고만 알았지, Operator Pattern이 사용되고 있다는건 인지하지 못했다.


Prometheus Operator

helm chart로 패키징된 Promethues Oprator이다. 직접 들어가보면 crds, psp, adminssion-webhook 등 엄청 다양한 리소스가 존재한다.


Operator를 직접 만드는 일은 생각만해도 끔직하다. 그래서 Operator Framework, KUD와 같은 툴을 사용하는게 일반적이다.(난 직접 만들일은 없을 것 같다...)


Operator Hub

Dockerhub 처럼 Official한 Operator들을 모아놓은 곳도 있다. 여기서 필요한 오퍼레이터를 검색하고 가이드를 참고하여 사용할 수 있다.

https://operatorhub.io


Operator를 쓰는 이유

직접 리소스를 관리해주고, 편하게 설치가 가능한 특징 때문에 Operator는 여러 곳에 쓰이고 있는 것 같다.
지금 사용중인 모니터링 툴인 Grafana-Prometheus 도 직접 Kubernetes 위에 설치하고 운영하려면 엄청난 공수가 들어갈 것이다.

[Operator를 설치한 후 나오는 리소스]

이렇게 많은 리소스를 한 번에 관리해주는게 바로 Operator라는 것이다!


참고 출처

https://velog.io/@kubernetes/Kubernetes-Operator-%EB%9E%80

profile
I live fullest

0개의 댓글