Installation Guide
- Set up an OpenShift cluster following the official documentation.
- Proceed to the Prerequisite
- Complete the base installation.
- Proceed with module installation.
-
Make sure the nfs is enabled in the powerscale
ps01-1# isi nfs settings global view NFS Service Enabled: Yes NFSv3 Enabled: Yes NFSv4 Enabled: Yes v4.0 Enabled: Yes v4.1 Enabled: Yes v4.2 Enabled: Yes NFS RDMA Enabled: No Rquota Enabled: No
-
Create Group and User for CSM
isi auth group create csmadmins --zone system isi auth user create csmadmin --password "P@ssw0rd123" --password-expires false --primary-group csmadmins --zone system
-
Create role and assign the required permission
isi auth roles create CSMAdminRole --description "Dell CSM Admin Role" --zone System isi auth roles modify CSMAdminRole --zone System --add-priv-read ISI_PRIV_LOGIN_PAPI --add-priv-read ISI_PRIV_IFS_RESTORE --add-priv-read ISI_PRIV_NS_IFS_ACCESS --add-priv-read ISI_PRIV_IFS_BACKUP --add-priv-read ISI_PRIV_AUTH --add-priv-read ISI_PRIV_AUTH_ZONES --add-priv-read ISI_PRIV_STATISTICS isi auth roles modify CSMAdminRole --zone System --add-priv-write ISI_PRIV_NFS --add-priv-write ISI_PRIV_QUOTA --add-priv-write ISI_PRIV_SNAPSHOT --add-priv-write ISI_PRIV_SYNCIQ isi auth roles modify CSMAdminRole --add-group csmadmins
-
Get PowerScale Array Details
a. Cluster Name:
ps01-1# isi cluster identity view Description: MOTD: MOTD Header: Name: ps01
b. Access Zone Name:
ps01-1# isi zone zones list Name Path ----------------------------- System /ifs ps01-az01 /ifs/data/ps01/az01 ----------------------------- Total: 2
c. Smart Connect Zone name
ps01-1# isi network pools list ID SC Zone IP Ranges Allocation Method ------------------------------------------------------------------------------------------------------ groupnet0.subnet0.ps01-az01-pool0 ps01-az01.example.com 10.181.98.225-10.181.98.227 static groupnet0.subnet0.system-pool0 ps01.example.com 10.181.98.222-10.181.98.224 static ------------------------------------------------------------------------------------------------------ Total: 2
-
Create the base directory for the storage class
mkdir /ifs/data/ps01/az01/csi chown csmadmin:csmadmins /ifs/data/ps01/az01/csi chmod 755 /ifs/data/ps01/az01/csi
- Make sure all the parent directory of the base path has permission 755
-
(optional) Create quota on the base directory
isi quota quotas create /ifs/data/ps01/az01/csi directory --percent-advisory-threshold 80 --percent-soft-threshold 90 --soft-grace 1D --hard-threshold 100G --include-snapshots true
Operator Installation
-
On the OpenShift console, navigate to OperatorHub and use the keyword filter to search for Dell Container Storage Modules.
-
Click Dell Container Storage Modules tile
-
Keep all default settings and click Install.
Verify that the operator is deployed
oc get operators
NAME AGE
dell-csm-operator-certified.openshift-operators 2d21h
oc get pod -n openshift-operators
NAME READY STATUS RESTARTS AGE
dell-csm-operator-controller-manager-86dcdc8c48-6dkxm 2/2 Running 21 (19h ago) 2d21h
CSI Driver Installation
-
Create project:
Use this command to create new project. You can use any project name instead of
isilon
.oc new-project isilon
-
Create config secret:
Create a file called
config.yaml
or use sample:Example:
cat << EOF > config.yaml isilonClusters: - clusterName: "ps01" username: "csmadmin" password: "P@ssw0rd123" endpoint: "ps01.example.com" skipCertificateValidation: true EOF
Add blocks for each Powerscale array in
config.yaml
, and include both source and target arrays if replication is enabled.
Edit the file, then run the command to create the
isilon-config
.oc create secret generic isilon-config --from-file=config=config.yaml -n isilon --dry-run=client -oyaml > secret-isilon-config.yaml
Use this command to create the config:
oc apply -f secret-isilon-config.yaml
Use this command to replace or update the config:
oc replace -f secret-isilon-config.yaml --force
Verify config secret is created.
oc get secret -n isilon NAME TYPE DATA AGE isilon-config Opaque 1 3h7m
-
Create isilon-certs-n secret.
If certificate validation is skipped, empty secret must be created. To create an empty secret. Ex: secret-isilon-certs.yaml
cat << EOF > secret-isilon-certs.yaml apiVersion: v1 kind: Secret metadata: name: isilon-certs-0 namespace: isilon type: Opaque data: cert-0: "" EOF
oc create -f secret-isilon-certs.yaml
-
Create Custom Resource ContainerStorageModule for PowerScale.
Use this command to create the ContainerStorageModule Custom Resource:
oc create -f csm-isilon.yaml
Example:
cat << EOF > csm-isilon.yaml apiVersion: storage.dell.com/v1 kind: ContainerStorageModule metadata: name: isilon namespace: isilon spec: driver: csiDriverType: "isilon" configVersion: v2.14.0 authSecret: isilon-config common: envs: - name: X_CSI_ISI_AUTH_TYPE value: "1" EOF
Detailed Configuration: Use the sample file for detailed settings or use Wizard to generate the sample file..
To set the parameters in CR. The table shows the main settings of the Powerscale driver and their defaults.
-
Check if ContainerStorageModule CR is created successfully:
oc get csm isilon -n isilon
NAME CREATIONTIME CSIDRIVERTYPE CONFIGVERSION STATE
isilon 3h isilon v2.14.0 Succeeded
-
Create Storage class:
Use this command to create the Storage Class:
oc apply -f sc-isilon.yaml
Example:
cat << EOF > sc-isilon.yaml apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: isilon provisioner: csi-isilon.dellemc.com reclaimPolicy: Delete allowVolumeExpansion: true IsiVolumePathPermissions: "0775" mountOptions: ["vers=4"] parameters: ClusterName: ps01 AccessZone: ps01-az01 AzServiceIP: ps01-az01.example.com IsiPath: /ifs/data/ps01/az01/csi RootClientEnabled: "false" csi.storage.k8s.io/fstype: "nfs" volumeBindingMode: Immediate EOF
Replace placeholders with actual values for your powerscale array and various storage class sample refer here
Verify Storage Class is created:
oc get storageclass isilon NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE isilon (default) csi-isilon.dellemc.com Delete Immediate true 3h8m
-
Create Volume Snapshot Class:
Use this command to create the Volume Snapshot:
oc apply -f vsclass-isilon.yaml
Example:
cat << EOF > vsclass-isilon.yaml apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: vsclass-isilon driver: csi-isilon.dellemc.com deletionPolicy: Delete parameters: IsiPath: /ifs/data/ps01/az01/csi EOF
Verify Volume Snapshot Class is created:
oc get volumesnapshot NAME DRIVER DELETIONPOLICY AGE vsclass-isilon csi-isilon.dellemc.com Delete 3h9m