Rook-Ceph 설치 및 배포
3️⃣ Rook-Ceph 설치 및 배포 (실습)
Rook-Ceph는 클라우드 환경뿐 아니라 베어메탈, Minikube, Kind 등 다양한 Kubernetes 환경에서 설치 가능합니다.
이번 실습에서는 Kind (Kubernetes in Docker) 기반의 간단한 테스트 클러스터 또는 베어메탈 환경을 기준으로 설명합니다.
1. Lab 구성 소개 (Kind / Minikube / Bare-metal)
🧪 Kind 기반 테스트 클러스터 예시
kind create cluster --name rook-ceph --config kind-config.yaml
📄 kind-config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
최소 3 노드를 구성하는 것이 좋습니다 (MON 및 OSD 분산을 위해)
📌 또는 베어메탈 환경 (Ubuntu/CentOS 등)에서도 동일하게 진행 가능하며, 각 노드에 여유 디스크가 필요합니다.
2. Ceph Prerequisites: 노드, 디스크 준비
Rook-Ceph는 다음과 같은 조건을 요구합니다:
- 노드 최소 3개 (Ceph MON Quorum 확보)
- 각 노드에 하나 이상의 빈 디스크 (block device) 존재
- 스토리지 디바이스는
/dev/sdX
,/dev/nvmeXn1
등의 형태
lsblk
예시 출력:
NAME SIZE TYPE MOUNTPOINT
sda 100G disk
└─sda1 100G part /
sdb 500G disk # <- Ceph OSD용 디스크
✅ 이 빈 디스크가 OSD로 자동 등록되어 Ceph의 데이터 저장소가 됩니다.
3. Rook Operator 설치 (Helm vs Manifest)
✅ 방법 1: Helm 설치 (권장)
helm repo add rook-release https://charts.rook.io/release
helm install rook-ceph rook-release/rook-ceph --namespace rook-ceph --create-namespace
✅ 방법 2: Manifest 설치
git clone --single-branch --branch v1.14.0 https://github.com/rook/rook.git
cd rook/deploy/examples
kubectl create -f common.yaml
kubectl create -f crds.yaml
kubectl create -f operator.yaml
📌 설치 후 Operator가 정상적으로 올라왔는지 확인합니다:
kubectl -n rook-ceph get pods -l app=rook-ceph-operator
4. Ceph Cluster CR 배포 및 초기화
Rook Operator 설치 후, Ceph 클러스터를 생성해야 합니다.
다음은 기본적인 CephCluster
Custom Resource 예시입니다:
apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
name: rook-ceph
namespace: rook-ceph
spec:
cephVersion:
image: quay.io/ceph/ceph:v18.2.0
dataDirHostPath: /var/lib/rook
mon:
count: 3
allowMultiplePerNode: false
storage:
useAllNodes: true
useAllDevices: true
배포 명령:
kubectl apply -f cluster.yaml
📈 클러스터 초기화 중에는 MON, MGR, OSD 등이 자동으로 생성됩니다:
kubectl get pods -n rook-ceph
5. Ceph Dashboard 설정 및 접속
Rook은 Ceph의 대시보드를 자동으로 활성화할 수 있습니다.
📄 대시보드 활성화 설정:
dashboard:
enabled: true
🔐 Admin 비밀번호 가져오기:
kubectl get secret rook-ceph-dashboard-password -n rook-ceph -o jsonpath="{['data']['password']}" | base64 --decode
🌐 포트포워딩으로 접속:
kubectl -n rook-ceph port-forward svc/rook-ceph-mgr-dashboard 7000:7000
브라우저 접속: http://localhost:7000
🖼️ 로그인 화면 예시:
Username: admin
Password: (위 명령으로 획득한 비밀번호)
🖼️ Rook-Ceph 설치 흐름 요약도
+--------------------+
| Install Helm |
+---------+----------+
|
v
+----------------------------+
| Deploy Rook-Ceph Operator |
+----------------------------+
|
v
+------------------------------+
| Apply CephCluster CR (YAML) |
+------------------------------+
|
v
+-------------------------------+
| Ceph Components (MON, MGR...)|
+-------------------------------+
|
v
+--------------------------+
| Access Ceph Dashboard |
+--------------------------+
💡 실습 꿀팁:
- Operator 로그 확인:
kubectl logs -n rook-ceph -l app=rook-ceph-operator
- 클러스터 상태 확인:
kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- ceph status
마지막 수정일자