Rook Ceph에서 정적/동적으로 Volume 생성하기
Ceph Filesystem
Static Provisioning
Ceph Filesystem에서 정적으로 Volume을 생성하려면 adminID/adminKey와 userID/userKey가 있어야합니다. 아래 명령어로 모든 Filesystem을 읽을 수 있는 유저를 생성하고 그 외 정보는 rook 배포시 생성된 Secret에서 가져옵니다.
kubectl rook-ceph ceph fs authorize '*' client.root / rw
kubectl get secret -n rook-ceph rook-csi-cephfs-node -o jsonpath='{.data.adminID}' \
| base64 -d
kubectl get secret -n rook-ceph rook-csi-cephfs-node -o jsonpath='{.data.adminKey}' \
| base64 -d
apiVersion: v1
kind: Secret
metadata:
name: rook-csi-cephfs-node-user
namespace: rook-ceph
type: kubernetes.io/rook
stringData:
adminID: <adminID>
adminKey: <adminKey>
userID: <userID>
userKey: <userKey>
Secret 생성 후 아래와 같이 PersistentVolume과 PersistentVolumeClaim을 생성합니다.
apiVersion: v1
kind: PersistentVolume
metadata:
name: <name>
annotations:
pv.kubernetes.io/provisioned-by: rook-ceph.cephfs.csi.ceph.com
volume.kubernetes.io/provisioner-deletion-secret-name: rook-csi-cephfs-provisioner
volume.kubernetes.io/provisioner-deletion-secret-namespace: rook-ceph
spec:
storageClassName: <storageClassName>
accessModes:
- ReadWriteMany
capacity:
storage: 5Gi
csi:
driver: rook-ceph.cephfs.csi.ceph.com
# 아무 값이나 넣어도 됨
volumeHandle: cephfs-static-pv
volumeAttributes:
clusterID: rook-ceph
fsName: <cephFilesystemName>
# pool: <poolName>
staticVolume: "true"
# 원하는 경로로 수정
rootPath: /volumes
nodeStageSecretRef:
name: rook-csi-cephfs-node-user
namespace: rook-ceph
controllerExpandSecretRef:
name: rook-csi-cephfs-provisioner
namespace: rook-ceph
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: <name>
namespace: <namespace>
spec:
storageClassName: <storageClassName>
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
volumeName: <persistentVolumeName>
Dynamic Provisioning
Ceph Filesystem에 대한 설정이 있는 StorageClass를 사용한 PersistentVolumeClaim을 생성하면 동적으로 PersistentVolume이 생성됩니다.
Ceph Block
Static Provisioning
Dynamic Provisioning
Ceph Block에 대한 설정이 있는 StorageClass를 사용한 PersistentVolumeClaim을 생성하면 동적으로 PersistentVolume이 생성됩니다.