상태: 초안 (2026-10-29), 차트 원문 기준, 실측 없음. 값은 모두 Rook
v1.21.1태그가 가리키는 커밋09d2f0d8d883b70b30de796c4390371be725ff3b의deploy/charts/rook-ceph/values.yaml과deploy/charts/rook-ceph-cluster/values.yaml에서 직접 읽었고, 표의 줄 번호는 그 파일의 줄입니다. 자원 합계와 용량은 values 와 Ceph 문서의 기본값으로 계산한 값이고 재지 않았습니다. TT Lab 실습 클러스터(VM 세 대, VM 마다 빈 디스크 17GiB)에서 실제로 뜬 파드와 용량은 4편에서 확인합니다. 작성 규칙: 실측 데이터가 기본이고, 못 잰 것은 「미실측」, 원문에서 찾지 못한 것은 「미확인」으로 표시합니다.
목차
- 1. 차트는 셋이고, 순서가 있다
- 2. rook-ceph(operator 차트)의 중요한 값
- 3. rook-ceph-cluster 의 바깥 값
- 4. cephClusterSpec: CephCluster 그 자체
- 5. 블록 풀, 파일시스템, 오브젝트 스토어의 기본값
- 6. 기본값 그대로 쓰면 위험한 곳
- 7. 실습 클러스터에서 메모리와 CPU 를 줄일 때
- 8. 정리
- 참고
1. 차트는 셋이고, 순서가 있다
Rook 문서(Helm Charts Overview)는 v1.21 의 차트를 셋으로 소개합니다. 흔히 「rook-ceph 와 rook-ceph-cluster 두 개를 깔면 된다」 고 알고 있지만, v1.20 부터 가운데에 하나가 더 생겼습니다.
| 순서 | 차트 | 어디서 | 만드는 것 |
|---|---|---|---|
| 1 | rook-ceph |
Rook 저장소 | Rook operator Deployment, CRD, RBAC, 하위 차트 ceph-csi-operator 1.1.0 |
| 2 | ceph-csi-drivers |
ceph-csi-operator 의 Helm 저장소, Rook 이 맞춘 values 로 | OperatorConfig, RBD·CephFS Driver CR, 드라이버 파드의 RBAC |
| 3 | rook-ceph-cluster |
Rook 저장소 | CephCluster, 블록 풀·파일시스템·오브젝트 스토어 CR, 그 StorageClass, toolbox(기본 꺼짐) |
2번을 빠뜨리면 PVC 가 묶이지 않습니다. 업그레이드 문서는 이 차트가 없으면 서비스 계정이 없어 CSI 드라이버가 실패 상태가 된다고 적고,
operator 차트 문서의 설치 절차도 「operator 차트 → CSI 드라이버 차트 → 클러스터」 순서입니다
(Ceph Operator Helm Chart,
Rook Upgrades).
ceph-csi-drivers 는 기본값만으로 설치하면 드라이버가 실패하므로, Rook 저장소의
deploy/charts/ceph-csi-drivers/values.yaml을
반드시 함께 넣으라고 문서가 강조합니다. 그 파일이 드라이버 이름을 rook-ceph.rbd.csi.ceph.com 처럼 operator 네임스페이스에 맞춥니다.
helm repo add rook-release https://charts.rook.io/release
helm install --create-namespace -n rook-ceph rook-ceph rook-release/rook-ceph -f operator-values.yaml
helm repo add ceph-csi-operator https://ceph.github.io/ceph-csi-operator
helm install -n rook-ceph ceph-csi-drivers ceph-csi-operator/ceph-csi-drivers \
-f https://raw.githubusercontent.com/rook/rook/v1.21.1/deploy/charts/ceph-csi-drivers/values.yaml
helm install -n rook-ceph rook-ceph-cluster rook-release/rook-ceph-cluster \
--set operatorNamespace=rook-ceph -f cluster-values.yaml
명령은 문서의 예를 그대로 옮긴 것입니다. 클러스터 차트 문서는 values 전체를 복사하지 말고 바꿀 값만 담은 파일을 만들라고 권합니다.
참고로 태그의 Chart.yaml 에는 두 차트 모두 version: 0.0.1 이 적혀 있어서, 배포되는 차트의 판 번호는 릴리스 과정에서 붙는 것으로
보입니다(미확인). v1.21 부터 OCI 차트 태그에는 v 가 붙지 않습니다.
2. rook-ceph(operator 차트)의 중요한 값
파일 전체가 245줄로 짧습니다 (values.yaml).
| 키 | 기본값 | 뜻과 메모 | 줄 |
|---|---|---|---|
image.tag |
v1.21.1 |
operator 이미지 docker.io/rook/ceph |
L10 |
crds.enabled |
true |
차트가 CRD 를 만들고 갱신한다. 처음 설치할 때만 정하라는 경고: 나중에 끄면 클러스터가 파괴될 수 있다 | L21 |
resources |
요청 CPU 200m·메모리 128Mi, 상한 메모리 512Mi | operator 파드 자원 | L24 |
unreachableNodeTolerationSeconds |
5 |
노드가 닿지 않을 때 operator 파드를 옮기기까지. 쿠버네티스 기본 5분 대신 5초 | L42 |
currentNamespaceOnly |
false |
자기 네임스페이스의 CephCluster 만 볼지 | L45 |
logLevel |
INFO |
ERROR·WARNING·INFO·DEBUG |
L58 |
containerSecurityContext |
runAsNonRoot, UID 2016, capability 전부 제거 | operator 컨테이너의 보안 컨텍스트 | L71 |
allowLoopDevices |
false |
시험용 클러스터에서 loop 장치를 OSD 로 쓸지 | L78 |
monRunAsRoot |
false |
mon 파드를 root 로 돌릴지 | L81 |
deleteUnusedCrushRules |
true |
mgr 이 뜬 뒤 쓰지 않는 자동 생성 CRUSH 규칙을 지운다 | L84 |
csi.installCsiOperator |
true |
ceph-csi-operator 하위 차트를 설치한다 | L95 |
csi.cephcsi 등 이미지 7종 |
모두 빈 값 | 비우면 ceph-csi-operator 의 내장 이미지를 쓴다. 바꿀 때만 저장소와 태그를 적는다 | L102 |
csi.serviceMonitor.enabled |
false(켜면 5초 간격) |
CSI 지표용 ServiceMonitor | L144 |
enableDiscoveryDaemon |
false(간격 60m) |
노드의 새 디스크를 주기적으로 찾는 데몬 | L156 |
cephCommandsTimeoutSeconds |
"15" |
operator 가 부르는 ceph 명령의 타임아웃(초) | L161 |
scaleDownOperator |
false |
GitOps 로 배포할 때 operator 를 0으로 줄여 손으로 정비하기 위한 스위치 | L169 |
enforceHostNetwork |
false |
모든 Rook 파드를 호스트 네트워크로(CNI 가 없는 환경) | L213 |
disableDeviceHotplug |
false |
새 장치가 보이면 자동으로 OSD 로 만드는 동작을 끌지 | L216 |
enableOBCWatchOperatorNamespace |
true |
OBC 프로비저너가 operator 네임스페이스를 볼지 | L229 |
obcAllowAdditionalConfigFields |
"maxObjects,maxSize" |
OBC 사용자가 정할 수 있는 추가 필드. 나머지(버킷 정책·수명 주기·소유자 등)는 위험하다고 주석이 경고 | L240 |
monitoring.enabled |
false |
켜면 operator 가 ServiceMonitor 를 만들 RBAC 를 받는다. Prometheus 가 먼저 있어야 한다 | L245 |
CSI 설정은 대부분 이 차트를 떠났습니다. 예전에는 이 차트의 csi 아래에서 provisioner 복제 수, kubelet 경로, 드라이버별 자원 같은
값을 정했지만, 업그레이드 문서는 이제 그런 값을 ceph-csi-drivers 차트 설정에서 찾으라고 안내합니다. 이 차트에 남은 csi 는 하위
차트를 설치할지와 이미지 덮어쓰기, ServiceMonitor 정도입니다. ceph-csi-operator 하위 차트 자체의 설정은 values 의
ceph-csi-operator 절(L86)에 적습니다.
3. rook-ceph-cluster 의 바깥 값
여기부터는 844줄짜리 클러스터 차트입니다
(values.yaml).
cephClusterSpec 바깥에 있는 값부터 봅니다.
| 키 | 기본값 | 뜻과 메모 | 줄 |
|---|---|---|---|
operatorNamespace |
rook-ceph |
operator 가 있는 네임스페이스. StorageClass 의 provisioner 이름 앞부분이 된다 | L6 |
configOverride |
없음 | ceph.conf 에 덧붙일 내용 | L16 |
toolbox.enabled |
false |
rook-ceph-tools Deployment. 이미지는 Ceph 이미지와 같다. 요청 128Mi·상한 1Gi |
L26 |
monitoring.enabled |
false |
Prometheus 연동. metricsDisabled: false 라 mgr 의 prometheus 모듈과 exporter 는 기본으로 켜진다 |
L72 |
monitoring.createPrometheusRules |
false |
Ceph 경보 규칙(PrometheusRule)을 만들지 | L76 |
cephImage |
quay.io/ceph/ceph:v20.2.4, allowUnsupported: false |
Ceph Tentacle. 주석은 운영에서는 v20.2.4-20260818 같은 날짜 붙은 태그로 고정하라고 권한다 |
L124 |
ingress.dashboard, route.dashboard |
비어 있음 | 대시보드를 Ingress 나 HTTPRoute 로 내보낼 때 | L475 |
cephFileSystemVolumeSnapshotClass, cephBlockPoolsVolumeSnapshotClass |
enabled: false |
스냅샷 클래스. 쓰려면 켠다 | L642 |
csiDriverNamePrefix |
비어 있음 | 비우면 operator 네임스페이스가 드라이버 이름 앞부분 | L844 |
4. cephClusterSpec: CephCluster 그 자체
cephClusterSpec 은 CephCluster CR 의 spec 에 그대로 들어갑니다. 클러스터 차트 문서는 이 기본값이 「예시일 뿐, 여러분의 클러스터에
맞을 가능성은 낮다」 고 적습니다.
| 키 | 기본값 | 뜻과 메모 | 줄 |
|---|---|---|---|
dataDirHostPath |
/var/lib/rook |
mon 데이터와 설정을 두는 호스트 경로. 다시 설치할 때 이 디렉터리를 지우지 않으면 새 클러스터에서 mon 이 뜨지 않는다 | L150 |
skipUpgradeChecks |
false |
업그레이드 전 검사를 건너뛸지 | L156 |
continueUpgradeAfterChecksEvenIfNotHealthy |
false |
PG 가 깨끗하지 않아도 계속할지 | L159 |
waitTimeoutForHealthyOSDInMinutes |
10 |
OSD 하나를 멈춰도 되는 상태가 되기를 기다리는 시간 | L166 |
upgradeOSDRequiresHealthyPGs |
false |
PG 가 건강해야 OSD 업그레이드를 시작할지 | L171 |
security.cephx.csi.keyType |
aes |
주석: 노드 커널이 7.0 미만이면 필요 | L176 |
mon.count |
3 |
mon 수. 문서상 1에서 9, 홀수 권장 | L181 |
mon.allowMultiplePerNode |
false |
한 노드에 mon 여럿. 데이터 손실을 감수하는 시험 환경에서만 | L184 |
mgr.count |
2 |
하나는 active, 하나는 standby. 2면 mgr 사이드카도 붙는다 | L190 |
mgr.modules |
rook 모듈 꺼짐 |
rook mgr 모듈은 권하지 않는다고 주석에 적혀 있다 | L196 |
dashboard.enabled·ssl |
true·true |
대시보드 켜짐, 인증서를 주지 않으면 자체 서명 인증서 | L201 |
network.connections.encryption |
false |
전송 암호화. 켜려면 커널 5.11 이상 | L223 |
network.connections.compression |
false |
전송 압축 | L227 |
network.connections.requireMsgr2 |
true |
msgr v1 포트(6789)를 닫고 v2(3300)만. 커널 5.11 이상 필요 | L231 |
crashCollector.disable |
false |
데몬 크래시 덤프 수집기(노드마다 파드) | L253 |
logCollector |
켜짐, 매일, 최대 500M | 데몬마다 로그 파일 회전 사이드카 | L260 |
cleanupPolicy.confirmation |
"" |
2편 7절. 지울 때만 yes-really-destroy-data |
L271 |
cleanupPolicy.sanitizeDisks |
quick·zero·1회 |
디스크 닦는 방식 | L277 |
removeOSDsIfOutAndSafeToRemove |
false |
out 이고 지워도 안전한 OSD 를 자동으로 뺄지 | L409 |
priorityClassNames |
mon·osd system-node-critical, mgr system-cluster-critical |
자원이 모자랄 때 먼저 쫓겨나지 않게 | L412 |
storage.useAllNodes |
true |
모든 노드를 저장 노드로 | L418 |
storage.useAllDevices |
true |
쓸 수 있는 모든 장치를 OSD 로 | L419 |
storage.deviceFilter·nodes |
주석 처리 | 장치 이름 정규식, 노드별 장치 목록 | L420 |
disruptionManagement.managePodBudgets |
true |
OSD·mon·RGW·MDS 의 PodDisruptionBudget 을 operator 가 관리 | L446 |
disruptionManagement.osdMaintenanceTimeout |
30 |
드레인 중인 장애 단위를 noout 으로 붙잡아 두는 시간(분) | L449 |
healthCheck.daemonHealth |
mon 45s, osd 60s, status 60s | 검사 간격. mon 의 timeout 은 적혀 있지 않아 코드 기본 10분(2편)이 쓰인다 |
L453 |
자원 요청(resources)
cephClusterSpec.resources(L340)의 기본값입니다. Rook 문서는 「너무 낮으면 경고만 찍고 그대로 띄운다」 고 하고, 그 기준인 권장
최솟값도 적어 둡니다(CephCluster CRD).
소스로 보면 이 검사는 상한(limit) 을 기준으로 하고, 상한이 요청보다 작으면 오류로 봅니다
(spec.go#L486-L520).
| 대상 | 요청 CPU | 요청 메모리 | 상한 메모리 | Rook 권장 최소 | 줄 |
|---|---|---|---|---|---|
| mgr | 500m | 512Mi | 1Gi | 512MB | L341 |
| mon | 1000m | 1Gi | 2Gi | 1024MB | L347 |
| osd | 1000m | 4Gi | 4Gi | 2048MB | L353 |
| prepareosd | 500m | 50Mi | 없음(두지 말라고 권함) | 상한 없음 | L359 |
| mgr-sidecar | 100m | 40Mi | 100Mi | 상한 100MB·요청 40MB | L371 |
| crashcollector | 100m | 60Mi | 60Mi | 60MB | L377 |
| logcollector | 100m | 100Mi | 1Gi | 미확인 | L383 |
| cleanup | 500m | 100Mi | 1Gi | 미확인 | L389 |
| exporter | 50m | 50Mi | 128Mi | 상한 128MB·요청 50MB | L395 |
| cmd-reporter | 500m | 100Mi | 1Gi | 미확인 | L401 |
OSD 의 메모리를 적으면 Rook 이 Ceph 의 osd_memory_target 을 같은 값으로 맞춘다고 문서가 적습니다. 1편에서 본 대로 이 값의 Ceph 기본이
4Gi 이므로, 차트 기본값(4Gi)은 Ceph 기본과 같습니다. MDS 와 RGW 의 자원은 여기가 아니라 각자의 절에 있습니다(5절).
5. 블록 풀, 파일시스템, 오브젝트 스토어의 기본값
클러스터 차트는 기본으로 세 가지를 하나씩 만들고 각각에 StorageClass 를 붙입니다. 이 StorageClass 는 operator 가 아니라 차트 템플릿이 만듭니다(2편 9절).
cephBlockPools: ceph-blockpool 과 StorageClass ceph-block
| 키 | 기본값 | 메모 | 줄 |
|---|---|---|---|
spec.failureDomain |
host |
사본마다 다른 호스트 | L520 |
spec.replicated.size |
3 |
세 벌 | L522 |
storageClass.isDefault |
true |
클러스터의 기본 StorageClass 가 된다 | L531 |
storageClass.reclaimPolicy |
Delete |
PVC 를 지우면 RBD 이미지도 지운다 | L532 |
storageClass.allowVolumeExpansion |
true |
볼륨 확장 허용 | L533 |
storageClass.volumeBindingMode |
Immediate |
PVC 가 생기자마자 만든다 | L534 |
parameters.imageFormat |
"2" |
RBD 이미지 형식 | L559 |
parameters.imageFeatures |
layering |
주석: 커널 RBD 는 5.4 부터 전체 기능을 지원하지만 기본은 layering 만 | L565 |
parameters 의 Secret 여섯 쌍 |
rook-csi-rbd-provisioner, rook-csi-rbd-node |
provisioner·expand·publish·node-stage·modify·node-publish 에 쓸 cephx 키. operator 가 만든다(2편) | L568 |
parameters."csi.storage.k8s.io/fstype" |
ext4 |
주석: OSD 와 같은 노드에 볼륨을 마운트하는 구성에서는 XFS 가 교착에 빠질 수 있어 권하지 않는다 | L585 |
템플릿(cephblockpool.yaml)이
provisioner: <operatorNamespace>.rbd.csi.ceph.com 과 pool·clusterID(클러스터 네임스페이스)를 덧붙입니다.
cephFileSystems: ceph-filesystem 과 StorageClass ceph-filesystem
| 키 | 기본값 | 메모 | 줄 |
|---|---|---|---|
metadataPool.replicated.size |
3 |
메타데이터 풀 | L595 |
dataPools[0] |
이름 data0, host, size 3 |
데이터 풀 | L597 |
metadataServer.activeCount |
1 |
활성 MDS 하나, Rook 은 그 두 배(2개)를 띄운다 | L603 |
metadataServer.activeStandby |
true |
대기 MDS 가 캐시를 따뜻하게 유지 | L604 |
metadataServer.resources |
요청 CPU 1000m·메모리 4Gi, 상한 4Gi | Rook 은 MDS 메모리를 4096MB 이상 권하고, 상한으로 mds_cache_memory_limit 을 맞춘다 |
L605 |
storageClass.isDefault |
false |
L614 | |
storageClass.pool |
data0 |
L617 | |
storageClass.reclaimPolicy |
Delete |
L618 |
CephFilesystem 의 preserveFilesystemOnDelete 는 차트에 없어서 CRD 기본값 false 가 쓰입니다. CR 을 지우면 파일시스템도 함께 지워진다는
뜻입니다(CephFilesystem CRD).
cephObjectStores: ceph-objectstore 와 StorageClass ceph-bucket
| 키 | 기본값 | 메모 | 줄 |
|---|---|---|---|
metadataPool |
host, 복제 size 3 |
버킷 인덱스 등 | L670 |
dataPool.erasureCoded |
K=2, M=1, host |
데이터 풀은 이레이저 코딩 | L674 |
dataPool.parameters.bulk |
"true" |
PG 오토스케일러가 처음부터 PG 를 많이 준다(1편) | L680 |
preservePoolsOnDelete |
true |
CR 을 지워도 풀은 남긴다 | L681 |
gateway.port |
80 |
HTTP. securePort·인증서는 주석 처리 |
L683 |
gateway.instances |
1 |
RGW 파드 하나 | L692 |
gateway.resources |
요청 CPU 1000m·메모리 1Gi, 상한 2Gi | L684 | |
storageClass |
ceph-bucket, Delete, region: us-east-1 |
provisioner 는 <클러스터 네임스페이스>.ceph.rook.io/bucket |
L701 |
ingress.enabled·route.enabled |
false |
클러스터 밖으로 내보낼 때 | L712 |
멀티사이트(realm·zonegroup·zone), 오브젝트 스토어 사용자, EC 블록 풀은 values 에 주석으로만 들어 있고 기본으로는 만들지 않습니다(L743 부터).
6. 기본값 그대로 쓰면 위험한 곳
경고 1.
useAllNodes: true+useAllDevices: true(L418, L419). 모든 노드의 쓸 수 있는 모든 장치가 OSD 가 되어 포맷됩니다. 2편에서 본 대로 마운트됐거나 파일시스템·OSD 서명이 있는 장치는 건너뛰지만, 아무 서명이 없는 빈 디스크는 묻지 않고 가져갑니다. 다른 용도로 막 붙인 디스크, 아직 포맷하지 않은 디스크가 그 대상입니다. CephCluster 문서는useAllDevices를 「장치를 지울 위험이 없는 아주 통제된 환경이 아니면 권하지 않는다」 고 적고, 운영에서는useAllNodes: false로 노드를 명시하라고 권합니다. 최소한deviceFilter(예: 실습 VM 의 빈 디스크 이름만 맞는 정규식)나 노드별devices를 적으십시오.
경고 2.
ceph-block의isDefault: true(L531). 설치하는 순간ceph-block이 쿠버네티스 전체의 기본 StorageClass 가 됩니다. 이미 다른 기본 StorageClass 가 있으면 기본이 둘이 되고, 쿠버네티스는 이때storageClassName없는 PVC 에 가장 최근에 만든 기본 StorageClass 를 씁니다(Kubernetes: Default StorageClass). 다른 앱의 새 PVC 가 말없이 Ceph 로 가게 됩니다. 기존 클러스터에 얹을 때는false로 두십시오.
경고 3. 오브젝트 스토어 데이터 풀의 EC 2+1(L674). Ceph 문서는 M=1 프로필을 「운영 데이터에는 강하게 권하지 않는다」 고 적습니다. 정비 중에 데이터를 못 쓰게 되고, 장애가 겹치면 잃습니다. 또 K+M=3 이라
host장애 단위에서 호스트가 정확히 셋 이상 있어야 하고, 권고대로min_size를 K+1=3 으로 두면 호스트 하나만 내려가도 그 풀은 쓰기를 멈춥니다(실제min_size값은 4편에서 확인, 미실측). 운영이라면 복제 3이나 K=4, M=2 를 검토하십시오.
경고 4. 지우면 사라지는 것들. StorageClass 셋의
reclaimPolicy가 모두Delete라서 PVC 를 지우면 데이터도 지워집니다. 파일시스템은preserveFilesystemOnDelete가 기본false라 CR 을 지우면 파일시스템도 지워집니다. 반대로 오브젝트 스토어는preservePoolsOnDelete: true라 풀이 남습니다. 셋의 기본이 서로 다르다는 점을 기억해 두십시오.
경고 5.
crds.enabled(operator 차트 L21). 처음 설치할 때 정한 값을 나중에false로 바꾸면 클러스터가 파괴될 수 있다고 주석이 경고합니다. 같은 주석이 CRD 가 지워졌을 때를 위해 재해 복구 문서의 「삭제 뒤 CRD 복구」 절을 가리킵니다. 이 값은 설치할 때 한 번 정하고 바꾸지 마십시오.
경고 6.
requireMsgr2: true와keyType: aes(L231, L176). msgr2 에는 커널 5.11 이상이 필요하고, 업그레이드 문서는 더 오래된 커널이면requireMsgr2: false로 끄라고 안내합니다.keyType: aes는 노드 커널이 7.0 미만이면 필요하다고 주석에 적혀 있습니다. 노드의 커널 판부터 확인하십시오.mon.allowMultiplePerNode(L184)와requireSafeReplicaSize: false(풀 CRD, size 1 허용)는 시험 환경 밖에서 켜지 않습니다.
7. 실습 클러스터에서 메모리와 CPU 를 줄일 때
TT Lab 실습 클러스터는 VM 세 대에 빈 디스크가 하나씩(17GiB) 붙은 구성입니다. 기본값으로 설치했을 때 Ceph 파드가 요청하는 자원을 values 로 계산하면 이렇습니다. 개수는 노드 셋, 디스크 셋, 기본 풀·파일시스템·오브젝트 스토어 하나씩을 가정했습니다.
| 파드 | 개수 | 요청 CPU 합 | 요청 메모리 합 |
|---|---|---|---|
| osd | 3 | 3000m | 12Gi |
| mds | 2(활성 1 + 대기 1) | 2000m | 8Gi |
| mon | 3 | 3000m | 3Gi |
| mgr + 사이드카 | 2 + 2 | 1200m | 1104Mi |
| rgw | 1 | 1000m | 1Gi |
| logcollector 사이드카 | 데몬마다 하나로 가정해 11 | 1100m | 1100Mi |
| crashcollector, exporter | 노드마다 하나씩 3 + 3 | 450m | 330Mi |
| operator | 1 | 200m | 128Mi |
| 합 | 약 12 코어 | 약 26.6Gi |
CSI 파드(ctrlplugin·nodeplugin)와 ceph-csi-operator 의 요청은 그쪽 차트 기본값이라 넣지 않았습니다(미확인). 파드가 Pending 에 머물면
먼저 이 합계를 VM 의 CPU·메모리와 견줘 보십시오. 실제로 스케줄된 값은 4편에서 확인합니다.
줄일 때 건드릴 값입니다. 아래는 제안이고 이 조합으로 띄워 본 적은 없습니다(미실측).
cephClusterSpec:
mgr:
count: 1 # mgr 하나와 사이드카 둘이 빠진다
dashboard:
enabled: false
crashCollector:
disable: true # cluster-test.yaml 도 끈다
logCollector:
enabled: false # 데몬마다 붙는 로그 사이드카가 빠진다
resources:
mon:
requests: {cpu: 250m, memory: 512Mi}
limits: {memory: 1Gi} # 권장 최소 1024MB 와 같다
mgr:
requests: {cpu: 250m, memory: 512Mi}
limits: {memory: 512Mi} # 권장 최소 512MB
osd:
requests: {cpu: 500m, memory: 2Gi}
limits: {memory: 2Gi} # 권장 최소 2048MB, osd_memory_target 도 2Gi 가 된다
cephFileSystems:
- name: ceph-filesystem
spec:
metadataServer:
activeCount: 1
activeStandby: false
resources:
requests: {cpu: 250m, memory: 1Gi}
limits: {memory: 1Gi} # 권장 4096MB 보다 낮아 operator 가 경고를 찍는다
cephObjectStores:
- name: ceph-objectstore
spec:
gateway:
instances: 1
resources:
requests: {cpu: 250m, memory: 512Mi}
limits: {memory: 1Gi}
리스트 값(cephFileSystems, cephObjectStores)은 Helm 이 통째로 바꿔 끼우므로, 실제 파일에는 기본값의 나머지 필드(풀, StorageClass)를
함께 적어야 합니다. 위 조각에서는 바꾸는 필드만 보이려고 줄였습니다. RWX 볼륨이나 S3 가 필요 없으면 cephFileSystems: [],
cephObjectStores: [] 로 아예 빼는 것이 가장 크게 줄입니다. activeStandby: false 는 대기 MDS 를 차가운 대기로 바꿀 뿐 MDS 수(2)는
그대로입니다(2편 2절).
위 조합의 요청 합을 같은 방식으로 계산하면 메모리는 약 10.8Gi(osd 6Gi, mds 2Gi, mon 1.5Gi, mgr 512Mi, rgw 512Mi, exporter 150Mi, operator 128Mi), CPU 는 약 3.6 코어입니다. 대신 OSD 의 메모리 목표가 4Gi 에서 2Gi 로 줄어 BlueStore 캐시가 작아지고(성능 영향 미실측), MDS 는 Rook 의 권장보다 낮습니다. 성능에 미치는 영향은 측정이 끝난 뒤 따로 쓰는 성능 편에서 다룹니다.
같은 방향의 공식 예로 Rook 저장소의
deploy/examples/cluster-test.yaml이
있습니다. 자원 요청을 아예 두지 않고, mon·mgr 을 하나씩만, osd_memory_target 을 1GiB 로, 풀 크기를 1로 둔
구성입니다. 파일 머리 주석은 「노드 하나면 충분한 작은 시험 클러스터」 라고 소개합니다. 사본이 하나라 데이터 보호는 없습니다.
용량 계산
디스크 셋의 원 용량은 51GiB 입니다. Ceph 는 OSD 사용률이 mon_osd_nearfull_ratio(0.85)를 넘으면 경고하고, mon_osd_full_ratio(0.95)에
닿으면 쓰기를 막습니다(Monitor Config Reference).
| 풀 종류 | 공간 배수 | full(0.95) 전까지 담을 수 있는 원 데이터 | nearfull(0.85) 경고까지 |
|---|---|---|---|
| 복제 size 3(블록, 파일시스템) | 3.0 | 약 16.2GiB | 약 14.5GiB |
| EC 2+1(오브젝트 데이터) | 1.5 | 약 32.3GiB | 약 28.9GiB |
모든 풀이 같은 원 용량을 나눠 쓰므로 두 줄을 더할 수 없습니다. BlueStore 와 RocksDB 의 고정 오버헤드, PG 가 고르게 퍼지지 않는 정도는
뺐습니다(미실측). 실제로 쓸 수 있는 양은 4편의 ceph df 로 확인합니다.
8. 정리
- 차트는 셋이고 순서는
rook-ceph→ceph-csi-drivers→rook-ceph-cluster입니다. 가운데를 빠뜨리면 CSI 가 실패합니다. - operator 차트는 짧고, 대부분 기본값으로 충분합니다. 확인할 것은
crds.enabled,monitoring.enabled, OBC 필드 허용 정도입니다. - 클러스터 차트의 기본값은 「예시」 입니다. 적어도
storage(어떤 디스크를 쓸지),isDefault, 오브젝트 데이터 풀의 EC 프로필, 자원 요청은 직접 정하십시오.
티티 한마디. values.yaml 은 「기본으로 이렇게 해 둘게요」 라는 편지예요. 그런데 이 편지에는 「빈 디스크는 다 쓸게요」, 「제가 기본 StorageClass 할게요」 같은 꽤 대담한 문장이 섞여 있어요. 설치 버튼을 누르기 전에 그 몇 줄만은 꼭 다시 읽어 주세요!
참고
values 와 문서는 모두 2026-10-29 에 위 커밋에서 열람했습니다.
- rook-ceph values.yaml: https://github.com/rook/rook/blob/09d2f0d8d883b70b30de796c4390371be725ff3b/deploy/charts/rook-ceph/values.yaml
- rook-ceph-cluster values.yaml: https://github.com/rook/rook/blob/09d2f0d8d883b70b30de796c4390371be725ff3b/deploy/charts/rook-ceph-cluster/values.yaml
- Rook 이 맞춘 ceph-csi-drivers values: https://github.com/rook/rook/blob/09d2f0d8d883b70b30de796c4390371be725ff3b/deploy/charts/ceph-csi-drivers/values.yaml
- Helm Charts Overview, Operator 차트, Cluster 차트, CSI 드라이버 차트 문서: https://github.com/rook/rook/tree/09d2f0d8d883b70b30de796c4390371be725ff3b/Documentation/Helm-Charts
- CephCluster CRD: https://github.com/rook/rook/blob/09d2f0d8d883b70b30de796c4390371be725ff3b/Documentation/CRDs/Cluster/ceph-cluster-crd.md
- CephBlockPool CRD: https://github.com/rook/rook/blob/09d2f0d8d883b70b30de796c4390371be725ff3b/Documentation/CRDs/Block-Storage/ceph-block-pool-crd.md
- CephFilesystem CRD: https://github.com/rook/rook/blob/09d2f0d8d883b70b30de796c4390371be725ff3b/Documentation/CRDs/Shared-Filesystem/ceph-filesystem-crd.md
- CephObjectStore CRD: https://github.com/rook/rook/blob/09d2f0d8d883b70b30de796c4390371be725ff3b/Documentation/CRDs/Object-Storage/ceph-object-store-crd.md
- cluster-test.yaml: https://github.com/rook/rook/blob/09d2f0d8d883b70b30de796c4390371be725ff3b/deploy/examples/cluster-test.yaml
- Ceph Erasure Code: https://docs.ceph.com/en/tentacle/rados/operations/erasure-code/
- Ceph Monitor Config Reference: https://docs.ceph.com/en/tentacle/rados/configuration/mon-config-ref/
- Kubernetes Storage Classes: https://kubernetes.io/docs/concepts/storage/storage-classes/