The csi-hpe module is designed to manage volumes using HPE storage systems. It enables creating StorageClass resources in Kubernetes using the HPEStorageClass custom resource.
For more details about the module, refer to the module documentation.
Module architecture
The following simplifications are made in the diagram:
- The diagram shows containers in different pods interacting directly with each other. In reality, they communicate via the corresponding Kubernetes Services (internal load balancers). Service names are omitted if they are obvious from the diagram context. Otherwise, the Service name is shown above the arrow.
- Pods may run multiple replicas. However, each pod is shown as a single replica in the diagram.
The Level 2 C4 architecture of the csi-hpe module and its interactions with other components of Deckhouse Kubernetes Platform (DKP) are shown in the following diagram:

Module components
The module consists of the following components:
-
Controller: A controller that reconciles the following custom resources:
- HPEStorageConnection: Parameters for connecting to HPE storage systems.
- HPEStorageClass: Defines configuration for Kubernetes StorageClass.
HPEStorageClass defines the connection protocol, resource pool name, filesystem type, and reclaim policy.
The controller also synchronizes the
storage.deckhouse.io/csi-hpe-nodelabel on cluster nodes according to thespec.settings.nodeSelectorvalue in the ModuleConfig custom resource.It consists of the following containers:
- controller: Main container.
- webhooks: Sidecar container implementing a webhook server for StorageClass validation.
-
CSI driver (hpe): CSI driver implementation for the
csi.hpe.comprovisioner. To study the typical CSI driver architecture used in DKP, refer to the CSI driver documentation page. -
Primera3par-csp: A service container provider (Container Storage Provider, CSP) responsible for integrating the CSI driver with HPE Primera and 3PAR storage systems. It handles communication between Kubernetes and the storage arrays, manages session handling, and path replication.
Module interactions
The module interacts with the following components:
-
Kube-apiserver:
- Watches PersistentVolume, PersistentVolumeClaim, VolumeAttachment, and StorageClass resources.
- Reconciles HPEStorageConnection and HPEStorageClass custom resources.
- Creates and updates VolumeSnapshotClass, Secret, and StorageClass resources.
-
HPE storage system: Creates, deletes, and manages volumes, and provides multipath data access.
The following external components interact with the module:
- Kube-apiserver: Validates StorageClass resources.