Ceph CSI Module - Ceph File System (shturval-ceph-cephfs)

About the service

ParameterDescription
GUI nameCeph CSI Module - Ceph File System
System name (identifier)shturval-ceph-cephfs
Cluster AssignmentDynamic provisioning of Ceph File System (CephFS) volumes; connecting file shared volumes from a Ceph cluster.
CriticalNo
Public repositoryCeph CSI
Dependenciesshturval-networking
Namespaceceph-fs

Purpose

shturval-ceph-cephfs is a Ceph CSI module for Ceph File System. Allows you to mount CephFS volumes as PersistentVolume upon request via StorageClass. Suitable for Ceph-based shared storage.

Where to configure

Services and repositories → Installed services → shturval-ceph-cephfs → Manage.

Setting up storage classes: StorageClasses. Ceph parameters (clusterID, monitors, secrets with keys) are set in customvalues. The required Ceph user rights (capabilities) for CephFS are described in the Ceph CSI documentation.

Installation and configuration

To work, shturval-networking must be running in the cluster. During installation, it is recommended to create a separate namespace for the chart.

If the Ceph CSI module was installed when creating the cluster, manual configuration is usually not required. To enable it in an already created cluster, use Services and Repositories → Installed Services or install the shturval-ceph-cephfs chart from Available Charts. If you need to redefine chart parameters, apply the changes via ShturvalServicePatch.

In Service Specifications specify customvalues:

Customvalues example (CephFS)
csiConfig:
  - clusterID: <your value>
    monitors:
      - <your value>
secret:
  create: true
  name: <your value>
  adminID: <your value>
  adminKey: <your value>
cephconf: |
  <your Ceph cluster configuration>
  # Workaround for http://tracker.ceph.com/issues/23446
  fuse_set_user_groups = false

  # Increases the size of the ceph-fuse write buffer.
  fuse_big_writes = true  
storageClass:
  create: true
  name: <your value>
  clusterID: <your value>
  fsName: <your value>
  volumeNamePrefix: <your value>
  provisionerSecret: <yourmeaning>
  controllerExpandSecret: <your value>
  nodeStageSecret: <your value>
  reclaimPolicy: <your value>
  allowVolumeExpansion: true
ParameterDescriptionExample
csiConfig[].clusterIDUnique Ceph cluster identifiermy-cluster-id
csiConfig[].monitorsList of IP addresses of Ceph monitors192.168.1.1
secret.nameName of the Secret being createdceph-secret
secret.adminIDCeph service account IDclient.admin
secret.adminKeyCeph Service Account Keysdfdff
cephconfCeph configuration in text format[global] auth cluster required = cephx
storageClass.nameName of the created StorageClasscsi-cephfs-sc
storageClass.clusterIDCeph Cluster IDcluster-id
storageClass.fsNameCephFS file system namemyfs
storageClass.volumeNamePrefixPrefix for volume namesshturval-
storageClass.provisionerSecretSecret with Ceph credentials for provisioningcephfs-secret
storageClass.controllerExpandSecretSecret for expanding volumesceph-expand-secret
storageClass.nodeStageSecretSecret for mounting a volume on a hostcsi-cephfs-secret
storageClass.reclaimPolicyVolume deletion policy (Retain, Delete, Recycle)Delete

Service account access rights

Minimum rights for Ceph user (client.kubecephfs):

mon 'allow r'
mgr 'allow rw'
mds 'allow rws'
osd 'allow rw pool=cephfs_data, allow rw pool=cephfs_metadata'

Configuration notes

The cephconf block in customvalues specifies the text configuration of the Ceph client (sections [global] and, if necessary, parameters for ceph-fuse / mount). For typical additions (FUSE buffers, fuse_big_writes, etc.) see Ceph CSI documentation and example values for your driver version; When migrating from old documentation, check that the keys are up to date for the selected mount mode (FUSE vs kernel).

If you need to connect several CephFS instances in one cluster:

  1. Install each instance in a separate namespace.
  2. Specify a unique value for the driverName parameter for each instance.
  3. Set the nodePlugin.httpMetrics.ContainerPort parameter to a unique port for each instance.

How to deploy this service - How to deploy a new service.