Helm

Install Helm 3.x

Install Helm 3.x on the master node before you install the CSI Driver for PowerStore.

Steps

Run the command to install Helm 3.x.

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash


Installation Wizard Support Matrix Click Here

The Container Storage Modules Installation Wizard is a webpage that helps you create a manifest file to install Dell CSI Drivers and CSM Modules. Users can enable or disable modules through the UI, and it generates a single manifest file, eliminating the need to download individual Helm charts for drivers and modules.

Note:Ensure Helm 3.x, namespace, and secrets are set up before installing the Helm chart.

Generate Manifest File

  1. Open the CSM Installation Wizard.
  2. Select the Installation Type as Helm/Operator.
  3. Select the Array.
  4. Enter the Image Repository. The default value is dellemc.
  5. Select the CSM Version.
  6. Select the modules for installation. If there are module specific inputs, enter their values.
  7. If needed, modify the Controller Pods Count.
  8. If needed, select Install Controller Pods on Control Plane and/or Install Node Pods on Control Plane.
  9. Enter the Namespace. The default value is csi-<array>.
  10. Click on Generate YAML.
  11. A manifest file, values.yaml will be generated and downloaded.
  12. A section Run the following commands to install will be displayed.
  13. Run the commands displayed to install Dell CSI Driver and Modules using the generated manifest file.

Installation Using Helm Chart

Steps

NOTE: Ensure Helm 3.x, namespace, and secrets are set up before installing the Helm chart.

  • Add the Dell Helm Charts repository.

    On your terminal, run each of the commands below:

     helm repo add dell https://dell.github.io/helm-charts
         helm repo update
        
  • Copy the downloaded values.yaml file.

  • Look over all the fields in the generated values.yaml and fill in/adjust any as needed.

NOTE: The CSM Installation Wizard generates values.yaml with the minimal inputs required to install the CSM. To configure additional parameters in values.yaml, you can follow the steps outlined in CSI Driver ,Observability, Replication, ,Resiliency.

  • When the PowerFlex driver is installed using values generated by installation wizard,if any changes to MDM the user run following command to update it.

    echo -n '<MDM_IPS>' | base64
        kubectl create secret generic vxflexos-config -n vxflexos --from-file=config=samples/config.yaml --from-literal=MDM='xx.xx.xx.xx,yy.yy.yy.yy&zz.zz.zz.zz' 
        
  • If Observability is checked in the wizard, refer to Observability to export metrics to Prometheus and load the Grafana dashboards.
  • If Authorization is checked in the wizard, only the sidecar is enabled. Refer to Authorization to install and configure the CSM Authorization Proxy Server.
  • If Replication is checked in the wizard, refer to Replication on configuring communication between Kubernetes clusters.
  • If your Kubernetes distribution doesn’t have the Volume Snapshot feature enabled, refer to this section to install the Volume Snapshot CRDs and the default snapshot controller.

  • Install the Helm chart.

    On your terminal, run this command:

    helm install <release-name> dell/container-storage-modules -n <namespace> --version <container-storage-module chart-version> -f <values.yaml location>
        

    Example: helm install powerstore dell/container-storage-modules -n csi-powerstore –version 1.4.0 -f values.yaml


Volume Snapshot Requirements (Optional)

For detailed snapshot setup procedure, click here.

Volume Health Monitoring (Optional)

Volume Health Monitoring feature is optional and by default this feature is disabled for drivers when installed via helm. To enable this feature, add the below block to the driver manifest before installing the driver. This ensures to install external health monitor sidecar. To get the volume health state value under controller should be set to true as seen below. To get the volume stats value under node should be set to true.

 controller:
   healthMonitor:
     # enabled: Enable/Disable health monitor of CSI volumes
     # Allowed values:
     #   true: enable checking of health condition of CSI volumes
     #   false: disable checking of health condition of CSI volumes
     # Default value: None
     enabled: false
     # interval: Interval of monitoring volume health condition
     # Allowed values: Number followed by unit (s,m,h)
     # Examples: 60s, 5m, 1h
     # Default value: 60s
     interval: 60s

 node:
   healthMonitor:
     # enabled: Enable/Disable health monitor of CSI volumes- volume usage, volume condition
     # Allowed values:
     #   true: enable checking of health condition of CSI volumes
     #   false: disable checking of health condition of CSI volumes
     # Default value: None
     enabled: false

