HPE CSI Driver for Kubernetes Helm chart

The HPE CSI Driver for Kubernetes leverages Hewlett Packard Enterprise storage platforms to provide scalable and persistent storage for stateful applications.

Prerequisites

  • Most recent Kubernetes distributions are supported
  • Recent Ubuntu, SLES or RHEL (and its derives) compute nodes connected to their respective official package repositories
  • Helm 3 (Version >= 3.2.0 required)

Refer to Compatibility & Support on SCOD for currently supported versions of Kubernetes and compute nodes.

Depending on which Container Storage Provider (CSP) is being used, other prerequisites and requirements may apply, such as storage platform OS and features.

Configuration and installation

The following table lists the configurable parameters of the chart and their default values.

Parameter Description Default
disable.nimble Disable HPE Nimble Storage CSP Service. false
disable.primera Disable HPE Primera (and 3PAR) CSP Service. false
disable.alletra6000 Disable HPE Alletra 5000/6000 CSP Service. false
disable.alletra9000 Disable HPE Alletra 9000 CSP Service. false
disableNodeConformance Disable automatic installation of iSCSI/Multipath Packages. false
disableNodeGetVolumeStats Disable NodeGetVolumeStats call to CSI driver. false
imagePullPolicy Image pull policy (Always, IfNotPresent, Never). IfNotPresent
iscsi.chapUser Username for iSCSI CHAP authentication. ""
iscsi.chapPassword Password for iSCSI CHAP authentication. ""
logLevel Log level. Can be one of info, debug, trace, warn and error. info
registry Registry to pull HPE CSI Driver container images from. quay.io
kubeletRootDir The kubelet root directory path. /var/lib/kubelet
controller.labels Additional labels for HPE CSI Driver controller Pods. {}
controller.nodeSelector Node labels for HPE CSI Driver controller Pods assignment. {}
controller.affinity Affinity rules for the HPE CSI Driver controller Pods. {}
controller.tolerations Node taints to tolerate for the HPE CSI Driver controller Pods. []
csp.labels Additional labels for CSP Pods. {}
csp.nodeSelector Node labels for CSP Pods assignment. {}
csp.affinity Affinity rules for the CSP Pods. {}
csp.tolerations Node taints to tolerate for the CSP Pods. []
node.labels Additional labels for HPE CSI Driver node Pods. {}
node.nodeSelector Node labels for HPE CSI Driver node Pods assignment. {}
node.affinity Affinity rules for the HPE CSI Driver node Pods. {}
node.tolerations Node taints to tolerate for the HPE CSI Driver node Pods. []

It's recommended to create a values.yaml file from the corresponding release of the chart and edit it to fit the environment the chart is being deployed to. Download and edit a sample file.

These are the bare minimum required parameters for a successful deployment to an iSCSI environment if CHAP authentication is required.

iscsi:
  chapUser: "<username>"
  chapPassword: "<password>"

Tweak any additional parameters to suit the environment or as prescribed by HPE.

Installing the chart

To install the chart with the name my-hpe-csi-driver:

Add HPE helm repo:

helm repo add hpe-storage https://hpe-storage.github.io/co-deployments/
helm repo update

Install the latest chart:

kubectl create ns hpe-storage
helm install my-hpe-csi-driver hpe-storage/hpe-csi-driver -n hpe-storage -f myvalues.yaml

Note: myvalues.yaml is optional if no parameters are overridden from defaults. Also pay attention to what the latest version of the chart is. If it's labeled with prerelease and a "beta" tag, add --version X.Y.Z to install a "stable" chart.

Upgrading the chart

Due to the helm limitation to not support upgrade of CRDs between different chart versions, helm chart upgrade is not supported. Our recommendation is to uninstall the existing chart and install the chart with the desired version. CRDs will be preserved between uninstall and install.

Upgrading 2.0.0 to 2.1.0

Before version 2.0.0 is uninstalled, the following CRDs needs to be updated.

Important: If there are HPE Alletra 9000, Primera or 3PAR Remote Copy Groups configured on the cluster, follow the next steps before uninstallation.

Update RCG Info

This step is only necessary if there are HPE Alletra 9000, Primera or 3PAR Remote Copy Groups configured on the cluster. If there are none, proceed to the next step.

Change kubectl context into the Namespace where the HPE CSI Driver is installed. The most common is "hpe-storage".

kubectl config set-context --current --namespace=hpe-storage

Create the Job using the below commands, which will modify the "rcg-info" record to the new key "RCGCreatedByCSP".

kubectl apply -f https://raw.githubusercontent.com/hpe-storage/co-deployments/master/yaml/rcg-info/v1.0.0/convert-rcg-info.yaml

Completion of job status can be verified using the below command.

kubectl wait --for=condition=complete --timeout=600s job/primera3par-rcg-info

Continue to update the CRDs followed by uninstalling the chart.

Update CRDs

Before reinstallation of the driver, apply the new CRDs.

kubectl apply -f https://raw.githubusercontent.com/hpe-storage/co-deployments/master/helm/charts/hpe-csi-driver/crds/hpevolumeinfos_v2_crd.yaml
kubectl apply -f https://raw.githubusercontent.com/hpe-storage/co-deployments/master/helm/charts/hpe-csi-driver/crds/hpevolumegroupinfos_v2_crd.yaml
kubectl apply -f https://raw.githubusercontent.com/hpe-storage/co-deployments/master/helm/charts/hpe-csi-driver/crds/snapshotgroupinfos_v2_crd.yaml
kubectl apply -f https://raw.githubusercontent.com/hpe-storage/co-deployments/master/helm/charts/hpe-csi-driver/crds/hpereplicated_deviceinfo_v2_crd.yaml

Uninstalling the chart

To uninstall the my-hpe-csi-driver chart:

helm uninstall my-hpe-csi-driver -n hpe-storage

Note: Due to a limitation in Helm, CRDs are not deleted as part of the chart uninstall.

Alternative install method

In some cases it's more practical to provide the local configuration via the helm CLI directly. Specify each parameter using the --set key=value[,key=value] argument to helm install. These will take precedence over entries in values.yaml. For example:

helm install my-hpe-csi-driver hpe-storage/hpe-csi-driver -n hpe-storage \
  --set iscsi.chapUsername=admin \
  --set iscsi.chapPassword=xxxxxxxx

Using persistent storage with Kubernetes

Enable dynamic provisioning of persistent storage by creating a StorageClass API object that references a Secret which maps to a supported HPE primary storage backend. Refer to the HPE CSI Driver for Kubernetes documentation on HPE Storage Container Orchestration Documentation. Also, it's helpful to be familiar with persistent storage concepts in Kubernetes prior to deploying stateful workloads.

Support

The HPE CSI Driver for Kubernetes Helm chart is fully supported by HPE.

Formal support statements for each HPE supported CSP is available on SCOD. Use this facility for formal support of your HPE storage products, including the Helm chart.

Community

Please file any issues, questions or feature requests you may have here (do not use this facility for support inquiries of your HPE storage product, see SCOD for support). You may also join our Slack community to chat with HPE folks close to this project. We hang out in #NimbleStorage, #3par-primera, and #Kubernetes. Sign up at slack.hpedev.io and login at hpedev.slack.com

Contributing

We value all feedback and contributions. If you find any issues or want to contribute, please feel free to open an issue or file a PR. More details in CONTRIBUTING.md

License

This is open source software licensed using the Apache License 2.0. Please see LICENSE for details.