Configure Dell-Storage CSMs

CSM Observability

CSM Observability is an OpenTelemetry agent that collects array-level metrics for Dell Storage so they can be exported into a Prometheus database. With CSM for Observability, you will gain visibility not only on the capacity of the volumes/file shares you manage with Dell CSM CSI drivers but also on their performance in terms of bandwidth, IOPS, and response time.

Note

The CSM Observability is not available for Unity XT and is not fully available for all storages. You can check the compatibility/capabilities on Dell Documentation.

Enable CSM Observability Chart

Note

Disable any other CSI/CSM if not used/configured, otherwise it could cause the application to fail on apply.

~(keystone_admin)$ system helm-chart-attribute-modify --enabled false dell-storage <chart_name> dell-storage

Enable CSM Observability using the following command:

~(keystone_admin)$ system helm-chart-attribute-modify --enabled true dell-storage csm-observability dell-storage

Update User Overrides

Note

karaviMetricsPowerstore is enabled by default. All others are disabled. The karaviTopology and otelCollector collectors are also enabled by default.

Procedure

  1. Create user overrides by enabling the metrics that you need.

    ~(keystone_admin)$ cat << EOF > /home/sysadmin/observabilityOverrides.yaml
    karaviMetricsPowerstore:
        enabled: true
    
    karaviMetricsPowerflex:
        enabled: false
    
    karaviMetricsPowerscale:
        enabled: false
    
    karaviMetricsPowermax:
        enabled: false
    EOF
    
  2. Apply the overrides.

    ~(keystone_admin)$ system helm-override-update dell-storage csm-observability dell-storage --values=/home/sysadmin/observabilityOverrides.yaml
    
  3. Apply the application.

    ~(keystone_admin)$ system application-apply dell-storage
    
  4. Check that the metrics are being generated by accessing the otel-collector pod API.

    curl -k https://$(kubectl get -n dell-storage pods -o wide | grep otel-collector | awk '{print $6}'):8443/metrics
    

CSM Observability Parameters

Parameter

Description

Required

Default

karaviMetricsPowerstore.enabled

If true, enable metrics for CSI-Powerstore.

No

True

karaviMetricsPowerflex.enabled

If true, enable metrics for CSI-Powerflex.

No

False

karaviMetricsPowerscale.enabled

If true, enable metrics for CSI-Powerscale.

No

False

karaviMetricsPowermax.enabled

If true, enable metrics for CSI-Powermax.

No

False

CSM Resiliency

User applications can have problems if you want their pods to be resilient to node failure. This is especially true for those deployed with StatefulSets that use PersistentVolumeClaims. Kubernetes makes sure that there will never be two copies of the same StatefulSet pod running at the same time and accessing storage volumes. Therefore, it does not clean up StatefulSet pods if the node executing them fails.

Enable CSM Resiliency

Procedure

  1. Add the csm.resiliency: true parameter to the user overrides. Below is an example using Powerstore:

    ~(keystone_admin)$ cat << EOF > /home/sysadmin/powerstoreOverrides.yaml
    csm:
      resiliency: true
    storageClasses:
    - name: csi-powerstore-iscsi
      arrayID: <ARRAY_ID>
      fstype: ext4
    
    secret:
      arrays:
      - globalID: <GLOBAL_ID>
          username: <powerstore_user>
          password: <powerstore_password>
          endpoint: https://<powerstore_address>/api/rest
          isDefault: true
          blockProtocol: "ISCSI"
    EOF
    
  2. Apply the user overrides.

    ~(keystone_admin)$ system helm-override-update dell-storage csi-powerstore dell-storage --values=/home/sysadmin/powerstoreOverrides.yaml
    
  3. Apply the application.

    ~(keystone_admin)$ system application-apply dell-storage
    

CSM Resiliency Parameter

Parameter

Description

Required

Default

csm.resiliency

Enables/Disables sidecar container.

No

false

CSM Replication

CSM for replication project aims to bring replication and disaster recovery capabilities of Dell Storage Arrays to Kubernetes clusters. It helps users replicate groups of volumes using the native replication technology available on the storage array and can provide you a way to restart applications in case of both planned and unplanned migration.

Enable CSM Replication Chart

Prerequisites

Ensure that the csm-replication chart is enabled.

(keystone_admin)$ system helm-chart-attribute-modify --enabled true dell-storage csm-replication dell-storage

Update User Overrides

Procedure

  1. Create user overrides to configure replication. Below is an example using Powerstore:

    ~(keystone_admin)$ cat << EOF > /home/sysadmin/powerstoreOverrides.yaml
    labels:
      isApplication: false
    csm:
      replication: true
    storageClasses:
    - name: csi-powerstore-iscsi
      arrayID: <ARRAY_ID>
      fstype: ext4
      replication:
          remoteStorageClassName: remote_storageclass
          remoteClusterID: remote_clusterid
          remoteSystem: remote_system
          rpo: "Five_Minutes"
          ignoreNamespaces: false
          volumeGroupPrefix: <VOLUME_GROUP_PREFIX>
    
    secret:
      arrays:
      - globalID: <GLOBAL_ID>
        username: <USERNAME>
        password: <PASSWORD>
        endpoint: https://<POWERSTORE_ADDRESS>/api/rest
        isDefault: true
        blockProtocol: "ISCSI"
    EOF
    

    Note

    The replication parameters need to be configured on each storage class that will use it. Check the StorageClasses Parameter session of the CSI you are using to know which parameters to set.

  2. Apply the user overrides.

    ~(keystone_admin)$ system helm-override-update dell-storage csi-powerstore dell-storage --values=/home/sysadmin/powerstoreOverrides.yaml
    
  3. Apply the application.

    ~(keystone_admin)$ system application-apply dell-storage
    

CSM Replication Parameter

Parameter

Description

Required

Default

csm.replication

Enables/Disables replication sidecar container.

No

false

controller.replication.replicationPrefix

Change replication prefix.

No

replication.storage.dell.com

storageClasses[0].replication

Used to configure replication sidecar container.

No

Not Applicable

storageClasses[0].replication.remoteStorageClassName

Remote StorageClass name.

No

csi-powerstore-replication

storageClasses[0].replication.remoteClusterID

Remote ClusterID.

No

Not Applicable

storageClasses[0].replication.remoteSystem

Remote PowerStore system.

No

Not Applicable

storageClasses[0].replication.rpo

Change to any other RPOs supported by PowerStore.

No

Five_Minutes

storageClasses[0].replication.ignoreNamespaces

Set to true if you want to ignore namespaces and if false creates separate volume group per namespace.

No

false

storageClasses[0].replication.volumeGroupPrefix

Volume group prefix.

No

csi-powerstore