Computer >> 컴퓨터 >  >> 시스템 >> Linux

쿠버네티스 오퍼레이터(Kubernetes Operator)란? 개념부터 작동 원리까지

쿠버네티스 오퍼레이터(Operator)는 쿠버네티스의 기능을 확장하여 더 복잡한 상태 저장(stateful) 워크로드까지 관리할 수 있게 해주는 애플리케이션 배포 방식입니다. 대표적인 예로 데이터베이스, 쿼럼(quorum) 메커니즘을 사용하는 분산 시스템, 한 번에 손쉽게 재구성하기 어려운 애플리케이션 등을 들 수 있습니다. 상태 비저장(stateless) 워크로드의 경우에도 오퍼레이터는 쿠버네티스 상에서 애플리케이션에 대한 일관된 정의를 수립하는 데 기여합니다.

오퍼레이터가 하는 일

쿠버네티스 오퍼레이터는 그간 축적된 모범 사례와 운영 절차를 코드화하여, 쿠버네티스 위에서 실행되는 소프트웨어로 구현합니다. 기존에는 클러스터 외부에서 스크립트와 SRE(사이트 신뢰성 엔지니어)가 관리하던 작업들이 이제는 관리 대상 워크로드와 함께 클러스터 안에서 실행되는 사용자 정의 쿠버네티스 확장 기능에 의해 제어됩니다.

오퍼레이터가 수행할 수 있는 주요 기능은 다음과 같습니다.

  • 복잡한 설치 및 업데이트 절차의 자동화
  • 백업, 복원, 페일오버(failover), 페일백(failback) 등 라이프사이클 이벤트 처리
  • 메트릭 기반의 자동 스케일링

쿠버네티스 개발의 상당 부분이 상태 비저장형 프런트엔드, API 중심 애플리케이션에 집중되어 있지만, 오퍼레이터를 활용하면 스택의 나머지 부분까지 쿠버네티스 환경으로 통합할 수 있습니다. 쿠버네티스가 IT 및 엔지니어링 부서의 핵심 이식성 기반으로 자리 잡으면서 설정과 관리가 크게 간소화됩니다. 아울러 오퍼레이터는 구성 드리프트(configuration drift)를 자동으로 복구하여 가동 시간을 높이고 운영 인력의 부담을 줄여줍니다. 이러한 방식은 쿠버네티스 자체의 확장 메커니즘을 기반으로 하기 때문에 특정 플랫폼에 종속되지 않으며, 쿠버네티스 커뮤니티가 주도하는 개방적인 생태계 위에서 발전하고 있습니다.

쿠버네티스 오퍼레이터의 작동 원리

오퍼레이터는 쿠버네티스 마스터 API에 연결하여 관련 이벤트를 지속적으로 감시(watch)합니다. 오퍼레이터는 하나의 사용자 정의 쿠버네티스 컨트롤러로서, 클러스터에 고유한 오브젝트 타입을 새로 도입하고 의도한 상태(desired state)와 실제 상태(actual state)를 끊임없이 비교합니다. 여기서 의도한 상태는 YAML로 선언되며, 쿠버네티스 오브젝트를 생성하는 사용자가 이를 정의합니다.

오퍼레이터는 이러한 CRD(Custom Resource Definition)와 이벤트를 감시하다가, 해당 오브젝트가 생성·업데이트·삭제될 때마다 조정 루프(reconcile loop)를 실행합니다. 오퍼레이터 자체는 클러스터에서 쿠버네티스 파드(Pod) 형태로 구동됩니다.

오퍼레이터는 클러스터 관리자가 설치하지만, 궁극적으로는 최종 사용자를 돕기 위해 설계됩니다. 쿠버네티스와의 긴밀한 통합 덕분에 사용자는 kubectl 같은 기존 도구를 그대로 활용하면서, 복잡한 소프트웨어도 파드나 디플로이먼트 같은 기본 내장 리소스를 다루는 것과 동일한 방식으로 손쉽게 관리할 수 있습니다.