Install Driver

Steps

  1. Run git clone -b v2.13.0 https://github.com/dell/csi-powerstore.git to clone the git repository.

  2. Ensure that you have created namespace where you want to install the driver. You can run kubectl create namespace csi-powerstore to create a new one. “csi-powerstore” is just an example. You can choose any name for the namespace. But make sure to align to the same namespace during the whole installation.

  3. Edit samples/secret/secret.yaml file and configure connection information for your PowerStore arrays changing following parameters:

    • endpoint: defines the full URL path to the PowerStore API.
    • globalID: specifies what storage cluster the driver should use
    • username, password: defines credentials for connecting to array.
    • skipCertificateValidation: defines if we should use insecure connection or not.
    • isDefault: defines if we should treat the current array as a default.
    • blockProtocol: defines what transport protocol we should use (FC, ISCSI, NVMeTCP, NVMeFC, None, or auto).
    • nasName: defines what NAS should be used for NFS volumes.
    • nfsAcls (Optional): defines permissions - POSIX mode bits or NFSv4 ACLs, to be set on NFS target mount directory. NFSv4 ACls are supported for NFSv4 shares on NFSv4 enabled NAS servers only. POSIX ACLs are not supported and only POSIX mode bits are supported for NFSv3 shares.

    Add more blocks similar to above for each PowerStore array if necessary. If replication feature is enabled, ensure the secret includes all the PowerStore arrays involved in replication.

    User Privileges

    The username specified in secret.yaml must be from the authentication providers of PowerStore. The user must have the correct user role to perform the actions. The minimum requirement is Storage Operator.

  4. Create the secret by running

    kubectl create secret generic powerstore-config -n csi-powerstore --from-file=config=secret.yaml
    
  5. Create storage classes using ones from samples/storageclass folder as an example and apply them to the Kubernetes cluster by running kubectl create -f <path_to_storageclass_file>

    If you do not specify arrayID parameter in the storage class then the array that was specified as the default would be used for provisioning volumes.

  6. Download the default values.yaml file

    cd dell-csi-helm-installer && wget -O my-powerstore-settings.yaml https://github.com/dell/helm-charts/raw/csi-powerstore-2.13.0/charts/csi-powerstore/values.yaml
    
  7. Edit the newly created values file and provide values for the following parameters vi my-powerstore-settings.yaml:

    Parameters
  1. Install the driver using csi-install.sh bash script by running
    ./csi-install.sh --namespace csi-powerstore --values ./my-powerstore-settings.yaml --helm-charts-version <version>
    
    • After that the driver should be installed, you can check the condition of driver pods by running kubectl get all -n csi-powerstore

NOTE:

  • The parameter --helm-charts-version is optional and if you do not specify the flag, by default the csi-install.sh script will clone the version of the helm chart that is specified in the driver’s csi-install.sh file. If you wish to install the driver using a different version of the helm chart, you need to include this flag. Also, remember to delete the helm-charts repository present in the csi-powerstore directory if it was cloned before.
  • For detailed instructions on how to run the install scripts, refer to the readme document in the dell-csi-helm-installer folder.
  • By default, the driver scans available SCSI adapters and tries to register them with the storage array under the SCSI hostname using node.nodeNamePrefix and the ID read from the file pointed to by node.nodeIDPath. If an adapter is already registered with the storage under a different hostname, the adapter is not used by the driver.
  • A hostname the driver uses for registration of adapters is in the form <nodeNamePrefix>-<nodeID>-<nodeIP>. By default, these are csi-node and the machine ID read from the file /etc/machine-id.
  • To customize the hostname, for example if you want to make them more user friendly, adjust nodeIDPath and nodeNamePrefix accordingly. For example, you can set nodeNamePrefix to k8s and nodeIDPath to /etc/hostname to produce names such as k8s-worker1-192.168.1.2.
  • (Optional) Enable additional Mount Options - A user is able to specify additional mount options as needed for the driver.
    • Mount options are specified in storageclass yaml under mountOptions.
    • WARNING: Before utilizing mount options, you must first be fully aware of the potential impact and understand your environment’s requirements for the specified option.

