Learning
토픽 32 / 107·컨테이너 오케스트레이션

Kubernetes CRD/Operator (Custom Resource Definition/Operator Pattern)

Kubernetes CRD/Operator (Custom Resource Definition/Operator Pattern)

CRD는 Kubernetes API를 확장하여 사용자 정의 리소스를 선언적으로 관리할 수 있게 하는 메커니즘이며, Operator는 CRD와 Custom Controller를 결합하여 복잡한 애플리케이션의 배포, 구성, 운영을 자동화하는 소프트웨어 패턴

목적: Kubernetes 확장성, 애플리케이션 운영 자동화, 도메인 지식 코드화, 선언적 관리, Day 2 Operations 자동화

특징: 선언적 API 확장, 컨트롤 루프 기반, 도메인 로직 캡슐화, kubectl 통합

구성요소

  • CRD(Custom Resource Definition): 새로운 리소스 타입 정의, OpenAPI 스키마, 버저닝
  • CR(Custom Resource): CRD 기반 인스턴스, 사용자가 생성하는 실제 리소스
  • Controller: CR 감시, Desired State → Actual State 동기화, Reconciliation Loop
  • Operator: CRD + Controller + 도메인 로직, 운영 자동화

Operator 패턴 동작: ① CR 생성/수정 → ② Controller가 Watch → ③ Reconcile 함수 실행 → ④ 리소스 생성/업데이트 → ⑤ Status 업데이트

개발 프레임워크: Operator SDK(Go/Ansible/Helm), Kubebuilder(Go), KUDO, Metacontroller

Operator Capability Level: Level 1(Basic Install) → Level 2(Seamless Upgrades) → Level 3(Full Lifecycle) → Level 4(Deep Insights) → Level 5(Auto Pilot)

장점: 운영 자동화, 선언적 관리, 도메인 지식 코드화, 확장성, 일관성

단점: 개발 복잡도, 학습 곡선, 디버깅 어려움, 버전 관리

적용사례: 데이터베이스 Operator(PostgreSQL, MySQL), Kafka Operator, Prometheus Operator, Cert-Manager

비교: CRD(리소스 정의) vs Operator(CRD+운영 자동화) vs Helm(패키지 관리)

연관: Kubernetes, Controller, 선언적 관리, GitOps, StatefulSet