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