Rook Custom Resource 이해

Rook Custom Resource 이해

1️⃣2️⃣ 고급 운영: Rook Custom Resource 이해

Rook-Ceph는 Kubernetes 네이티브 방식으로 Ceph 스토리지를 관리하기 위해 다양한 **Custom Resource Definition(CRD)**를 제공합니다.
이 CRD를 잘 활용하면 풀 관리, 파일시스템 구성, 오브젝트 스토어 생성 및 사용자 관리까지 모두 YAML로 선언적 운영이 가능합니다.


1. CephCluster, CephBlockPool, CephFilesystem, CephObjectStore CRD

📦 1.1 CephCluster: Ceph 전체 클러스터 정의

apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
  name: rook-ceph
spec:
  cephVersion:
    image: quay.io/ceph/ceph:v17.2.6
  dataDirHostPath: /var/lib/rook
  mon:
    count: 3
  storage:
    useAllNodes: true
    useAllDevices: true
  • Ceph MON, MGR, OSD 등 모든 구성 요소 포함
  • 운영의 시작점

🧱 1.2 CephBlockPool: RBD 이미지가 저장될 Pool 정의

apiVersion: ceph.rook.io/v1
kind: CephBlockPool
metadata:
  name: replica3-pool
spec:
  failureDomain: host
  replicated:
    size: 3
  • RBD 기반 PVC에 실제로 사용될 저장소 풀
  • StorageClass와 연동 가능

📁 1.3 CephFilesystem: CephFS 생성용 리소스

apiVersion: ceph.rook.io/v1
kind: CephFilesystem
metadata:
  name: myfs
spec:
  metadataPool:
    replicated:
      size: 3
  dataPools:
    - replicated:
        size: 3
  metadataServer:
    activeCount: 1
  • POSIX 파일시스템 제공
  • CephFS는 MDS(Metadata Server)를 포함

🌐 1.4 CephObjectStore: S3 호환 오브젝트 스토어 생성

apiVersion: ceph.rook.io/v1
kind: CephObjectStore
metadata:
  name: my-store
spec:
  gateway:
    type: s3
    port: 80
    securePort: 443
    instances: 1
  • S3 호환 API 제공 (RGW)
  • CephObjectStoreUser와 함께 사용

2. CephObjectStoreUser, CephFilesystemSubVolumeGroup 등 활용

👤 2.1 CephObjectStoreUser: RGW 사용자 정의

apiVersion: ceph.rook.io/v1
kind: CephObjectStoreUser
metadata:
  name: s3-user
spec:
  store: my-store
  displayName: "Developer"
# Access Key 확인
kubectl get cephobjectstoreuser s3-user -n rook-ceph -o yaml
  • 자동으로 Access Key / Secret 생성
  • S3 미니오/Harbor 연동 시 사용

🧩 2.2 CephFilesystemSubVolumeGroup: CephFS 내 하위 볼륨 그룹

apiVersion: ceph.rook.io/v1
kind: CephFilesystemSubVolumeGroup
metadata:
  name: dev-team
spec:
  filesystemName: myfs
  • CephFS의 Namespace 분리 전략에 사용
  • 여러 팀 간 디렉토리/권한 분리 가능

3. Rook-Ceph의 CRD 활용 자동화 전략

🧰 GitOps 전략 + CRD 조합

Git에 Ceph CRD를 선언해두고 ArgoCD 또는 Flux를 통해 배포/복원 자동화

# argo-cd-app.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: rook-ceph-cluster
spec:
  source:
    repoURL: https://git.company.com/storage/rook-ceph-gitops
    path: clusters/prod
  destination:
    namespace: rook-ceph
    server: https://kubernetes.default.svc
  syncPolicy:
    automated: {}
  • 클러스터 재생성 시 CephCluster ~ StorageClass까지 한번에 복구 가능

📌 실무 예시 아키텍처

graph LR
  A[CephCluster]
  B[CephBlockPool] --> C[StorageClass] --> D[PVC]
  E[CephFilesystem] --> F[CephFilesystemSubVolumeGroup] --> G[CephFS Mount]
  H[CephObjectStore] --> I[CephObjectStoreUser] --> J[S3 Client]

  A --> B
  A --> E
  A --> H
  • 모든 구성은 선언형 YAML로 재현 가능
  • 운영 자동화와 백업/복구에 강력한 힘 발휘

🔎 실전 운영 팁

CRD 역할 실전 팁
CephCluster 전체 클러스터 제어 OSD 수명주기 자동 반영
CephBlockPool RBD용 Pool 정의 풀별 Replica 설정 필수
CephFilesystem CephFS 생성 여러 팀에 SubVolumeGroup으로 분리
CephObjectStore S3 API 제공 MinIO, Harbor, Velero 등과 연동
CephObjectStoreUser 사용자 계정 관리 YAML로 키 생성 및 ACL 통합 관리
CephFilesystemSubVolumeGroup CephFS 서브 디렉토리 그룹 POSIX 권한 및 할당량 설정 가능

CRD를 모두 GitOps 구조로 관리하면, Rook-Ceph 클러스터 운영은 인프라 as Code의 완성 단계로 진입합니다.


RSS Feed
마지막 수정일자