Storage Classes

The CSI driver for PowerStore version 1.3 and later, dell-csi-helm-installer does not create any storage classes as part of the driver installation. A wide set of annotated storage class manifests have been provided in the samples/storageclass folder. Use these samples to create new storage classes to provision storage.

What happens to my existing storage classes?

Upgrading from an older version of the driver: The storage classes will be deleted if you upgrade the driver. If you wish to continue using those storage classes, you can patch them and apply the annotation “helm.sh/resource-policy”: keep before performing an upgrade.

Note: If you continue to use the old storage classes, you may not be able to take advantage of any new storage class parameter supported by the driver.

Steps to create storage class:

There are samples storage class yaml files available under samples/storageclass. These can be copied and modified as needed.

  1. Edit the sample storage class yaml file and update following parameters:
  • arrayID: specifies what storage cluster the driver should use, if not specified driver will use storage cluster specified as default in samples/secret/secret.yaml
  • csi.storage.k8s.io/fstype: specifies what filesystem type driver should use, possible variants ext3, ext4, xfs, nfs, if not specified driver will use ext4 by default.
  • nfsAcls (Optional): defines permissions - POSIX mode bits or NFSv4 ACLs, to be set on NFS target mount directory.
  • allowedTopologies (Optional): If you want you can also add topology constraints.
    allowedTopologies:
      - matchLabelExpressions:
          - key: csi-powerstore.dellemc.com/12.34.56.78-iscsi
      # replace "-iscsi" with "-fc", "-nvmetcp" or "-nvmefc" or "-nfs" at the end to use FC, NVMeTCP, NVMeFC or NFS enabled hosts
      # replace "12.34.56.78" with PowerStore endpoint IP
            values:
              - "true"
    
  1. Create your storage class by using kubectl:
    kubectl create -f <path_to_storageclass_file>
    

NOTE: Deleting a storage class has no impact on a running Pod with mounted PVCs. You cannot provision new PVCs until at least one storage class is newly created.

Volume Snapshot Class

Starting with CSI PowerStore v1.4.0, dell-csi-helm-installer will not create any Volume Snapshot Class during the driver installation. There is a sample Volume Snapshot Class manifest present in the samples/volumesnapshotclass folder. Please use this sample to create a new Volume Snapshot Class to create Volume Snapshots.

Dynamically update the powerstore secrets

CSI PowerStore supports the ability to dynamically modify array information within the secret, allowing users to update credentials for the PowerStore arrays, in-flight, without restarting the driver.

ℹ️ NOTE:: Updates to the secret that include adding a new array, or modifying the endpoint, globalID, or blockProtocol parameters require the driver to be restarted to properly pick up and process the changes.

User can update the secret using the following commands:

kubectl create secret generic powerstore-config -n csi-powerstore --from-file=config=secret.yaml -o yaml --dry-run=client | kubectl replace -f -

Dynamic Logging Configuration

This feature is introduced in CSI Driver for PowerStore version 2.0.0.

Helm based installation

As part of driver installation, a ConfigMap with the name powerstore-config-params is created, which contains attributes CSI_LOG_LEVEL which specifies the current log level of CSI driver and CSI_LOG_FORMAT which specifies the current log format of CSI driver.

Users can set the default log level by specifying log level to logLevel and log format to logFormat attribute in my-powerstore-settings.yaml during driver installation.

To change the log level or log format dynamically to a different value user can edit the same values.yaml, and run the following command

cd dell-csi-helm-installer
./csi-install.sh --namespace csi-powerstore --values ./my-powerstore-settings.yaml --upgrade

Note: here my-powerstore-settings.yaml is a values.yaml file which user has used for driver installation.