Available with limitations in CSE Lite (1.73), CSE Pro (1.73)

Available without limitations in:  EE

The module lifecycle stageGeneral Availability
The module has requirements for installation

The module installs and configures the CSI driver for HPE SAN. The module allows you to create a StorageClass in Kubernetes by creating Kubernetes custom resources HPEStorageClass.

Caution! The user is not allowed to create a StorageClass for the csi.hpe.com CSI driver. Caution! Supported HPE storage families (selected per HPEStorageConnection via spec.storageType):

  • Primera3Par — HPE 3PAR / Primera / Alletra 9000 / Alletra MP B10000 (block);
  • NimbleAlletra — HPE Nimble and HPE Alletra 5000/6000.

For any other HPE SAN please contact tech support.

Supported access modes for the module: RWO, RWX — only in DVP.

System requirements and recommendations

Requirements

  • Presence of a deployed and configured HPE SAN.
  • Unique iqn in /etc/iscsi/initiatorname.iscsi on each of Kubernetes Nodes
  • The snapshot-controller module must be enabled in the cluster (required for volume snapshot functionality).

Quickstart guide

Note that all commands must be run on a machine that has administrator access to the Kubernetes API.

Enabling module

  • Enable the csi-hpe module. This will result in the following actions across all cluster nodes:
    • registration of the CSI driver;
    • launch of service pods for the csi-hpe components.
kubectl apply -f - <<EOF
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: csi-hpe
spec:
  enabled: true
  version: 1
EOF
  • Wait for the module to become Ready.
kubectl get module csi-hpe -w

Creating a StorageClass

To create a StorageClass, you need to use the HPEStorageClass and HPEStorageConnection resource. Here is an example command to create such a resource:

kubectl apply -f -<<EOF
apiVersion: storage.deckhouse.io/v1alpha1
kind: HPEStorageConnection
metadata:
  name: hpe
spec:
  # Selects the CSP (Container Storage Provider) the module will route this
  # connection to. The corresponding Service / port is derived from this
  # value — they are no longer set explicitly. Allowed values:
  #   - Primera3Par   — HPE 3PAR / Primera / Alletra 9000 / Alletra MP B10000 (block).
  #   - NimbleAlletra — HPE Nimble and HPE Alletra 5000/6000.
  storageType: Primera3Par
  controlPlane:
    backendAddress: "172.17.1.55" # mutable, SAN API address
    username: "3paradm" # mutable, API username
    password: "3pardata" # mutable, API password
EOF
kubectl apply -f -<<EOF
apiVersion: storage.deckhouse.io/v1alpha1
kind: HPEStorageClass
metadata:
  name: hpe
spec:
  pool: "test-cpg"
  accessProtocol: "iscsi" # required, immutable, one of: iscsi, fc
  fsType: "xfs"           # required, mutable, one of: xfs, ext4
  storageConnectionName: "hpe" # required, immutable, must match an existing HPEStorageConnection
  reclaimPolicy: Delete   # required, immutable, one of: Delete, Retain
  cpg: "test-cpg"         # optional, immutable
EOF
  • You can check objects creation (Phase must be Created):
kubectl get hpestorageconnections.storage.deckhouse.io <hpestorageconnection name>
kubectl get hpestorageclasses.storage.deckhouse.io <hpestorageclass name>

Checking module health

You can verify the functionality of the module using the instructions here