-
KubeBuilder와 Operator SDK의 관계Kubernetes 2025. 3. 25. 09:26728x90
Kubebuilder와 Operator SDK는 둘 다 Kubernetes Operator를 Go 언어로 개발하기 위한 프레임워크이지만,
역사적 배경과 구조적으로 다르면서도 현재는 거의 “합쳐졌다”고 볼 수 있어요.
항목 Kubebuilder Operator SDK 만든 곳 Kubernetes SIG API Machinery (공식) Red Hat (Operator Framework 프로젝트) 내부 구조 controller-runtime 기반 초기엔 다름, 현재는 Kubebuilder를 내부에 사용 현재 관계 독립 CLI + scaffolding 툴 Kubebuilder 위에 Operator 관련 기능을 추가한 도구 Kubebuilder란?
• Kubernetes 공식 SIG에서 개발한 Operator scaffolding 도구
• 내부적으로 controller-runtime을 사용
• CRD 생성, controller 작성, webhook 등 Operator 개발 표준을 잘 따름
• Go 언어 기반
📦 핵심 구성:
• controller-runtime
• controller-tools
• code-gen
Operator SDK란?
• Red Hat 주도 Operator Framework의 일부
• 초기에 Go 외에도 Helm, Ansible 기반 Operator 지원이 목적
• 초기에는 자체 scaffolding 로직이 있었지만,
• 현재는 내부적으로 Kubebuilder를 통합해서 사용
-> 즉, “Go 기반 Operator를 만들 때는 사실상 Kubebuilder를 사용”한다고 보면 됩니다.
항목 Kubebuilder Operator SDK Go 기반 개발 ✅ ✅ (내부적으로 Kubebuilder 사용) Helm 기반 Operator ❌ ✅ Ansible 기반 Operator ❌ ✅ OLM(CSV) 생성 ❌ (직접 추가 필요) ✅ 내장됨 사용 편의성 Kubernetes-native OLM 통합에 강점 커스터마이징 자유도 더 직접적 약간 래핑되어 있음 상황 추천 순수 Go 기반 Operator 개발 ✅ Kubebuilder (가볍고 직관적) Operator Lifecycle Manager(OLM) 연동, OperatorHub 배포 예정 ✅ Operator SDK Helm/Ansible 기반 Operator 원함 ✅ Operator SDK 교육/연습 목적, 표준 도구 ✅ Kubebuilder 추천 공통점 둘 다 Kubernetes Operator 개발을 위한 도구 차이점 Kubebuilder는 Kubernetes SIG가 만든 공식 도구Operator SDK는 Red Hat이 만든 다기능 Operator 개발 도구 현재 관계 Operator SDK가 Kubebuilder를 내부에 포함해 사용 (Go 기반에 한함) 728x90'Kubernetes' 카테고리의 다른 글
Operator에서 idempotency(멱등성)를 보장하는 방법 (0) 2025.03.26 CRD를 생성하면 벌어지는 일들 (0) 2025.03.25 client-go 와 controller-runtime의 관계 (0) 2025.03.25 calico vs cilium (0) 2025.03.25 Kubernetes Network 구성 (0) 2025.03.25