본문 바로가기

OS & network/cloud

CNCF Rook(with Ceph)을 사용하여 OKE 스토리지를 관리

안녕하세요.

테크넷 마스터 김재벌 입니다.

CNCF의 프로젝트로 유명한 Rook을 OCI Kubernets 스토리지 관리에 사용하는 방법에 대한 포스팅이 있어서 간략하게 정리해 보고자 합니다.

 

Kubernetes에서 DB/분석/이벤트스토어 같은 stateful 워크로드는 “안정적·고성능·개발자가 쓰기 쉬운 스토리지”가 핵심 과제 입니다.

OKE(Oracle Kubernetes Engine)는 OCI Block Volume, File Storage, Object Storage와 기본적으로 잘 통합되며, 여기에 Rook + Ceph를 더해 “클러스터 내부(in-cluster) 소프트웨어 정의 스토리지 계층”을 운영하는 방식 입니다.

 


Rook: CNCF 졸업(Graduated) 프로젝트인 Kubernetes Operator로, CRD/컨트롤러를 통해 주로 Ceph 같은 스토리지 시스템을 쿠버네티스 방식으로 관리

Ceph가 제공하는 스토리지 타입: RBD(블록), CephFS(POSIX 공유 파일시스템), RGW(S3 호환 오브젝트)

OKE에서의 구성 개념: 워커 노드에 OCI Block Volume을 붙이고(노드별 디바이스), 이를 Ceph OSD 용량으로 사용해 내구성과 예측 가능한 성능을 확보하는 구조

Rook이 Ceph 구성요소(모니터/매니저/MDS/게이트웨이 등)를 배포·운영하고, Kubernetes가 일반 워크로드처럼 스케줄링/복구를 수행

애플리케이션 관점: 기존처럼 PVC(PersistentVolumeClaim)를 쓰고, 차이는 StorageClass 선택 

Ceph CSI 드라이버가 PVC를 RBD 이미지 또는 CephFS 서브볼륨으로 매핑하며, Rook이 프로비저닝/어태치/마운트/스냅샷/삭제 같은 라이프사이클을 처리

운영자 관점: 정책과 토폴로지를 Rook CRD 및 Helm values로 선언적으로 관리 가능

레퍼런스 셋업 :

cloud-init으로 노드 준비 및 Block Volume 부착 자동화
Helm으로 Rook operator 설치
OSD는 전용 디바이스(예: /dev/sdb, /dev/sdc)만 사용하도록 “디스커버리/선별” 설정
rook-ceph-block StorageClass를 제공하고, 운영 점검용 toolbox 활성화
GitOps/Terraform 워크플로우에 자연스럽게 맞고, 노드+Block Volume 추가로 수평 확장 가능

 

Rook을 OCI 서비스와 함께 사용하는 이유는 무엇일까요?

클라우드 아키텍처를 위한 신뢰할 수 있는 구성 요소로 OCI의 네이티브 스토리지 서비스를 권장합니다. 

Rook은 이러한 서비스를 대체하는 것이 아니라, Kubernetes 플랫폼이 통합된 개발자 경험과 세분화된 애플리케이션 중심 정책을 활용할 때 OKE를 향상시킬 수 있는 **클러스터 내 스토리지 제어 플레인**입니다.

 

“OCI 네이티브 스토리지를 대체하는 게 아니라” Rook은 OKE에 쿠버네티스-퍼스트 스토리지 컨트롤 플레인을 더해 개발자 경험과 정책 제어를 강화하는 보완재라는 포지션

장점:
단일 선언적 레이어로 복제계수/디바이스 클래스/압축/배치 같은 스토리지 동작을 코드로 관리(클러스터 설정과 같은 저장소에서)
CI/CD로 StorageClass·쿼터·풀 정책을 진화시키기 쉬워 온보딩 속도/워크플로우 효율을 높임
개발/테스트 및 멀티테넌시에서 유용한 스냅샷, thin provisioning, 클론 같은 기능
멀티 리전/멀티 환경/멀티 클라우드에서도 동일한 K8s 네이티브 인터페이스를 유지해 일관성과 DR 테스트 용이성을 기대
네이티브 서비스가 더 적합한 경우도 명시: 관리형 NFS 경험이 필요하면 OCI File Storage, 글로벌 버킷 라이프사이클 기능이 중요하면 OCI Object Storage가 더 직접적일 수 있음

결론:

OKE 위에 Rook으로 Ceph를 배포하면 블록/파일/오브젝트를 “한 가지 K8s 방식”으로 제공하고, 정책을 한 곳에서 관리하며, 노드+볼륨 추가로 확장하는 운영 가능

OCI에서 쿠버네티스용 스토리지 패턴을 평가하고 있다면, 작은 OKE 클러스터에서 cloud-init으로 볼륨 붙이고, 최소 Helm values로 Rook 차트를 배포한 뒤 스냅샷/클론을 쓰는 실제 워크로드로 파일럿하는 것을 권장

참고: OKE에서 Rook 전체 인프라를 배포하는 GitHub 리포지토리를 링크로 제공