From 862dfd6e749b59f1fe7a4c853bd3b5b228b62dc6 Mon Sep 17 00:00:00 2001 From: Chinasubbareddy Mallavarapu Date: Tue, 4 May 2021 19:56:40 +0000 Subject: [PATCH] [ceph] Add support to create storageclasses This is to add support for creating storageclasses for pv/pvc. - block-storage-sc - cephfs-storage-sc Change-Id: I30471d8d6515a22bcf7c9628c804e6c72191be7a --- .../block/block-storageclass.yaml | 55 +++++++++++++++++++ .../storageclasses/block/kustomization.yaml | 5 ++ .../block/patches/rook-ceph-block.yaml | 18 ++++++ .../file/file-storageclass.yaml | 40 ++++++++++++++ .../storageclasses/file/kustomization.yaml | 5 ++ .../file/patches/rook-ceph-cephfs.yaml | 15 +++++ .../storageclasses/kustomization.yaml | 3 + .../workload/storage/rook/kustomization.yaml | 1 + 8 files changed, 142 insertions(+) create mode 100644 manifests/function/rook-cluster/storageclasses/block/block-storageclass.yaml create mode 100644 manifests/function/rook-cluster/storageclasses/block/kustomization.yaml create mode 100644 manifests/function/rook-cluster/storageclasses/block/patches/rook-ceph-block.yaml create mode 100644 manifests/function/rook-cluster/storageclasses/file/file-storageclass.yaml create mode 100644 manifests/function/rook-cluster/storageclasses/file/kustomization.yaml create mode 100644 manifests/function/rook-cluster/storageclasses/file/patches/rook-ceph-cephfs.yaml create mode 100644 manifests/function/rook-cluster/storageclasses/kustomization.yaml diff --git a/manifests/function/rook-cluster/storageclasses/block/block-storageclass.yaml b/manifests/function/rook-cluster/storageclasses/block/block-storageclass.yaml new file mode 100644 index 000000000..8ec14d898 --- /dev/null +++ b/manifests/function/rook-cluster/storageclasses/block/block-storageclass.yaml @@ -0,0 +1,55 @@ +################################################## +# Create storaclass for pv/pvc creation +# make sure pool is getting create prior to this + +# kubectl create -f storageclass.yaml +################################################## +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: storage-sc +# Change "rook-ceph" provisioner prefix to match the operator namespace if needed +provisioner: rook-ceph.rbd.csi.ceph.com +parameters: + # clusterID is the namespace where the rook cluster is running + clusterID: rook-ceph + # Ceph pool into which the RBD image shall be created + pool: pool1 + + # (optional) mapOptions is a comma-separated list of map options. + # For krbd options refer + # https://docs.ceph.com/docs/master/man/8/rbd/#kernel-rbd-krbd-options + # For nbd options refer + # https://docs.ceph.com/docs/master/man/8/rbd-nbd/#options + # mapOptions: lock_on_read,queue_depth=1024 + + # (optional) unmapOptions is a comma-separated list of unmap options. + # For krbd options refer + # https://docs.ceph.com/docs/master/man/8/rbd/#kernel-rbd-krbd-options + # For nbd options refer + # https://docs.ceph.com/docs/master/man/8/rbd-nbd/#options + # unmapOptions: force + + # RBD image format. Defaults to "2". + imageFormat: "2" + + # RBD image features. Available for imageFormat: "2". CSI RBD currently supports only `layering` feature. + imageFeatures: layering + + # The secrets contain Ceph admin credentials. + csi.storage.k8s.io/provisioner-secret-name: rook-csi-rbd-provisioner + csi.storage.k8s.io/provisioner-secret-namespace: rook-ceph + csi.storage.k8s.io/controller-expand-secret-name: rook-csi-rbd-provisioner + csi.storage.k8s.io/controller-expand-secret-namespace: rook-ceph + csi.storage.k8s.io/node-stage-secret-name: rook-csi-rbd-node + csi.storage.k8s.io/node-stage-secret-namespace: rook-ceph + + # Specify the filesystem type of the volume. If not specified, csi-provisioner + # will set default as `ext4`. Note that `xfs` is not recommended due to potential deadlock + # in hyperconverged settings where the volume is mounted on the same node as the osds. + csi.storage.k8s.io/fstype: ext4 + +# allow pvc resize +allowVolumeExpansion: true +# Delete the rbd volume when a PVC is deleted +reclaimPolicy: Delete diff --git a/manifests/function/rook-cluster/storageclasses/block/kustomization.yaml b/manifests/function/rook-cluster/storageclasses/block/kustomization.yaml new file mode 100644 index 000000000..f08b2c993 --- /dev/null +++ b/manifests/function/rook-cluster/storageclasses/block/kustomization.yaml @@ -0,0 +1,5 @@ +resources: +- block-storageclass.yaml +namePrefix: block- +patchesStrategicMerge: +- patches/rook-ceph-block.yaml diff --git a/manifests/function/rook-cluster/storageclasses/block/patches/rook-ceph-block.yaml b/manifests/function/rook-cluster/storageclasses/block/patches/rook-ceph-block.yaml new file mode 100644 index 000000000..68a6e7b88 --- /dev/null +++ b/manifests/function/rook-cluster/storageclasses/block/patches/rook-ceph-block.yaml @@ -0,0 +1,18 @@ +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: storage-sc +provisioner: rook-ceph.rbd.csi.ceph.com +parameters: + clusterID: rook-ceph + pool: rbd-pool + imageFormat: "2" + imageFeatures: layering + csi.storage.k8s.io/provisioner-secret-name: rook-csi-rbd-provisioner + csi.storage.k8s.io/provisioner-secret-namespace: rook-ceph + csi.storage.k8s.io/controller-expand-secret-name: rook-csi-rbd-provisioner + csi.storage.k8s.io/controller-expand-secret-namespace: rook-ceph + csi.storage.k8s.io/node-stage-secret-name: rook-csi-rbd-node + csi.storage.k8s.io/node-stage-secret-namespace: rook-ceph + csi.storage.k8s.io/fstype: ext4 +reclaimPolicy: Delete diff --git a/manifests/function/rook-cluster/storageclasses/file/file-storageclass.yaml b/manifests/function/rook-cluster/storageclasses/file/file-storageclass.yaml new file mode 100644 index 000000000..fa2bbd5b0 --- /dev/null +++ b/manifests/function/rook-cluster/storageclasses/file/file-storageclass.yaml @@ -0,0 +1,40 @@ +################################################## +# Create storaclass for pv/pvc creation +# make sure pool is getting create prior to this + +# kubectl create -f storageclass.yaml +################################################## +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: storage-sc +provisioner: rook-ceph.cephfs.csi.ceph.com # driver:namespace:operator +parameters: + # clusterID is the namespace where operator is deployed. + clusterID: rook-ceph # namespace:cluster + + # CephFS filesystem name into which the volume shall be created + fsName: cephfs + + # Ceph pool into which the volume shall be created + # Required for provisionVolume: "true" + pool: cephfs-data0 + + # The secrets contain Ceph admin credentials. These are generated automatically by the operator + # in the same namespace as the cluster. + csi.storage.k8s.io/provisioner-secret-name: rook-csi-cephfs-provisioner + csi.storage.k8s.io/provisioner-secret-namespace: rook-ceph # namespace:cluster + csi.storage.k8s.io/controller-expand-secret-name: rook-csi-cephfs-provisioner + csi.storage.k8s.io/controller-expand-secret-namespace: rook-ceph # namespace:cluster + csi.storage.k8s.io/node-stage-secret-name: rook-csi-cephfs-node + csi.storage.k8s.io/node-stage-secret-namespace: rook-ceph # namespace:cluster + + # (optional) The driver can use either ceph-fuse (fuse) or ceph kernel client (kernel) + # If omitted, default volume mounter will be used - this is determined by probing for ceph-fuse + # or by setting the default mounter explicitly via --volumemounter command-line argument. + # mounter: kernel +reclaimPolicy: Delete +allowVolumeExpansion: true +mountOptions: + # uncomment the following line for debugging + #- debug diff --git a/manifests/function/rook-cluster/storageclasses/file/kustomization.yaml b/manifests/function/rook-cluster/storageclasses/file/kustomization.yaml new file mode 100644 index 000000000..b9048d3cf --- /dev/null +++ b/manifests/function/rook-cluster/storageclasses/file/kustomization.yaml @@ -0,0 +1,5 @@ +resources: +- file-storageclass.yaml +namePrefix: cephfs- +patchesStrategicMerge: +- patches/rook-ceph-cephfs.yaml diff --git a/manifests/function/rook-cluster/storageclasses/file/patches/rook-ceph-cephfs.yaml b/manifests/function/rook-cluster/storageclasses/file/patches/rook-ceph-cephfs.yaml new file mode 100644 index 000000000..d8ce95d42 --- /dev/null +++ b/manifests/function/rook-cluster/storageclasses/file/patches/rook-ceph-cephfs.yaml @@ -0,0 +1,15 @@ +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: storage-sc +provisioner: rook-ceph.cephfs.csi.ceph.com +parameters: + clusterID: rook-ceph + fsName: cephfs + pool: cephfs-data0 + csi.storage.k8s.io/provisioner-secret-name: rook-csi-cephfs-provisioner + csi.storage.k8s.io/provisioner-secret-namespace: rook-ceph + csi.storage.k8s.io/controller-expand-secret-name: rook-csi-cephfs-provisioner + csi.storage.k8s.io/controller-expand-secret-namespace: rook-ceph + csi.storage.k8s.io/node-stage-secret-name: rook-csi-cephfs-node + csi.storage.k8s.io/node-stage-secret-namespace: rook-ceph diff --git a/manifests/function/rook-cluster/storageclasses/kustomization.yaml b/manifests/function/rook-cluster/storageclasses/kustomization.yaml new file mode 100644 index 000000000..72f71918b --- /dev/null +++ b/manifests/function/rook-cluster/storageclasses/kustomization.yaml @@ -0,0 +1,3 @@ +resources: +- block +- file diff --git a/manifests/type/airship-core/target/workload/storage/rook/kustomization.yaml b/manifests/type/airship-core/target/workload/storage/rook/kustomization.yaml index 38a658cd4..dcc416d30 100644 --- a/manifests/type/airship-core/target/workload/storage/rook/kustomization.yaml +++ b/manifests/type/airship-core/target/workload/storage/rook/kustomization.yaml @@ -13,6 +13,7 @@ resources: - ../../../../../../function/rook-cluster/pools - ../../../../../../function/rook-cluster/cephfs - ../../../../../../function/rook-cluster/dashboard/http + - ../../../../../../function/rook-cluster/storageclasses patchesJSON6902: - target: kind: CephCluster