The HPE Volume Driver for Kubernetes FlexVolume Plugin leverages HPE storage platforms to provide scalable and persistent storage for stateful applications. This chart also deploys the HPE Dynamic Provisioner for Kubernetes.
- Upstream Kubernetes version 1.11 or later
- Other Kubernetes distributions supported
- Rancher 2.x
- OpenShift 3.10, 3.11 (4.x will not be supported, see CSI Driver Helm chart)
- More distributions will be listed as tests are ongoing
- Recent Ubuntu, CentOS or RHEL compute nodes connected to their respective official package repositories
Depending on which pluginType
is being used, other prerequisites and requirements may apply.
- NimbleOS 5.0.8 or later
- NimbleOS 5.1.3 or later
- Amazon EKS 1.12.x/1.13.x
- Microsoft AKS 1.12.x/1.13.x
- US Regions Only
The following table lists the configurable parameters of the FlexVolume driver chart and their default values.
Parameter | Description | Default |
---|---|---|
backend | HPE storage platform API endpoint. | 192.168.1.1 |
pluginType | Backend plugin type to use. Currently nimble and cv are supported. |
nimble |
username | Username for the backend. Access key for HPE Cloud Volumes. | admin |
password | Password for the backend. Access secret for HPE Cloud Volumes. | admin |
protocol | Data plane protocol (fc , iscsi ). |
iscsi |
fsType | Type of file to format volumes with (ext4, ext3, xfs, btrfs). | xfs |
logLevel | Log level. Can be one of info , debug , trace , warn and error |
info |
mountConflictDelay | Wait this long (in seconds) before forcefully taking over a volume from an isolated or crashed node. | 120 |
flavor | Kubernetes distribution specific tweaks. Supported flavors include k8s , ocp , eks , aks and rke . |
k8s |
podsMountDir | This is the directory where the kubelet bind mounts the volume for pods. May differ between Kubernetes distributions. | /var/lib/kubelet/pods |
storageClass.name | The name to assign the created StorageClass. | hpe-standard |
storageClass.create | Enables creation of StorageClass to consume this hpe-flexvolume-driver instance. | true |
storageClass.defaultClass | Whether to set the created StorageClass as the clusters default StorageClass. | false |
nimble.config | HPE Nimble Storage volume config parameters. | - |
cv.config | HPE Cloud Volumes volume config parameters. | - |
It's recommended to create a values.yaml file from corresponding release and edit it to fit the environment the chart is being deployed to. Download and edit the sample file.
Example values.yaml
using a Nimble backend:
---
backend: 192.168.1.1
username: admin
password: admin
pluginType: nimble
fsType: xfs
storageClass:
defaultClass: true
This will connect the driver to a Nimble based backend with management IP address of 192.168.1.1
and format new volumes with a XFS filesystem.
The nimble.config
or cv.config
stanza will be hosted in a ConfigMap
and can be used to tweak default parmaters and also override StorageClass
parameters. More information on these stanzas can be found in the ADVANCED.md documentation.
Example nimble.config
stanza:
nimble:
config:
limitIOPS: "-1"
limitMBPS: "-1"
perfPolicy: DockerDefault
Example cv.config
stanza:
cv:
config:
snapPrefix: BaseFor
automatedConnection: true
existingCloudSubnet: 10.1.0.0/24
region: us-east-1
privateCloud: vpc-data
cloudComputeProvider: "Amazon AWS"
perfPolicy: Other
volumeType: PF
encryption: true
protectionTemplate: twicedaily:4
destroyOnRm: true
limitIOPS: "1000"
initiators:
- '"eth0"'
privateCloudResourceGroup: ""
Note: Storage class parameters will override the settings in defaults
and global
section.
Certain distributions demand certain tweaks to the variables for the driver and dynamic provisioner to operate correctly. See each platform for details.
This is the default operating mode, no tweaks are needed.
Applicable to Red Hat OpenShift 3.10 and 3.11. 4.x is not supported*.
Key | Value | Description |
---|---|---|
podsMountDir | /var/lib/origin/openshift.local.volumes | This is the directory where the kubelet bind mounts the volume for pods. |
* = If experimentation is desirable with OpenShift 4.x, set flexVolumeExec
default path for ocp to /etc/kubernetes/kubelet-plugins/volume/exec
. The driver will only work on RHEL 7.x nodes.
Applicable to installing the Helm Chart via the Rancher catalog system.
Key | Value | Description |
---|---|---|
flavor | rke | Required and prepopulated by default. |
podsMountDir | /var/lib/kubelet/volumeplugins | This is the directory where the kubelet bind mounts the volume for pods. Required and prepopulated by default. |
To install the chart with the name hpe-flexvolume
:
helm repo add hpe-storage https://hpe-storage.github.io/co-deployments/
helm install hpe-storage/hpe-flexvolume-driver --namespace kube-system --name hpe-flexvolume -f values.yaml
Note: Omitting the --name
flag will generate a human readable name.
To check status of the hpe-flexvolume
deployment:
helm status hpe-flexvolume
To uninstall/delete the hpe-flexvolume
deployment:
helm delete hpe-flexvolume --purge
In some cases it's more practical provide the local configuration via the helm
command directly. Specify each parameter using the --set key=value[,key=value]
argument to helm install
. For example:
helm install --name hpe-flexvolume hpe/hpe-flexvolume-driver \
--set backend=X.X.X.X --set username=admin --set password=xxxxxxxxx \
--set protocol=iscsi --set fsType=xfs
To enable dynamic provisioning of PersistentVolume
through the use of PersistentVolumeClaim
API objects, a StorageClass
needs to be declared on the cluster. Please see the HPE Volume Driver for Kubernetes FlexVolume Plugin repository for the official documentation for this Helm chart. Also, it's helpful to be familar with persistent storage concepts in Kubernetes prior to deploying stateful workloads.
The HPE Volume Driver for Kubernetes FlexVolume Plugin Helm chart is supported by the respective platform team. Currently supported platforms:
- HPE Nimble Storage
- HPE Cloud Volumes
Please file issues through the regular support channels for the particular platform. Feature requests or general questions to developers may be filed through the GitHub issue tracker for this project.
You may also join our Slack community to chat with HPE folks close to this project for inquiries not requring our immediate response. We hang out in #NimbleStorage
and #Kubernetes
at slack.hpedev.io.
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
This is open source software licensed using the Apache License 2.0. Please see LICENSE for details.