Available with limitations in: CSE Lite (1.73), CSE Pro (1.73)
Available without limitations in: EE
The module lifecycle stage: General 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
StorageClassfor thecsi.hpe.comCSI driver. Caution! Supported HPE storage families (selected per HPEStorageConnection viaspec.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-controllermodule 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-hpemodule. This will result in the following actions across all cluster nodes:- registration of the CSI driver;
- launch of service pods for the
csi-hpecomponents.
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 -wCreating 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
EOFkubectl 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