Rook-Ceph 설치 및 배포

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

RSS Feed
마지막 수정일자