The HPE CSI Driver is deployed by using industry standard means, either a Helm chart or an Operator. An "advanced install" from object configuration files is provided as reference for partners, OEMs and users wanting to perform customizations and their own packaging or deployment methodoligies.
- Delivery vehichles
- Advanced install
As different methods of installation are provided, it might not be too obvious which delivery vehicle is the right one.
Need help deciding?¶
|I have a...||Then you need...|
|Vanilla upstream Kubernetes cluster on a supported host OS.||The Helm chart|
|Red Hat OpenShift 4.x cluster.||The certified CSI operator for OpenShift|
|Supported environment with multiple backends.||Helm chart with additional Secrets and StorageClasses|
|HPE Container Platform environment.||If using Nimble, use the supplied CSI driver, for 3PAR/Primera, use the Helm chart|
|Operator Life-cycle Manager (OLM) environment.||The CSI operator|
|Unsupported host OS/Kubernetes cluster and like to tinker.||The advanced install|
If it's not clear what you should use for your environment, the Helm chart is most likely the correct answer.
Helm is the package manager for Kubernetes. Software is being delivered in a format designated as a "chart". Helm is a standalone CLI that interacts with the Kubernetes API server using your
The official Helm chart for the HPE CSI Driver for Kubernetes is hosted on hub.helm.sh. The chart supports both Helm 2 and Helm 3. In an effort to avoid duplicate documentation, please see the chart for instructions on how to deploy the CSI driver using Helm.
- Go to the chart on hub.helm.sh.
The Operator pattern is based on the idea that software should be instantiated and run with a set of custom controllers in Kubernetes. It creates a native experience for any software running in Kubernetes.
The official HPE CSI Operator for Kubernetes is hosted on OperatorHub.io. The CSI Operator images are hosted both on docker.io and officially certified containers on Red Hat Container Catalog.
Red Hat OpenShift Container Platform¶
The HPE CSI Operator for Kubernetes is a fully certified Operator for OpenShift. There are a few tweaks needed and there's a separate section for OpenShift.
- See Red Hat OpenShift in the partner ecosystem section
Upstream Kubernetes and others¶
Follow the documentation from the respective upstream distributions on how to deploy an Operator. In most cases, the Operator Lifecyle Manager (OLM) needs to be installed separately.
As an example, we'll deploy version
0.14.1 of the OLM to be able to manage the HPE CSI Operator. Familiarize yourself while is the latest stable release on the OLM GitHub project's release page.
curl -sL https://github.com/operator-framework/operator-lifecycle-manager/releases/download/0.14.1/install.sh | bash -s 0.14.1
Install the HPE CSI Operator.
kubectl create -f https://operatorhub.io/install/hpe-csi-driver-operator.yaml
The Operator will be installed in
my-hpe-csi-driver-operator namespace. Watch it come up by inspecting the
kubectl get csv -n my-hpe-csi-driver-operator
HPECSIDriver object needs to be instantiated. Create a file named
hpe-csi-operator.yaml and populate it according to which CSP is being deployed.
apiVersion: storage.hpe.com/v1 kind: HPECSIDriver metadata: name: csi-driver spec: backendType: nimble imagePullPolicy: IfNotPresent logLevel: info disableNodeConformance: false secret: backend: 192.168.1.1 create: true password: admin servicePort: '8080' username: admin storageClass: allowVolumeExpansion: true create: true defaultClass: false name: hpe-standard parameters: accessProtocol: iscsi fsType: xfs volumeDescription: Volume created by the HPE CSI Driver for Kubernetes
apiVersion: storage.hpe.com/v1 kind: HPECSIDriver metadata: name: csi-driver spec: backendType: primera3par imagePullPolicy: IfNotPresent logLevel: info disableNodeConformance: false secret: backend: 192.168.1.1 create: true password: 3pardata servicePort: '8080' username: 3paradm storageClass: allowVolumeExpansion: true create: true defaultClass: false name: hpe-standard parameters: accessProtocol: iscsi fsType: xfs volumeDescription: Volume created by the HPE CSI Driver for Kubernetes
HPECSIDriver with the manifest.
kubectl create -f hpe-csi-operator.yaml
The CSI driver is now ready for use. Proceed to the next section to learn about using the driver.
This guide is primarily written to accommodate a highly manual installation on upstream Kubernetes or partner OEMs engaged with HPE to bundle the HPE CSI Driver in a custom distribution. Installation steps may vary for different vendors and flavors of Kubernetes.
The following example walks through deployment of the latest CSI driver.
It's highly recommended to use either the Helm chart or Operator to install the HPE CSI Driver for Kubernetes and the associated Container Storage Providers. Only venture down manual installation if your requirements can't be met by the Helm chart or Operator.
Manual CSI driver install¶
This guide assumes using a supported HPE storage backend. Use the tabs in the code blocks to pick which platform being used.
Create a secret with backend details¶
Replace the password string (
YWRtaW4=) with a base64 encoded version of your password and replace the
backend with the IP address of the CSP backend and save it as
apiVersion: v1 kind: Secret metadata: name: nimble-secret namespace: kube-system stringData: serviceName: nimble-csp-svc servicePort: "8080" backend: 192.168.1.1 username: admin data: # echo -n "admin" | base64 password: YWRtaW4=
apiVersion: v1 kind: Secret metadata: name: primera3par-secret namespace: kube-system stringData: serviceName: primera3par-csp-svc servicePort: "8080" backend: 10.10.0.1 username: 3paradm data: # echo -n "3pardata" | base64 password: M3BhcmRhdGE=
If you are deploying 3PAR or Primera and Nimble CSPs in the same cluster, each
secret name must be unique.
Create the secret using
kubectl create -f secret.yaml
You should now see the
Secret in the
kubectl -n kube-system get secret/nimble-secret NAME TYPE DATA AGE nimble-secret Opaque 5 149m
kubectl -n kube-system get secret/primera3par-secret NAME TYPE DATA AGE primera3par-secret Opaque 5 147m
Deploy the CSI driver and sidecars for the relevant Kubernetes version.
These object configuration files are common for all versions of Kubernetes.
Worker node IO settings:
kubectl create -f https://raw.githubusercontent.com/hpe-storage/co-deployments/master/yaml/csi-driver/v1.2.0/hpe-linux-config.yaml
Container Storage Provider:
kubectl create -f https://raw.githubusercontent.com/hpe-storage/co-deployments/master/yaml/csi-driver/v1.2.0/nimble-csp.yaml
kubectl create -f https://raw.githubusercontent.com/hpe-storage/co-deployments/master/yaml/csi-driver/v1.2.0/3par-primera-csp.yaml
The above instructions assumes you have an array with a supported platform OS installed. Please see the requirements section of the respective CSP.
kubectl create -f https://raw.githubusercontent.com/hpe-storage/co-deployments/master/yaml/csi-driver/v1.1.0/hpe-csi-k8s-1.13.yaml
Latest supported CSI driver version is 1.1.0 for Kubernetes 1.13.
kubectl create -f https://raw.githubusercontent.com/hpe-storage/co-deployments/master/yaml/csi-driver/v1.2.0/hpe-csi-k8s-1.14.yaml
kubectl create -f https://raw.githubusercontent.com/hpe-storage/co-deployments/master/yaml/csi-driver/v1.2.0/hpe-csi-k8s-1.15.yaml
kubectl create -f https://raw.githubusercontent.com/hpe-storage/co-deployments/master/yaml/csi-driver/v1.2.0/hpe-csi-k8s-1.16.yaml
kubectl create -f https://raw.githubusercontent.com/hpe-storage/co-deployments/master/yaml/csi-driver/v1.2.0/hpe-csi-k8s-1.17.yaml
kubectl create -f https://raw.githubusercontent.com/hpe-storage/co-deployments/master/yaml/csi-driver/v1.2.0/hpe-csi-k8s-1.18.yaml
Depending on which version being deployed, different API objects gets created.