rancher-c2

Signed-off-by: Michael Mattsson <michael.mattsson@gmail.com>
pull/480/head
Michael Mattsson 2022-08-05 09:52:35 -07:00
parent 0a526bc223
commit c2fc26fa23
30 changed files with 3470 additions and 0 deletions

Binary file not shown.

View File

@ -0,0 +1,29 @@
annotations:
artifacthub.io/license: Apache-2.0
artifacthub.io/links: |
- name: Documentation
url: https://scod.hpedev.io/csi_driver
artifacthub.io/prerelease: "false"
catalog.cattle.io/certified: partner
catalog.cattle.io/display-name: HPE CSI Driver for Kubernetes
catalog.cattle.io/namespace: hpe-storage
catalog.cattle.io/os: linux
catalog.cattle.io/release-name: hpe-csi-driver
apiVersion: v1
appVersion: 2.2.0
description: A Helm chart for installing the HPE CSI Driver for Kubernetes
home: https://hpe.com/storage/containers
icon: https://raw.githubusercontent.com/hpe-storage/co-deployments/master/docs/assets/hpedev.png
keywords:
- HPE
- Storage
- CSI
kubeVersion: 1.21 - 1.24
maintainers:
- email: datamattsson@hpe.com
name: datamattsson
name: hpe-csi-driver
sources:
- https://github.com/hpe-storage/co-deployments
- https://github.com/hpe-storage/csi-driver
version: 2.2.0

View File

@ -0,0 +1,166 @@
# HPE CSI Driver for Kubernetes Helm chart
The [HPE CSI Driver for Kubernetes](https://scod.hpedev.io/csi_driver/index.html) leverages Hewlett Packard Enterprise storage platforms to provide scalable and persistent storage for stateful applications.
## Prerequisites
- Upstream Kubernetes version >= 1.18
- Most Kubernetes distributions are supported
- Recent Ubuntu, SLES, CentOS or RHEL compute nodes connected to their respective official package repositories
- Helm 3 (Version >= 3.2.0 required)
Depending on which [Container Storage Provider](https://scod.hpedev.io/container_storage_provider/index.html) (CSP) is being used, other prerequisites and requirements may apply, such as storage platform OS and features.
- [HPE Alletra 6000 and Nimble Storage](https://scod.hpedev.io/container_storage_provider/hpe_nimble_storage/index.html)
- [HPE Alletra 9000, Primera and 3PAR](https://scod.hpedev.io/container_storage_provider/hpe_3par_primera/index.html)
## Configuration and installation
The following table lists the configurable parameters of the chart and their default values.
| Parameter | Description | Default |
|---------------------------|------------------------------------------------------------------------|------------------|
| disable.nimble | Disable HPE Nimble Storage CSP `Service`. | false |
| disable.primera | Disable HPE Primera (and 3PAR) CSP `Service`. | false |
| disable.alletra6000 | Disable HPE Alletra 6000 CSP `Service`. | false |
| disable.alletra9000 | Disable HPE Alletra 9000 CSP `Service`. | false |
| disableNodeConformance | Disable automatic installation of iSCSI/Multipath Packages. | false |
| disableNodeGetVolumeStats | Disable NodeGetVolumeStats call to CSI driver. | false |
| imagePullPolicy | Image pull policy (`Always`, `IfNotPresent`, `Never`). | IfNotPresent |
| iscsi.chapUser | Username for iSCSI CHAP authentication. | "" |
| iscsi.chapPassword | Password for iSCSI CHAP authentication. | "" |
| logLevel | Log level. Can be one of `info`, `debug`, `trace`, `warn` and `error`. | info |
| registry | Registry to pull HPE CSI Driver container images from. | quay.io |
| kubeletRootDir | The kubelet root directory path. | /var/lib/kubelet |
| controller.labels | Additional labels for HPE CSI Driver controller Pods. | {} |
| controller.nodeSelector | Node labels for HPE CSI Driver controller Pods assignment. | {} |
| controller.affinity | Affinity rules for the HPE CSI Driver controller Pods. | {} |
| controller.tolerations | Node taints to tolerate for the HPE CSI Driver controller Pods. | [] |
| csp.labels | Additional labels for CSP Pods. | {} |
| csp.nodeSelector | Node labels for CSP Pods assignment. | {} |
| csp.affinity | Affinity rules for the CSP Pods. | {} |
| csp.tolerations | Node taints to tolerate for the CSP Pods. | [] |
| node.labels | Additional labels for HPE CSI Driver node Pods. | {} |
| node.nodeSelector | Node labels for HPE CSI Driver node Pods assignment. | {} |
| node.affinity | Affinity rules for the HPE CSI Driver node Pods. | {} |
| node.tolerations | Node taints to tolerate for the HPE CSI Driver node Pods. | [] |
It's recommended to create a [values.yaml](https://github.com/hpe-storage/co-deployments/blob/master/helm/values/csi-driver) file from the corresponding release of the chart and edit it to fit the environment the chart is being deployed to. Download and edit [a sample file](https://github.com/hpe-storage/co-deployments/blob/master/helm/values/csi-driver).
These are the bare minimum required parameters for a successful deployment to an iSCSI environment if CHAP authentication is required.
```
iscsi:
chapUser: "<username>"
chapPassword: "<password>"
```
Tweak any additional parameters to suit the environment or as prescribed by HPE.
### Installing the chart
To install the chart with the name `my-hpe-csi-driver`:
Add HPE helm repo:
```
helm repo add hpe-storage https://hpe-storage.github.io/co-deployments/
helm repo update
```
Install the latest chart:
```
kubectl create ns hpe-storage
helm install my-hpe-csi-driver hpe-storage/hpe-csi-driver -n hpe-storage -f myvalues.yaml
```
**Note**: `myvalues.yaml` is optional if no parameters are overridden from defaults. Also pay attention to what the latest version of the chart is. If it's labeled with `prerelease` and a "beta" tag, add `--version X.Y.Z` to install a "stable" chart.
### Upgrading the chart
Due to the [helm limitation](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/#some-caveats-and-explanations) to not support upgrade of CRDs between different chart versions, helm chart upgrade is not supported.
Our recommendation is to uninstall the existing chart and install the chart with the desired version. CRDs will be preserved between uninstall and install.
#### Upgrading 2.0.0 to 2.1.0
Before version 2.0.0 is uninstalled, the following CRDs needs to be updated.
**Important:** If there are HPE Alletra 9000, Primera or 3PAR Remote Copy Groups configured on the cluster, follow the [next steps](#update-rcg-info) before uninstallation.
##### Update RCG Info
This step is only necessary if there are HPE Alletra 9000, Primera or 3PAR Remote Copy Groups configured on the cluster. If there are none, proceed to the [next step](#update-crds).
Change kubectl context into the Namespace where the HPE CSI Driver is installed. The most common is "hpe-storage".
```
kubectl config set-context --current --namespace=hpe-storage
```
Create the Job using the below commands, which will modify the "rcg-info" record to the new key "RCGCreatedByCSP".
```
kubectl apply -f https://raw.githubusercontent.com/hpe-storage/co-deployments/master/yaml/rcg-info/v1.0.0/convert-rcg-info.yaml
```
Completion of job status can be verified using the below command.
```
kubectl wait --for=condition=complete --timeout=600s job/primera3par-rcg-info
```
Continue to [update the CRDs](#update-crds) followed by [uninstalling the chart](#uninstalling-the-chart).
##### Update CRDs
Before reinstallation of the driver, apply the new CRDs.
```
kubectl apply -f https://raw.githubusercontent.com/hpe-storage/co-deployments/master/helm/charts/hpe-csi-driver/crds/hpevolumeinfos_v2_crd.yaml
kubectl apply -f https://raw.githubusercontent.com/hpe-storage/co-deployments/master/helm/charts/hpe-csi-driver/crds/hpevolumegroupinfos_v2_crd.yaml
kubectl apply -f https://raw.githubusercontent.com/hpe-storage/co-deployments/master/helm/charts/hpe-csi-driver/crds/snapshotgroupinfos_v2_crd.yaml
kubectl apply -f https://raw.githubusercontent.com/hpe-storage/co-deployments/master/helm/charts/hpe-csi-driver/crds/hpereplicated_deviceinfo_v2_crd.yaml
```
#### Uninstalling the chart
To uninstall the `my-hpe-csi-driver` chart:
```
helm uninstall my-hpe-csi-driver -n hpe-storage
```
**Note**: Due to a limitation in Helm, CRDs are not deleted as part of the chart uninstall.
### Alternative install method
In some cases it's more practical to provide the local configuration via the `helm` CLI directly. Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. These will take precedence over entries in [values.yaml](https://github.com/hpe-storage/co-deployments/blob/master/helm/values/csi-driver). For example:
```
helm install my-hpe-csi-driver hpe-storage/hpe-csi-driver -n hpe-storage \
--set iscsi.chapUsername=admin \
--set iscsi.chapPassword=xxxxxxxx
```
## Using persistent storage with Kubernetes
Enable dynamic provisioning of persistent storage by creating a `StorageClass` API object that references a `Secret` which maps to a supported HPE primary storage backend. Refer to the [HPE CSI Driver for Kubernetes](https://scod.hpedev.io/csi_driver/deployment.html#add_a_hpe_storage_backend) documentation on [HPE Storage Container Orchestration Documentation](https://scod.hpedev.io/). Also, it's helpful to be familiar with [persistent storage concepts](https://kubernetes.io/docs/concepts/storage/volumes/) in Kubernetes prior to deploying stateful workloads.
## Support
The HPE CSI Driver for Kubernetes Helm chart is fully supported by HPE.
Formal support statements for each HPE supported CSP is [available on SCOD](https://scod.hpedev.io/legal/support). Use this facility for formal support of your HPE storage products, including the Helm chart.
## Community
Please file any issues, questions or feature requests you may have [here](https://github.com/hpe-storage/co-deployments/issues) (do not use this facility for support inquiries of your HPE storage product, see [SCOD](https://scod.hpedev.io/legal/support) for support). You may also join our Slack community to chat with HPE folks close to this project. We hang out in `#NimbleStorage`, `#3par-primera`, and `#Kubernetes`. Sign up at [slack.hpedev.io](https://slack.hpedev.io/) and login at [hpedev.slack.com](https://hpedev.slack.com/)
## Contributing
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](https://github.com/hpe-storage/co-deployments/blob/master/CONTRIBUTING.md)
## License
This is open source software licensed using the Apache License 2.0. Please see [LICENSE](https://github.com/hpe-storage/co-deployments/blob/master/LICENSE) for details.

View File

@ -0,0 +1,3 @@
# HPE CSI Driver for Kubernetes
The [HPE CSI Driver for Kubernetes](https://github.com/hpe-storage/csi-driver) leverages HPE storage platforms to provide scalable and persistent storage for stateful applications.

View File

@ -0,0 +1,70 @@
---
#############################################
############ HPE Node Info CRD ############
#############################################
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
creationTimestamp: null
name: hpenodeinfos.storage.hpe.com
spec:
group: storage.hpe.com
names:
kind: HPENodeInfo
plural: hpenodeinfos
scope: Cluster
versions:
- name: v1
# Each version can be enabled/disabled by Served flag.
served: true
# One and only one version must be marked as the storage version.
storage: true
schema:
openAPIV3Schema:
properties:
apiVersion:
description: "APIVersion defines the versioned schema of this representation of an object."
type: string
kind:
description: "Kind is a string value representing the REST resource this object represents"
type: string
spec:
description: "spec defines the desired characteristics of a HPE nodeinfo requested by a user."
properties:
chapPassword:
description: "The CHAP Password"
type: string
chapUser:
description: "The CHAP User Name"
type: string
iqns:
description: "List of IQNs configured on the node."
items:
type: string
type: array
networks:
description: "List of networks configured on the node."
items:
type: string
type: array
uuid:
description: "The UUID of the node."
type: string
wwpns:
description: "List of WWPNs configured on the node."
items:
type: string
type: array
required:
- uuid
- networks
type: object
required:
- spec
type: object
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@ -0,0 +1,115 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
creationTimestamp: null
name: hpereplicationdeviceinfos.storage.hpe.com
spec:
group: storage.hpe.com
names:
kind: HPEReplicationDeviceInfo
plural: hpereplicationdeviceinfos
shortNames:
- hperdi
scope: Cluster
versions:
- name: v1
# Each version can be enabled/disabled by Served flag.
served: true
# One and only one version must be marked as the storage version.
storage: false
schema:
openAPIV3Schema:
type: object
#x-kubernetes-preserve-unknown-fields: true
properties:
hpeReplicationDeviceInfos:
description: List of HPE Replicated Device Information
type: object
items:
type: object
properties:
targets:
description: List of Target Array Details
type: object
items:
description: Target Array Details
type: object
properties:
targetName:
description: Target Name of the array
type: string
targetCpg:
description: Target CPG of the array
type: string
targetSnapCpg:
description: Target Snap CPG of the array
type: string
targetSecret:
description: Secret of the replicated array
type: string
targetMode:
description: Replication Mode
type: string
targetSecretNamespace:
description: Namespace of secret
type: string
required:
- targetName
- targetCpg
- targetSecret
- targetSecretNamespace
- name: v2
# Each version can be enabled/disabled by Served flag.
served: true
# One and only one version must be marked as the storage version.
storage: true
schema:
openAPIV3Schema:
type: object
x-kubernetes-preserve-unknown-fields: true
properties:
hpeReplicationDeviceInfos:
description: List of HPE Replicated Device Information
type: object
items:
type: object
properties:
targets:
description: List of Target Array Details
type: object
items:
description: Target Array Details
type: object
properties:
targetName:
description: Target Name of the array
type: string
targetCpg:
description: Target CPG of the array
type: string
targetSnapCpg:
description: Target Snap CPG of the array
type: string
targetSecret:
description: Secret of the replicated array
type: string
targetMode:
description: Replication Mode
type: string
targetSecretNamespace:
description: Namespace of secret
type: string
required:
- targetName
- targetCpg
- targetSecret
- targetSecretNamespace
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@ -0,0 +1,124 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
creationTimestamp: null
name: hpevolumegroupinfos.storage.hpe.com
spec:
group: storage.hpe.com
names:
kind: HPEVolumeGroupInfo
plural: hpevolumegroupinfos
shortNames:
- hpevgi
scope: Cluster
versions:
- name: v1
# Each version can be enabled/disabled by Served flag.
served: true
# One and only one version must be marked as the storage version.
storage: false
schema:
openAPIV3Schema:
type: object
#x-kubernetes-preserve-unknown-fields: true
properties:
hpeVolumeGroupInfos:
description: List of HPE volume groups configured for 3PAR/Primera arrays.
items:
type: object
properties:
uuid:
description: The UUID of the node.
type: string
record:
description: Metadata for the volume group
type: object
snapshotGroups:
description: Snapshot groups that are linked to this volume group
items:
type: object
properties:
id:
description: ID of the snapshot group
type: string
name:
description: Name of the snapshot group
type: string
type: object
volumes:
description: Volumes that are members in this volume group
items:
type: object
properties:
volumeId:
description: ID of the member volume
type: string
volumeName:
description: Name of the member volume
type: string
type: object
type: object
- name: v2
# Each version can be enabled/disabled by Served flag.
served: true
# One and only one version must be marked as the storage version.
storage: true
schema:
openAPIV3Schema:
type: object
x-kubernetes-preserve-unknown-fields: true
properties:
hpeVolumeGroupInfos:
description: List of HPE volume groups configured for 3PAR/Primera arrays.
items:
type: object
properties:
uuid:
description: The UUID of the node.
type: string
record:
description: Metadata for the volume group
type: object
snapshotGroups:
description: Snapshot groups that are linked to this volume group
items:
type: object
properties:
id:
description: ID of the snapshot group
type: string
name:
description: Name of the snapshot group
type: string
type: object
volumes:
description: Volumes that are members in this volume group
items:
type: object
properties:
volumeId:
description: ID of the member volume
type: string
volumeName:
description: Name of the member volume
type: string
type: object
type: object
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@ -0,0 +1,68 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
creationTimestamp: null
name: hpevolumeinfos.storage.hpe.com
spec:
group: storage.hpe.com
names:
kind: HPEVolumeInfo
plural: hpevolumeinfos
scope: Cluster
# list of versions supported by this CustomResourceDefinition
versions:
- name: v1
# Each version can be enabled/disabled by Served flag.
served: true
# One and only one version must be marked as the storage version.
storage: false
schema:
openAPIV3Schema:
type: object
#x-kubernetes-preserve-unknown-fields: true
properties:
hpeVolumes:
description: List of HPE volumes configured for 3PAR/Primera arrays.
type: object
items:
type: object
properties:
uuid:
description: The UUID of the node.
type: string
record:
description: Metadata for the volume
type: object
- name: v2
# Each version can be enabled/disabled by Served flag.
served: true
# One and only one version must be marked as the storage version.
storage: true
schema:
openAPIV3Schema:
type: object
x-kubernetes-preserve-unknown-fields: true
properties:
hpeVolumes:
description: List of HPE volumes configured for 3PAR/Primera arrays.
type: object
items:
type: object
properties:
uuid:
description: The UUID of the node.
type: string
record:
description: Metadata for the volume
type: object
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@ -0,0 +1,112 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
creationTimestamp: null
name: hpesnapshotgroupinfos.storage.hpe.com
spec:
group: storage.hpe.com
names:
kind: HPESnapshotGroupInfo
plural: hpesnapshotgroupinfos
shortNames:
- hpesgi
scope: Cluster
versions:
- name: v1
# Each version can be enabled/disabled by Served flag.
served: true
# One and only one version must be marked as the storage version.
storage: false
schema:
openAPIV3Schema:
type: object
#x-kubernetes-preserve-unknown-fields: true
properties:
hpeSnapshotGroupInfos:
description: List of HPE snapshot groups created for 3PAR/Primera arrays.
type: object
items:
type: object
properties:
uuid:
description: The UUID of the node.
type: string
record:
description: Metadata for the volume group
type: object
snapshotVolumes:
description: Snapshot volumes that are part of this snapshot group
type: object
items:
type: object
properties:
srcVolumeId:
description: ID of the volume that is the source of this snapshot volume
type: string
srcVolumeName:
description: Name of the volume that is the source of this snapshot volume
type: string
snapshotId:
description: Snapshot volume Id
type: string
snapshotName:
description: Snapshot volume name
type: string
- name: v2
# Each version can be enabled/disabled by Served flag.
served: true
# One and only one version must be marked as the storage version.
storage: true
schema:
openAPIV3Schema:
type: object
x-kubernetes-preserve-unknown-fields: true
properties:
hpeSnapshotGroupInfos:
description: List of HPE snapshot groups created for 3PAR/Primera arrays.
type: object
items:
type: object
properties:
uuid:
description: The UUID of the node.
type: string
record:
description: Metadata for the volume group
type: object
snapshotVolumes:
description: Snapshot volumes that are part of this snapshot group
type: object
items:
type: object
properties:
srcVolumeId:
description: ID of the volume that is the source of this snapshot volume
type: string
srcVolumeName:
description: Name of the volume that is the source of this snapshot volume
type: string
snapshotId:
description: Snapshot volume Id
type: string
snapshotName:
description: Snapshot volume name
type: string
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@ -0,0 +1,60 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: snapshotgroupclasses.storage.hpe.com
spec:
conversion:
strategy: None
group: storage.hpe.com
names:
kind: SnapshotGroupClass
listKind: SnapshotGroupClassList
plural: snapshotgroupclasses
singular: snapshotgroupclass
scope: Cluster
versions:
- name: v1
schema:
openAPIV3Schema:
description: SnapshotGroupClass specifies parameters that a underlying
storage system uses when creating a volumegroup snapshot. A specific SnapshotGroupClass
is used by specifying its name in a VolumeGroupSnapshot object. SnapshotGroupClasses
are non-namespaced
properties:
apiVersion:
description: APIVersion defines the versioned schema of this representation
of an object.
type: string
deletionPolicy:
description: deletionPolicy determines whether a SnapshotGroupContent
created through the SnapshotGroupClass should be deleted when its
bound SnapshotGroup is deleted. Supported values are "Retain" and
"Delete". "Retain" means that the SnapshotGroupContent and its physical
snapshotGroup on underlying storage system are kept. "Delete" means that
the SnapshotGroupContent and its physical snapshotGroup on underlying
storage system are deleted. Required.
enum:
- Delete
- Retain
type: string
snapshotter:
description: snapshotter is the name of the storage driver that handles this
SnapshotGroupClass. Required.
type: string
kind:
description: Kind is a string value representing the REST resource
this object represents.
type: string
parameters:
additionalProperties:
type: string
description: parameters is a key-value map with storage driver specific
parameters for creating snapshotGroups. These values are opaque to Kubernetes.
type: object
required:
- deletionPolicy
- snapshotter
type: object
served: true
storage: true

View File

@ -0,0 +1,104 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: snapshotgroupcontents.storage.hpe.com
spec:
conversion:
strategy: None
group: storage.hpe.com
names:
kind: SnapshotGroupContent
listKind: SnapshotGroupContentList
plural: snapshotgroupcontents
singular: snapshotgroupcontent
scope: Cluster
versions:
- name: v1
schema:
openAPIV3Schema:
description: SnapshotGroupContent represents the actual "on-disk" snapshotGroup
object in the underlying storage system
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource
this object represents. Servers may infer this from the endpoint the
client submits requests to. Cannot be updated. In CamelCase. More
info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
type: string
spec:
description: spec defines properties of a SnapshotGroupContent created
by the underlying storage system. Required.
properties:
deletionPolicy:
description: deletionPolicy determines whether this SnapshotGroupContent
and its physical snapshotgroup on the underlying storage system should
be deleted when its bound SnapshotGroup is deleted. Supported
values are "Retain" and "Delete". "Retain" means that the SnapshotGroupContent
and its physical snapshotGroup on underlying storage system are kept.
"Delete" means that the SnapshotGroupContent and its physical
snapshotGroup on underlying storage system are deleted.
Required.
enum:
- Delete
- Retain
type: string
source:
description: source specifies from where a snapshotGroup will be created.Required.
properties:
snapshotGroupHandle:
description: snapshotGroupHandle specifies the snapshotGroup Id
of a pre-existing snapshotGroup on the underlying storage system.
This field is immutable.
type: string
type: object
snapshotGroupClassName:
description: name of the SnapshotGroupClass to which this snapshotGroup belongs.
type: string
snapshotGroupRef:
description: snapshotGroupRef specifies the SnapshotGroup object
to which this SnapshotGroupContent object is bound. SnapshotGroup.Spec.SnapshotGroupContentName
field must reference to this SnapshotGroupContent's name for
the bidirectional binding to be valid.
Required.
properties:
apiVersion:
description: API version of the referent.
type: string
kind:
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
type: string
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
namespace:
description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
type: string
resourceVersion:
description: 'Specific resourceVersion to which this reference
is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency'
type: string
uid:
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
type: string
type: object
volumeSnapshotContentNames:
description: list of volumeSnapshotContentNames associated with this snapshotGroups
type: array
items:
type: string
required:
- deletionPolicy
- source
- snapshotGroupClassName
type: object
required:
- spec
type: object
served: true
storage: true

View File

@ -0,0 +1,83 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: snapshotgroups.storage.hpe.com
spec:
conversion:
strategy: None
group: storage.hpe.com
names:
kind: SnapshotGroup
listKind: SnapshotGroupList
plural: snapshotgroups
singular: snapshotgroup
scope: Namespaced
versions:
- name: v1
schema:
openAPIV3Schema:
description: SnapshotGroup is a user's request for creating a snapshotgroup
properties:
apiVersion:
description: APIVersion defines the versioned schema of this representation
of an object.
type: string
kind:
description: 'Kind is a string value representing the REST resource
this object represents'
type: string
spec:
description: spec defines the desired characteristics of a snapshotGroup
requested by a user.
Required.
properties:
source:
description: source specifies where a snapshotGroup will be created.
This field is immutable after creation. Required.
properties:
kind:
description: kind of the source (VolumeGroup) is the only supported one.
type: string
apiGroup:
description: apiGroup of the source. Current supported is storage.hpe.com
type: string
name:
description: name specifies the volumeGroupName of the VolumeGroup object in the same namespace as the SnapshotGroup object where the snapshotGroup should be dynamically taken from. This field is immutable.
type: string
type: object
volumeSnapshotClassName:
description: name of the volumeSnapshotClass to create pre-provisioned snapshots
type: string
snapshotGroupClassName:
description: snapshotGroupClassName is the name of the SnapshotGroupClass requested by the SnapshotGroup.
type: string
snapshotGroupContentName:
description: snapshotGroupContentName is the name of the snapshotGroupContent the snapshotGroup is bound.
type: string
required:
- source
- volumeSnapshotClassName
- snapshotGroupClassName
type: object
status:
description: status represents the current information of a snapshotGroup.
properties:
creationTime:
description: creationTime is the timestamp when the point-in-time
snapshotGroup is taken by the underlying storage system.
format: date-time
type: string
phase:
description: the state of the snapshotgroup
enum:
- Pending
- Ready
- Failed
type: string
type: object
required:
- spec
type: object
served: true
storage: true

View File

@ -0,0 +1,60 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: volumegroupclasses.storage.hpe.com
spec:
conversion:
strategy: None
group: storage.hpe.com
names:
kind: VolumeGroupClass
listKind: VolumeGroupClassList
plural: volumegroupclasses
singular: volumegroupclass
scope: Cluster
versions:
- name: v1
schema:
openAPIV3Schema:
description: VolumeGroupClass specifies parameters that a underlying
storage system uses when creating a volumegroup. A specific VolumeGroupClass
is used by specifying its name in a VolumeGroup object. VolumeGroupClasses
are non-namespaced
properties:
apiVersion:
description: APIVersion defines the versioned schema of this representation
of an object.
type: string
deletionPolicy:
description: deletionPolicy determines whether a VolumeGroupContent
created through the VolumeGroupClass should be deleted when its
bound VolumeGroup is deleted. Supported values are "Retain" and
"Delete". "Retain" means that the VolumeGroupContent and its physical
volumeGroup on underlying storage system are kept. "Delete" means that
the VolumeGroupContent and its physical volumeGroup on underlying
storage system are deleted. Required.
enum:
- Delete
- Retain
type: string
provisioner:
description: provisioner is the name of the storage driver that handles this
VolumeGroupClass. Required.
type: string
kind:
description: Kind is a string value representing the REST resource
this object represents.
type: string
parameters:
additionalProperties:
type: string
description: parameters is a key-value map with storage driver specific
parameters for creating volumeGroups. These values are opaque to Kubernetes.
type: object
required:
- deletionPolicy
- provisioner
type: object
served: true
storage: true

View File

@ -0,0 +1,96 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: volumegroupcontents.storage.hpe.com
spec:
conversion:
strategy: None
group: storage.hpe.com
names:
kind: VolumeGroupContent
listKind: VolumeGroupContentList
plural: volumegroupcontents
singular: volumegroupcontent
scope: Cluster
versions:
- name: v1
schema:
openAPIV3Schema:
description: VolumeGroupContent represents the actual "on-disk" volumeGroup
object in the underlying storage system
properties:
apiVersion:
description: APIVersion defines the versioned schema of this representation
of an object.
type: string
kind:
description: Kind is a string value representing the REST resource
this object represents.
type: string
spec:
description: spec defines properties of a VolumeGroupContent created
by the underlying storage system. Required.
properties:
deletionPolicy:
description: deletionPolicy determines whether this VolumeGroupContent
and its physical volumegroup on the underlying storage system should
be deleted when its bound VolumeGroup is deleted. Supported
values are "Retain" and "Delete". "Retain" means that the VolumeGroupContent
and its physical volumeGroup on underlying storage system are kept.
"Delete" means that the VolumeGroupContent and its physical
volumeGroup on underlying storage system are deleted.
Required.
enum:
- Delete
- Retain
type: string
source:
description: source specifies from where a volumeGroup will be created.Required.
properties:
volumeGroupHandle:
description: volumeGroupHandle specifies the volumeGroup Id
of a pre-existing volumeGroup on the underlying storage system.
This field is immutable.
type: string
type: object
volumeGroupClassName:
description: name of the VolumeGroupClass to which this volumeGroup belongs.
type: string
volumeGroupRef:
description: volumeGroupRef specifies the VolumeGroup object
to which this VolumeGroupContent object is bound. VolumeGroup.Spec.VolumeGroupContentName
field must reference to this VolumeGroupContent's name for
the bidirectional binding to be valid.
Required.
properties:
apiVersion:
description: API version of the referent.
type: string
kind:
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
type: string
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
namespace:
description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
type: string
resourceVersion:
description: 'Specific resourceVersion to which this reference
is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency'
type: string
uid:
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
type: string
type: object
required:
- deletionPolicy
- source
- volumeGroupClassName
type: object
required:
- spec
type: object
served: true
storage: true

View File

@ -0,0 +1,69 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: volumegroups.storage.hpe.com
spec:
conversion:
strategy: None
group: storage.hpe.com
names:
kind: VolumeGroup
listKind: VolumeGroupList
plural: volumegroups
singular: volumegroup
scope: Namespaced
versions:
- name: v1
schema:
openAPIV3Schema:
description: VolumeGroup is a user's request for creating a volumegroup
properties:
apiVersion:
description: APIVersion defines the versioned schema of this representation
of an object.
type: string
kind:
description: 'Kind is a string value representing the REST resource
this object represents'
type: string
spec:
description: spec defines the desired characteristics of a volumeGroup
requested by a user.
Required.
properties:
volumeGroupClassName:
description: name of the volumeGroupClassName to create volumeGroups
type: string
persistentVolumeClaimNames:
description: persistentVolumeClaimNames are the name of the PVC associated with this volumeGroup.
type: array
items:
type: string
volumeGroupContentName:
description: volumeGroupContentName is the name of the volumeGroupContent to which the volumeGroup is bound.
type: string
required:
- volumeGroupClassName
type: object
status:
description: status represents the current information of a volumeGroup.
properties:
creationTime:
description: creationTime is the timestamp when the point-in-time
volumeGroup is taken by the underlying storage system.
format: date-time
type: string
phase:
description: the state of the volumegroup
enum:
- Pending
- Ready
- Failed
type: string
type: object
required:
- spec
type: object
served: true
storage: true

View File

@ -0,0 +1,405 @@
{
"Nimble": {
"Default": [
{
"category": "iscsi",
"severity": "warning",
"description": "Manual startup of iSCSI nodes on boot. Can be set in /etc/iscsi/iscsid.conf",
"parameter": "startup",
"recommendation": "manual"
},
{
"category": "iscsi",
"severity": "warning",
"description": "Replacement_timeout of 10 seconds is recommended for faster failover of I/O by multipath on path failures. Can be set in /etc/iscsi/iscsid.conf",
"parameter": "replacement_timeout",
"recommendation": "10"
},
{
"category": "iscsi",
"severity": "warning",
"description": "Minimum login timeout of 15 seconds is recommended with iSCSI. Can be set in /etc/iscsi/iscsid.conf",
"parameter": "login_timeout",
"recommendation": "15"
},
{
"category": "iscsi",
"severity": "warning",
"description": "Minimum timeout of 10 seconds is recommended with noop requests. Can be set in /etc/iscsi/iscsid.conf",
"parameter": "noop_out_timeout",
"recommendation": "10"
},
{
"category": "iscsi",
"severity": "warning",
"description": "Minimum cmds_max of 512 is recommended for each session if handling multiple LUN's. Can be set in /etc/iscsi/iscsid.conf",
"parameter": "cmds_max",
"recommendation": "512"
},
{
"category": "iscsi",
"severity": "warning",
"description": "Minimum queue_depth of 256 is recommended for each iSCSI session/path. Can be set in /etc/iscsi/iscsid.conf",
"parameter": "queue_depth",
"recommendation": "256"
},
{
"category": "iscsi",
"severity": "warning",
"description": "Minimum number of sessions per iSCSI login is recommended to be 1 by default. If additional sessions are needed this can be set in /etc/iscsi/iscsid.conf. If NCM is running, please change min_session_per_array in /etc/ncm.conf and restart nlt service instead",
"parameter": "nr_sessions",
"recommendation": "1"
},
{
"category": "multipath",
"severity": "critical",
"description": "product attribute recommended to be set to Server in /etc/multipath.conf",
"parameter": "product",
"recommendation": "\"Server\""
},
{
"category": "multipath",
"severity": "critical",
"description": "alua prioritizer is recommended. Can be set in /etc/multipath.conf",
"parameter": "prio",
"recommendation": "alua"
},
{
"category": "multipath",
"severity": "critical",
"description": "scsi_dh_alua device handler is recommended. Can be set in /etc/multipath.conf",
"parameter": "hardware_handler",
"recommendation": "\"1 alua\""
},
{
"category": "multipath",
"severity": "warning",
"description": "immediate failback setting is recommended. Can be set in /etc/multipath.conf",
"parameter": "failback",
"recommendation": "immediate"
},
{
"category": "multipath",
"severity": "critical",
"description": "immediately fail i/o on transient path failures to retry on other paths, value=1. Can be set in /etc/multipath.conf",
"parameter": "fast_io_fail_tmo",
"recommendation": "5"
},
{
"category": "multipath",
"severity": "critical",
"description": "queueing is recommended for 150 seconds, with no_path_retry value of 30. Can be set in /etc/multipath.conf",
"parameter": "no_path_retry",
"recommendation": "30"
},
{
"category": "multipath",
"severity": "warning",
"description": "service-time path selector is recommended. Can be set in /etc/multipath.conf",
"parameter": "path_selector",
"recommendation": "\"service-time 0\""
},
{
"category": "multipath",
"severity": "critical",
"description": "vendor attribute recommended to be set to Nimble in /etc/multipath.conf",
"parameter": "vendor",
"recommendation": "\"Nimble\""
},
{
"category": "multipath",
"severity": "critical",
"description": "group paths according to ALUA path priority of active/standby. Recommended to be set to group_by_prio in /etc/multipath.conf",
"parameter": "path_grouping_policy",
"recommendation": "group_by_prio"
},
{
"category": "multipath",
"severity": "critical",
"description": "tur path checker is recommended. Can be set in /etc/multipath.conf",
"parameter": "path_checker",
"recommendation": "tur"
},
{
"category": "multipath",
"severity": "critical",
"description": "infinite value is recommended for timeout in cases of device loss for FC. Can be set in /etc/multipath.conf",
"parameter": "dev_loss_tmo",
"recommendation": "infinity"
}
],
"Ubuntu": null
},
"3PARdata": {
"Default": [
{
"category": "iscsi",
"severity": "warning",
"description": "Manual startup of iSCSI nodes on boot. Can be set in /etc/iscsi/iscsid.conf",
"parameter": "startup",
"recommendation": "manual"
},
{
"category": "iscsi",
"severity": "warning",
"description": "Replacement_timeout of 10 seconds is recommended for faster failover of I/O by multipath on path failures. Can be set in /etc/iscsi/iscsid.conf",
"parameter": "replacement_timeout",
"recommendation": "10"
},
{
"category": "iscsi",
"severity": "warning",
"description": "Minimum login timeout of 15 seconds is recommended with iSCSI. Can be set in /etc/iscsi/iscsid.conf",
"parameter": "login_timeout",
"recommendation": "15"
},
{
"category": "iscsi",
"severity": "warning",
"description": "Minimum timeout of 10 seconds is recommended with noop requests. Can be set in /etc/iscsi/iscsid.conf",
"parameter": "noop_out_timeout",
"recommendation": "10"
},
{
"category": "iscsi",
"severity": "warning",
"description": "Minimum cmds_max of 512 is recommended for each session if handling multiple LUN's. Can be set in /etc/iscsi/iscsid.conf",
"parameter": "cmds_max",
"recommendation": "512"
},
{
"category": "iscsi",
"severity": "warning",
"description": "Minimum queue_depth of 256 is recommended for each iSCSI session/path. Can be set in /etc/iscsi/iscsid.conf",
"parameter": "queue_depth",
"recommendation": "256"
},
{
"category": "iscsi",
"severity": "warning",
"description": "Minimum number of sessions per iSCSI login is recommended to be 1 by default. If additional sessions are needed this can be set in /etc/iscsi/iscsid.conf. If NCM is running, please change min_session_per_array in /etc/ncm.conf and restart nlt service instead",
"parameter": "nr_sessions",
"recommendation": "1"
},
{
"category": "multipath",
"severity": "critical",
"description": "product attribute recommended to be set to VV in /etc/multipath.conf",
"parameter": "product",
"recommendation": "\"VV\""
},
{
"category": "multipath",
"severity": "critical",
"description": "alua prioritizer is recommended. Can be set in /etc/multipath.conf",
"parameter": "prio",
"recommendation": "alua"
},
{
"category": "multipath",
"severity": "critical",
"description": "scsi_dh_alua device handler is recommended. Can be set in /etc/multipath.conf",
"parameter": "hardware_handler",
"recommendation": "\"1 alua\""
},
{
"category": "multipath",
"severity": "warning",
"description": "immediate failback setting is recommended. Can be set in /etc/multipath.conf",
"parameter": "failback",
"recommendation": "immediate"
},
{
"category": "multipath",
"severity": "critical",
"description": "immediately fail i/o on transient path failures to retry on other paths, value=1. Can be set in /etc/multipath.conf",
"parameter": "fast_io_fail_tmo",
"recommendation": "10"
},
{
"category": "multipath",
"severity": "critical",
"description": "queueing is recommended for 150 seconds, with no_path_retry value of 18. Can be set in /etc/multipath.conf",
"parameter": "no_path_retry",
"recommendation": "18"
},
{
"category": "multipath",
"severity": "warning",
"description": "round-robin 0 path selector is recommended. Can be set in /etc/multipath.conf",
"parameter": "path_selector",
"recommendation": "\"round-robin 0\""
},
{
"category": "multipath",
"severity": "critical",
"description": "vendor attribute recommended to be set to 3PARdata. Can be set in /etc/multipath.conf",
"parameter": "vendor",
"recommendation": "\"3PARdata\""
},
{
"category": "multipath",
"severity": "critical",
"description": "group paths according to ALUA path priority of active/standby. Recommended to be set to group_by_prio in /etc/multipath.conf",
"parameter": "path_grouping_policy",
"recommendation": "group_by_prio"
},
{
"category": "multipath",
"severity": "critical",
"description": "infinite value is recommended for timeout in cases of device loss for FC. Can be set in /etc/multipath.conf",
"parameter": "dev_loss_tmo",
"recommendation": "infinity"
},
{
"category": "multipath",
"severity": "critical",
"description": "tur path checker is recommended. Can be set in /etc/multipath.conf",
"parameter": "path_checker",
"recommendation": "tur"
},
{
"category": "multipath",
"severity": "critical",
"description": "0 value is recommended for features. Can be set in /etc/multipath.conf",
"parameter": "features",
"recommendation": "\"0\""
},
{
"category": "multipath",
"severity": "critical",
"description": "uniform rr_weight is recommended. Can be set in /etc/multipath.conf",
"parameter": "rr_weight",
"recommendation": "\"uniform\""
},
{
"category": "multipath",
"severity": "critical",
"description": "rr_min_io_rq 1 is recommended. Can be set in /etc/multipath.conf",
"parameter": "rr_min_io_rq",
"recommendation": "1"
},
{
"category": "multipath",
"severity": "critical",
"description": "detect_prio yes is recommended. Can be set in /etc/multipath.conf",
"parameter": "detect_prio",
"recommendation": "yes"
}
],
"Ubuntu": [
{
"category": "iscsi",
"severity": "warning",
"description": "Automatic startup of iSCSI nodes on boot. Can be set in /etc/iscsi/iscsid.conf",
"parameter": "startup",
"recommendation": "automatic"
},
{
"category": "iscsi",
"severity": "warning",
"description": "Replacement_timeout of 10 seconds is recommended for faster failover of I/O by multipath on path failures. Can be set in /etc/iscsi/iscsid.conf",
"parameter": "replacement_timeout",
"recommendation": "10"
},
{
"category": "iscsi",
"severity": "warning",
"description": "Minimum interval of 10 seconds is recommended with noop requests. Can be set in /etc/iscsi/iscsid.conf",
"parameter": "noop_out_interval",
"recommendation": "10"
},
{
"category": "multipath",
"severity": "critical",
"description": "product attribute recommended to be set to VV in /etc/multipath.conf",
"parameter": "product",
"recommendation": "\"VV\""
},
{
"category": "multipath",
"severity": "critical",
"description": "alua prioritizer is recommended. Can be set in /etc/multipath.conf",
"parameter": "prio",
"recommendation": "alua"
},
{
"category": "multipath",
"severity": "critical",
"description": "scsi_dh_alua device handler is recommended. Can be set in /etc/multipath.conf",
"parameter": "hardware_handler",
"recommendation": "\"1 alua\""
},
{
"category": "multipath",
"severity": "warning",
"description": "immediate failback setting is recommended. Can be set in /etc/multipath.conf",
"parameter": "failback",
"recommendation": "immediate"
},
{
"category": "multipath",
"severity": "critical",
"description": "queueing is recommended for 150 seconds, with no_path_retry value of 18. Can be set in /etc/multipath.conf",
"parameter": "no_path_retry",
"recommendation": "18"
},
{
"category": "multipath",
"severity": "warning",
"description": "round-robin 0 path selector is recommended. Can be set in /etc/multipath.conf",
"parameter": "path_selector",
"recommendation": "\"round-robin 0\""
},
{
"category": "multipath",
"severity": "critical",
"description": "vendor attribute recommended to be set to 3PARdata in /etc/multipath.conf",
"parameter": "vendor",
"recommendation": "\"3PARdata\""
},
{
"category": "multipath",
"severity": "critical",
"description": "group paths according to ALUA path priority of active/standby. Recommended to be set to group_by_prio in /etc/multipath.conf",
"parameter": "path_grouping_policy",
"recommendation": "group_by_prio"
},
{
"category": "multipath",
"severity": "critical",
"description": "getuid_callout whitelist is recommended. Can be set in /etc/multipath.conf",
"parameter": "getuid_callout",
"recommendation": "\"/lib/udev/scsi_id --whitelisted --device=/dev/%n\""
},
{
"category": "multipath",
"severity": "critical",
"description": "rr_min_io is recommended with value as 100. Can be set in /etc/multipath.conf",
"parameter": "rr_min_io",
"recommendation": "100"
},
{
"category": "multipath",
"severity": "critical",
"description": " tur checker is recommended. Can be set in /etc/multipath.conf",
"parameter": "checker",
"recommendation": "tur"
},
{
"category": "multipath",
"severity": "critical",
"description": " tur path checker is recommended. Can be set in /etc/multipath.conf",
"parameter": "path_checker",
"recommendation": "tur"
},
{
"category": "multipath",
"severity": "critical",
"description": " features 0 is recommended. Can be set in /etc/multipath.conf",
"parameter": "features",
"recommendation": "\"0\""
}
]
}
}

View File

@ -0,0 +1,87 @@
labels:
io.rancher.certified: partner
questions:
- variable: disableNodeConformance
label: "Disable automatic installation of iSCSI/Multipath Packages"
type: boolean
default: false
description: "Disable automatic installation of iSCSI/Multipath Packages"
group: "HPE CSI Driver settings"
- variable: disableNodeGetVolumeStats
label: "Disable NoteGetVolumeStats"
type: boolean
default: false
description: "Disable NodeGetVolumeStats call to CSI driver"
group: "HPE CSI Driver settings"
- variable: imagePullPolicy
label: "ImagePullPolicy"
default: "IfNotPresent"
type: enum
options:
- "IfNotPresent"
- "Always"
- "Never"
description: "ImagePullPolicy for all CSI driver images"
group: "HPE CSI Driver settings"
- variable: iscsi.chapUser
label: "iSCSI CHAP Username"
type: string
required: false
description: "Specify username for iSCSI CHAP authentication"
group: "HPE iSCSI settings"
- variable: iscsi.chapPassword
label: "iSCSI CHAP Password"
type: password
min_length: 12
max_length: 16
required: false
description: "Specify password for iSCSI CHAP authentication"
group: "HPE iSCSI settings"
- variable: logLevel
label: "Set log level"
default: "info"
type: enum
options:
- "info"
- "debug"
- "trace"
- "warn"
- "error"
description: "Sets the CSI driver and sidecar log level"
group: "HPE CSI Driver settings"
- variable: registry
label: "Registry"
type: string
default: "quay.io"
description: "Specify registry prefix (hostname[:port]) for CSI driver images"
group: "HPE CSI Driver settings"
- variable: kubeletRootDir
label: "Set kubeletRootDir"
type: string
default: "/var/lib/kubelet"
description: "The kubelet root directory path"
group: "HPE CSI Driver settings"
- variable: disable.nimble
label: "Disable Nimble"
type: boolean
default: false
description: "Disable HPE Nimble Storage CSP Service"
group: "Disable Container Storage Providers"
- variable: disable.primera
label: "Disable Primera"
type: boolean
default: false
description: "Disable HPE Primera (and 3PAR) CSP Service"
group: "Disable Container Storage Providers"
- variable: disable.alletra6000
label: "Disable Alletra 6000"
type: boolean
default: false
description: "Disable HPE Alletra 6000 CSP Service"
group: "Disable Container Storage Providers"
- variable: disable.alletra9000
label: "Disable Alletra 9000"
type: boolean
default: false
description: "Disable HPE Alletra 9000 CSP Service"
group: "Disable Container Storage Providers"

View File

@ -0,0 +1,32 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "hpe-csi-storage.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "hpe-csi-storage.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "hpe-csi-storage.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}

View File

@ -0,0 +1,24 @@
---
################# CSI Driver ###########
{{- if and (eq .Capabilities.KubeVersion.Major "1") ( ge ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "18") }}
apiVersion: storage.k8s.io/v1
{{- else if and (eq .Capabilities.KubeVersion.Major "1") ( ge ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "14") }}
apiVersion: storage.k8s.io/v1beta1
{{- end }}
{{- if and (eq .Capabilities.KubeVersion.Major "1") ( ge ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "14") }}
kind: CSIDriver
metadata:
name: csi.hpe.com
spec:
podInfoOnMount: true
{{- if and (eq .Capabilities.KubeVersion.Major "1") ( ge ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "16") }}
volumeLifecycleModes:
- Persistent
- Ephemeral
{{- end }}
{{- end }}

View File

@ -0,0 +1,246 @@
---
#############################################
############ Controller driver ############
#############################################
kind: Deployment
apiVersion: apps/v1
metadata:
name: hpe-csi-controller
namespace: {{ .Release.Namespace }}
spec:
replicas: 1
selector:
matchLabels:
app: hpe-csi-controller
template:
metadata:
labels:
app: hpe-csi-controller
role: hpe-csi
{{- if .Values.controller.labels }}
{{ toYaml .Values.controller.labels | indent 8 }}
{{- end }}
spec:
serviceAccountName: hpe-csi-controller-sa
{{- if and (eq .Capabilities.KubeVersion.Major "1") ( ge ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "17") }}
priorityClassName: system-cluster-critical
{{- end }}
hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet
dnsConfig:
options:
- name: ndots
value: "1"
containers:
- name: csi-provisioner
{{- if and (.Values.registry) (eq .Values.registry "quay.io") }}
image: k8s.gcr.io/sig-storage/csi-provisioner:v3.1.0
{{- else if .Values.registry }}
image: {{ .Values.registry }}/sig-storage/csi-provisioner:v3.1.0
{{- else }}
image: k8s.gcr.io/sig-storage/csi-provisioner:v3.1.0
{{- end }}
args:
- "--csi-address=$(ADDRESS)"
- "--v=5"
{{- if and (eq .Capabilities.KubeVersion.Major "1") ( ge ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "13") }}
- "--timeout=30s"
- "--worker-threads=16"
{{- end }}
env:
- name: ADDRESS
value: /var/lib/csi/sockets/pluginproxy/csi.sock
imagePullPolicy: {{ .Values.imagePullPolicy | quote }}
volumeMounts:
- name: socket-dir
mountPath: /var/lib/csi/sockets/pluginproxy
- name: csi-attacher
{{- if and (.Values.registry) (eq .Values.registry "quay.io") }}
image: k8s.gcr.io/sig-storage/csi-attacher:v3.4.0
{{- else if .Values.registry }}
image: {{ .Values.registry }}/sig-storage/csi-attacher:v3.4.0
{{- else }}
image: k8s.gcr.io/sig-storage/csi-attacher:v3.4.0
{{- end }}
args:
- "--v=5"
- "--csi-address=$(ADDRESS)"
{{- if and ( or (eq .Values.disable.primera false) (eq .Values.disable.alletra9000 false) ) ( or (eq .Values.disable.nimble true) (eq .Values.disable.alletra6000 true) ) }}
- "--timeout=180s"
{{- end }}
env:
- name: ADDRESS
value: /var/lib/csi/sockets/pluginproxy/csi.sock
imagePullPolicy: {{ .Values.imagePullPolicy | quote }}
volumeMounts:
- name: socket-dir
mountPath: /var/lib/csi/sockets/pluginproxy
- name: csi-snapshotter
{{- if and (eq .Capabilities.KubeVersion.Major "1") ( ge ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "20") }}
{{- if and (.Values.registry) (eq .Values.registry "quay.io") }}
image: k8s.gcr.io/sig-storage/csi-snapshotter:v5.0.1
{{- else if .Values.registry }}
image: {{ .Values.registry }}/sig-storage/csi-snapshotter:v5.0.1
{{- else }}
image: k8s.gcr.io/sig-storage/csi-snapshotter:v5.0.1
{{- end }}
{{- else if and (eq .Capabilities.KubeVersion.Major "1") ( ge ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "17") }}
{{- if .Values.registry }}
image: {{ .Values.registry }}/k8scsi/csi-snapshotter:v3.0.3
{{- else }}
image: quay.io/k8scsi/csi-snapshotter:v3.0.3
{{- end }}
{{- end }}
args:
- "--v=5"
- "--csi-address=$(ADDRESS)"
env:
- name: ADDRESS
value: /var/lib/csi/sockets/pluginproxy/csi.sock
imagePullPolicy: {{ .Values.imagePullPolicy | quote }}
volumeMounts:
- name: socket-dir
mountPath: /var/lib/csi/sockets/pluginproxy/
{{- if and (eq .Capabilities.KubeVersion.Major "1") ( ge ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "15") }}
- name: csi-resizer
{{- if and (.Values.registry) (eq .Values.registry "quay.io") }}
image: k8s.gcr.io/sig-storage/csi-resizer:v1.4.0
{{- else if .Values.registry }}
image: {{ .Values.registry }}/sig-storage/csi-resizer:v1.4.0
{{- else }}
image: k8s.gcr.io/sig-storage/csi-resizer:v1.4.0
{{- end }}
args:
- "--csi-address=$(ADDRESS)"
- "--v=5"
env:
- name: ADDRESS
value: /var/lib/csi/sockets/pluginproxy/csi.sock
imagePullPolicy: {{ .Values.imagePullPolicy | quote }}
volumeMounts:
- name: socket-dir
mountPath: /var/lib/csi/sockets/pluginproxy
{{- end }}
- name: hpe-csi-driver
{{- if .Values.registry }}
image: {{ .Values.registry }}/hpestorage/csi-driver:v2.2.0
{{- else }}
image: quay.io/hpestorage/csi-driver:v2.2.0
{{- end }}
args :
- "--endpoint=$(CSI_ENDPOINT)"
- "--flavor=kubernetes"
- "--pod-monitor"
- "--pod-monitor-interval=30"
env:
- name: CSI_ENDPOINT
value: unix:///var/lib/csi/sockets/pluginproxy/csi.sock
- name: LOG_LEVEL
value: {{ .Values.logLevel }}
imagePullPolicy: {{ .Values.imagePullPolicy | quote }}
volumeMounts:
- name: socket-dir
mountPath: /var/lib/csi/sockets/pluginproxy
- name: log-dir
mountPath: /var/log
- name: k8s
mountPath: /etc/kubernetes
- name: hpeconfig
mountPath: /etc/hpe-storage
- name: root-dir
mountPath: /host
- name: csi-volume-mutator
{{- if .Values.registry }}
image: {{ .Values.registry }}/hpestorage/volume-mutator:v1.3.2
{{- else }}
image: quay.io/hpestorage/volume-mutator:v1.3.2
{{- end }}
args:
- "--v=5"
- "--csi-address=$(ADDRESS)"
env:
- name: ADDRESS
value: /var/lib/csi/sockets/pluginproxy/csi-extensions.sock
imagePullPolicy: {{ .Values.imagePullPolicy | quote }}
volumeMounts:
- name: socket-dir
mountPath: /var/lib/csi/sockets/pluginproxy/
- name: csi-volume-group-snapshotter
{{- if .Values.registry }}
image: {{ .Values.registry }}/hpestorage/volume-group-snapshotter:v1.0.2
{{- else }}
image: quay.io/hpestorage/volume-group-snapshotter:v1.0.2
{{- end }}
args:
- "--v=5"
- "--csi-address=$(ADDRESS)"
env:
- name: ADDRESS
value: /var/lib/csi/sockets/pluginproxy/csi-extensions.sock
imagePullPolicy: {{ .Values.imagePullPolicy | quote }}
volumeMounts:
- name: socket-dir
mountPath: /var/lib/csi/sockets/pluginproxy/
- name: csi-volume-group-provisioner
{{- if .Values.registry }}
image: {{ .Values.registry }}/hpestorage/volume-group-provisioner:v1.0.2
{{- else }}
image: quay.io/hpestorage/volume-group-provisioner:v1.0.2
{{- end }}
args:
- "--v=5"
- "--csi-address=$(ADDRESS)"
env:
- name: ADDRESS
value: /var/lib/csi/sockets/pluginproxy/csi-extensions.sock
imagePullPolicy: {{ .Values.imagePullPolicy | quote }}
volumeMounts:
- name: socket-dir
mountPath: /var/lib/csi/sockets/pluginproxy/
- name: csi-extensions
{{- if .Values.registry }}
image: {{ .Values.registry }}/hpestorage/csi-extensions:v1.2.2
{{- else }}
image: quay.io/hpestorage/csi-extensions:v1.2.2
{{- end }}
args:
- "--v=5"
- "--endpoint=$(CSI_ENDPOINT)"
env:
- name: CSI_ENDPOINT
value: unix:///var/lib/csi/sockets/pluginproxy/csi-extensions.sock
- name: LOG_LEVEL
value: {{ .Values.logLevel }}
imagePullPolicy: {{ .Values.imagePullPolicy | quote }}
volumeMounts:
- name: socket-dir
mountPath: /var/lib/csi/sockets/pluginproxy/
volumes:
- name: socket-dir
emptyDir: {}
- name: log-dir
hostPath:
path: /var/log
- name: k8s
hostPath:
path: /etc/kubernetes
- name: hpeconfig
hostPath:
path: /etc/hpe-storage
- name: root-dir
hostPath:
path: /
{{- if .Values.controller.nodeSelector }}
nodeSelector:
{{ toYaml .Values.controller.nodeSelector | indent 8 }}
{{- end }}
{{- if .Values.controller.tolerations }}
tolerations:
{{ toYaml .Values.controller.tolerations | indent 8 }}
{{- end }}
{{- if .Values.controller.affinity }}
affinity:
{{ toYaml .Values.controller.affinity | indent 8 }}
{{- end }}

View File

@ -0,0 +1,207 @@
---
#######################################
############ Node driver ############
#######################################
kind: DaemonSet
apiVersion: apps/v1
metadata:
name: hpe-csi-node
namespace: {{ .Release.Namespace }}
spec:
selector:
matchLabels:
app: hpe-csi-node
template:
metadata:
labels:
app: hpe-csi-node
role: hpe-csi
{{- if .Values.node.labels }}
{{ toYaml .Values.node.labels | indent 8 }}
{{- end }}
spec:
serviceAccountName: hpe-csi-node-sa
{{- if and (eq .Capabilities.KubeVersion.Major "1") ( ge ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "17") }}
priorityClassName: system-node-critical
{{- end }}
hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet
dnsConfig:
options:
- name: ndots
value: "1"
containers:
- name: csi-node-driver-registrar
{{- if and (.Values.registry) (eq .Values.registry "quay.io") }}
image: k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.5.0
{{- else if .Values.registry }}
image: {{ .Values.registry }}/sig-storage/csi-node-driver-registrar:v2.5.0
{{- else }}
image: k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.5.0
{{- end}}
args:
- "--csi-address=$(ADDRESS)"
- "--kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)"
- "--v=5"
env:
- name: ADDRESS
value: /csi/csi.sock
- name: DRIVER_REG_SOCK_PATH
{{- if .Values.kubeletRootDir }}
value: {{ .Values.kubeletRootDir }}/plugins/csi.hpe.com/csi.sock
{{- else }}
value: /var/lib/kubelet/plugins/csi.hpe.com/csi.sock
{{- end }}
{{- if and (eq .Capabilities.KubeVersion.Major "1") ( eq ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "12") }}
- name: KUBE_NODE_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: spec.nodeName
{{- end }}
imagePullPolicy: {{ .Values.imagePullPolicy | quote }}
volumeMounts:
- name: plugin-dir
mountPath: /csi
- name: registration-dir
mountPath: /registration
- name: hpe-csi-driver
{{- if .Values.registry }}
image: {{ .Values.registry }}/hpestorage/csi-driver:v2.2.0
{{- else }}
image: quay.io/hpestorage/csi-driver:v2.2.0
{{- end}}
args :
- "--endpoint=$(CSI_ENDPOINT)"
- "--node-service"
- "--flavor=kubernetes"
env:
- name: CSI_ENDPOINT
value: unix:///csi/csi.sock
- name: LOG_LEVEL
value: {{ .Values.logLevel }}
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
{{ if and .Values.iscsi.chapUser .Values.iscsi.chapPassword }}
- name: CHAP_USER
value: {{ .Values.iscsi.chapUser }}
- name: CHAP_PASSWORD
value: {{ .Values.iscsi.chapPassword }}
{{- end }}
{{ if .Values.disableNodeConformance -}}
- name: DISABLE_NODE_CONFORMANCE
value: "true"
{{- end }}
{{- if .Values.kubeletRootDir }}
- name: KUBELET_ROOT_DIR
value: {{ .Values.kubeletRootDir }}
{{- end }}
{{ if .Values.disableNodeGetVolumeStats -}}
- name: DISABLE_NODE_GET_VOLUMESTATS
value: "true"
{{- end }}
imagePullPolicy: {{ .Values.imagePullPolicy | quote }}
securityContext:
privileged: true
capabilities:
add: ["SYS_ADMIN"]
allowPrivilegeEscalation: true
volumeMounts:
- name: plugin-dir
mountPath: /csi
- name: pods-mount-dir
{{- if .Values.kubeletRootDir }}
mountPath: {{ .Values.kubeletRootDir }}
{{- else }}
mountPath: /var/lib/kubelet
{{- end }}
# needed so that any mounts setup inside this container are
# propagated back to the host machine.
mountPropagation: "Bidirectional"
- name: root-dir
mountPath: /host
mountPropagation: "Bidirectional"
- name: device-dir
mountPath: /dev
- name: log-dir
mountPath: /var/log
- name: etc-hpe-storage-dir
mountPath: /etc/hpe-storage
- name: etc-kubernetes
mountPath: /etc/kubernetes
- name: sys
mountPath: /sys
- name: runsystemd
mountPath: /run/systemd
- name: etcsystemd
mountPath: /etc/systemd/system
- name: linux-config-file
mountPath: /opt/hpe-storage/nimbletune/config.json
subPath: config.json
volumes:
- name: registration-dir
hostPath:
{{ if .Values.kubeletRootDir }}
path: {{ .Values.kubeletRootDir }}/plugins_registry
{{- else }}
path: /var/lib/kubelet/plugins_registry
{{- end }}
type: Directory
- name: plugin-dir
hostPath:
{{ if .Values.kubeletRootDir }}
path: {{ .Values.kubeletRootDir }}/plugins/csi.hpe.com
{{- else }}
path: /var/lib/kubelet/plugins/csi.hpe.com
{{- end }}
type: DirectoryOrCreate
- name: pods-mount-dir
hostPath:
{{ if .Values.kubeletRootDir }}
path: {{ .Values.kubeletRootDir }}
{{- else }}
path: /var/lib/kubelet
{{- end }}
- name: root-dir
hostPath:
path: /
- name: device-dir
hostPath:
path: /dev
- name: log-dir
hostPath:
path: /var/log
- name: etc-hpe-storage-dir
hostPath:
path: /etc/hpe-storage
- name: etc-kubernetes
hostPath:
path: /etc/kubernetes
- name: runsystemd
hostPath:
path: /run/systemd
- name: etcsystemd
hostPath:
path: /etc/systemd/system
- name: sys
hostPath:
path: /sys
- name: linux-config-file
configMap:
name: hpe-linux-config
{{- if .Values.node.nodeSelector }}
nodeSelector:
{{ toYaml .Values.node.nodeSelector | indent 8 }}
{{- end }}
{{- if .Values.node.tolerations }}
tolerations:
{{ toYaml .Values.node.tolerations | indent 8 }}
{{- end }}
{{- if .Values.node.affinity }}
affinity:
{{ toYaml .Values.node.affinity | indent 8 }}
{{- end }}

View File

@ -0,0 +1,565 @@
---
kind: ServiceAccount
apiVersion: v1
metadata:
name: hpe-csi-controller-sa
namespace: {{ .Release.Namespace }}
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: hpe-csi-provisioner-role
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "list"]
- apiGroups: [""]
resources: ["namespaces"]
verbs: ["get", "list", "create"]
- apiGroups: [""]
resources: ["nodes"]
verbs: ["get", "list"]
- apiGroups: [""]
resources: ["serviceaccounts"]
verbs: ["get", "list", "create"]
- apiGroups: [""]
resources: ["configmaps"]
verbs: ["get", "create"]
- apiGroups: [""]
resources: ["persistentvolumes"]
verbs: ["get", "list", "watch", "create", "delete", "update"]
- apiGroups: [""]
resources: ["persistentvolumeclaims"]
verbs: ["create", "get", "list", "watch", "update", "delete"]
- apiGroups: [""]
resources: ["services"]
verbs: ["create", "get", "list", "watch", "update", "delete"]
- apiGroups: ["apps"]
resources: ["deployments"]
verbs: ["create", "get", "list", "watch", "update", "delete"]
- apiGroups: ["storage.k8s.io"]
resources: ["storageclasses"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["events"]
verbs: ["list", "watch", "create", "update", "patch"]
{{- if and (eq .Capabilities.KubeVersion.Major "1") ( ge ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "17") }}
- apiGroups: ["snapshot.storage.k8s.io"]
resources: ["volumesnapshots"]
verbs: ["get", "list"]
- apiGroups: ["snapshot.storage.k8s.io"]
resources: ["volumesnapshotcontents"]
verbs: ["get", "list"]
{{- end }}
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "delete"]
- apiGroups: ["storage.k8s.io"]
resources: ["volumeattachments"]
verbs: ["get", "list", "watch", "update", "patch", "delete"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: hpe-csi-provisioner-binding
subjects:
- kind: ServiceAccount
name: hpe-csi-controller-sa
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: hpe-csi-provisioner-role
apiGroup: rbac.authorization.k8s.io
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: hpe-csi-attacher-role
rules:
- apiGroups: [""]
resources: ["persistentvolumes"]
verbs: ["get", "list", "watch", "update", "patch"]
- apiGroups: [""]
resources: ["nodes"]
verbs: ["get", "list", "watch"]
- apiGroups: ["storage.k8s.io"]
resources: ["volumeattachments"]
verbs: ["get", "list", "watch", "update", "patch"]
- apiGroups: ["storage.k8s.io"]
resources: ["volumeattachments/status"]
verbs: ["get", "list", "watch", "update", "create", "delete", "patch"]
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "watch", "list"]
{{- if and (eq .Capabilities.KubeVersion.Major "1") ( eq ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "12") }}
resources: ["csinodeinfos"]
verbs: ["get", "list", "watch"]
{{- else if and (eq .Capabilities.KubeVersion.Major "1") ( eq ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "13") }}
- apiGroups: ["csi.storage.k8s.io"]
resources: ["csinodeinfos"]
verbs: ["get", "list", "watch"]
{{ else }}
- apiGroups: ["storage.k8s.io"]
resources: ["csinodes"]
verbs: ["get", "list", "watch"]
{{- end }}
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: hpe-csi-attacher-binding
subjects:
- kind: ServiceAccount
name: hpe-csi-controller-sa
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: hpe-csi-attacher-role
apiGroup: rbac.authorization.k8s.io
{{- if and (eq .Capabilities.KubeVersion.Major "1") ( ge ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "17") }}
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: hpe-csi-snapshotter-role
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "list"]
- apiGroups: [""]
resources: ["persistentvolumes"]
verbs: ["get", "list", "watch", "create", "delete"]
- apiGroups: [""]
resources: ["persistentvolumeclaims"]
verbs: ["get", "list", "watch", "update"]
- apiGroups: ["storage.k8s.io"]
resources: ["storageclasses"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["events"]
verbs: ["list", "watch", "create", "update", "patch"]
- apiGroups: ["snapshot.storage.k8s.io"]
resources: ["volumesnapshots"]
verbs: ["create", "update", "delete", "get", "list", "watch"]
- apiGroups: ["snapshot.storage.k8s.io"]
resources: ["volumesnapshots/status"]
verbs: ["update"]
- apiGroups: ["snapshot.storage.k8s.io"]
resources: ["volumesnapshotcontents"]
verbs: ["create", "update", "delete", "get", "list", "watch", "patch"]
- apiGroups: ["snapshot.storage.k8s.io"]
resources: ["volumesnapshotcontents/status"]
verbs: ["create", "get", "list", "watch", "update", "delete", "patch"]
- apiGroups: ["snapshot.storage.k8s.io"]
resources: ["volumesnapshotclasses"]
verbs: ["get", "list", "watch"]
- apiGroups: ["apiextensions.k8s.io"]
resources: ["customresourcedefinitions"]
verbs: ["get", "list", "watch", "create", "delete", "update"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: hpe-csi-snapshotter-binding
subjects:
- kind: ServiceAccount
name: hpe-csi-controller-sa
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: hpe-csi-snapshotter-role
apiGroup: rbac.authorization.k8s.io
{{- end }}
{{- if and (eq .Capabilities.KubeVersion.Major "1") ( ge ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "15") }}
---
# Resizer must be able to work with PVCs, PVs, SCs.
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: external-resizer-role
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["persistentvolumes"]
verbs: ["get", "list", "watch", "update", "patch"]
- apiGroups: [""]
resources: ["persistentvolumeclaims"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["persistentvolumeclaims/status"]
verbs: ["update", "patch"]
- apiGroups: ["storage.k8s.io"]
resources: ["storageclasses"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["events"]
verbs: ["list", "watch", "create", "update", "patch"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: csi-resizer-role
subjects:
- kind: ServiceAccount
name: hpe-csi-controller-sa
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: external-resizer-role
apiGroup: rbac.authorization.k8s.io
---
# Resizer must be able to work with end point in current namespace
# if (and only if) leadership election is enabled
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: {{ .Release.Namespace }}
name: external-resizer-cfg
rules:
- apiGroups: ["coordination.k8s.io"]
resources: ["leases"]
verbs: ["get", "watch", "list", "delete", "update", "create"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: csi-resizer-role-cfg
namespace: {{ .Release.Namespace }}
subjects:
- kind: ServiceAccount
name: hpe-csi-controller-sa
namespace: {{ .Release.Namespace }}
roleRef:
kind: Role
name: external-resizer-cfg
apiGroup: rbac.authorization.k8s.io
---
# cluster role to support volumegroup
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: hpe-csi-volumegroup-role
rules:
- apiGroups: ["storage.hpe.com"]
resources: ["volumegroups"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["storage.hpe.com"]
resources: ["volumegroupcontents"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["storage.hpe.com"]
resources: ["volumegroupclasses"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["storage.hpe.com"]
resources: ["volumegroups/status"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["storage.hpe.com"]
resources: ["volumegroupcontents/status"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: [""]
resources: ["namespaces"]
verbs: ["get", "list", "create"]
- apiGroups: [""]
resources: ["persistentvolumes"]
verbs: ["get", "list", "watch", "create", "delete"]
- apiGroups: [""]
resources: ["persistentvolumeclaims"]
verbs: ["create", "get", "list", "watch", "update", "delete"]
- apiGroups: [""]
resources: ["persistentvolumeclaims/status"]
verbs: ["update", "patch"]
- apiGroups: [""]
resources: ["events"]
verbs: ["list", "watch", "create", "update", "patch"]
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get"]
- apiGroups: ["apiextensions.k8s.io"]
resources: ["customresourcedefinitions"]
verbs: ["create", "list", "watch", "delete", "get", "update"]
- apiGroups: ["coordination.k8s.io"]
resources: ["leases"]
verbs: ["get", "watch", "list", "delete", "update", "create"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: hpe-csi-volumegroup-binding
subjects:
- kind: ServiceAccount
name: hpe-csi-controller-sa
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: hpe-csi-volumegroup-role
apiGroup: rbac.authorization.k8s.io
---
# cluster role to support snapshotgroup
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: hpe-csi-snapshotgroup-role
rules:
- apiGroups: ["storage.hpe.com"]
resources: ["snapshotgroups"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["storage.hpe.com"]
resources: ["snapshotgroupcontents"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["storage.hpe.com"]
resources: ["snapshotgroupclasses"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["storage.hpe.com"]
resources: ["snapshotgroups/status"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["storage.hpe.com"]
resources: ["snapshotgroupcontents/status"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: [""]
resources: ["namespaces"]
verbs: ["get", "list", "create"]
- apiGroups: [""]
resources: ["persistentvolumes"]
verbs: ["get", "list", "watch", "create", "delete"]
- apiGroups: [""]
resources: ["persistentvolumeclaims"]
verbs: ["create", "get", "list", "watch", "update", "delete"]
- apiGroups: [""]
resources: ["persistentvolumeclaims/status"]
verbs: ["update", "patch"]
- apiGroups: [""]
resources: ["events"]
verbs: ["list", "watch", "create", "update", "patch"]
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get"]
- apiGroups: ["apiextensions.k8s.io"]
resources: ["customresourcedefinitions"]
verbs: ["create", "list", "watch", "delete", "get", "update"]
- apiGroups: ["coordination.k8s.io"]
resources: ["leases"]
verbs: ["get", "watch", "list", "delete", "update", "create"]
- apiGroups: ["storage.hpe.com"]
resources: ["volumegroups"]
verbs: ["get", "list", "watch"]
- apiGroups: ["storage.hpe.com"]
resources: ["volumegroupcontents"]
verbs: ["get", "list", "watch"]
- apiGroups: ["storage.hpe.com"]
resources: ["volumegroupclasses"]
verbs: ["get", "list", "watch"]
- apiGroups: ["snapshot.storage.k8s.io"]
resources: ["volumesnapshotcontents"]
verbs: ["create", "get", "list", "watch", "update", "delete", "patch"]
- apiGroups: ["snapshot.storage.k8s.io"]
resources: ["volumesnapshotcontents/status"]
verbs: ["create", "get", "list", "watch", "update", "delete", "patch"]
- apiGroups: ["snapshot.storage.k8s.io"]
resources: ["volumesnapshots"]
verbs: ["create", "get", "list", "watch", "update", "delete"]
- apiGroups: ["snapshot.storage.k8s.io"]
resources: ["volumesnapshots/status"]
verbs: ["update"]
- apiGroups: ["snapshot.storage.k8s.io"]
resources: ["volumesnapshotclasses"]
verbs: ["get", "list"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: hpe-csi-snapshotgroup-binding
subjects:
- kind: ServiceAccount
name: hpe-csi-controller-sa
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: hpe-csi-snapshotgroup-role
apiGroup: rbac.authorization.k8s.io
---
# mutator must be able to work with PVCs, PVs, SCs.
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: csi-mutator-role
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["persistentvolumes"]
verbs: ["get", "list", "watch", "update", "patch"]
- apiGroups: [""]
resources: ["persistentvolumeclaims"]
verbs: ["get", "list", "watch"]
- apiGroups: ["storage.k8s.io"]
resources: ["storageclasses"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["persistentvolumeclaims/status"]
verbs: ["update", "patch"]
- apiGroups: [""]
resources: ["events"]
verbs: ["list", "watch", "create", "update", "patch"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: csi-mutator-binding
subjects:
- kind: ServiceAccount
name: hpe-csi-controller-sa
# replace with non-default namespace name
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: csi-mutator-role
apiGroup: rbac.authorization.k8s.io
---
# mutator must be able to work with end point in current namespace
# if (and only if) leadership election is enabled
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: {{ .Release.Namespace }}
name: csi-mutator-cfg
rules:
- apiGroups: ["coordination.k8s.io"]
resources: ["leases"]
verbs: ["get", "watch", "list", "delete", "update", "create"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: csi-mutator-role-cfg
namespace: {{ .Release.Namespace }}
subjects:
- kind: ServiceAccount
name: hpe-csi-controller-sa
namespace: {{ .Release.Namespace }}
roleRef:
kind: Role
name: csi-mutator-cfg
apiGroup: rbac.authorization.k8s.io
{{- end }}
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: hpe-csi-driver-role
rules:
- apiGroups: ["storage.hpe.com"]
resources: ["hpenodeinfos"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["storage.hpe.com"]
resources: ["hpevolumeinfos"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["storage.hpe.com"]
resources: ["hpereplicationdeviceinfos"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["storage.hpe.com"]
resources: ["hpevolumegroupinfos"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["storage.hpe.com"]
resources: ["hpesnapshotgroupinfos"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list"]
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "list"]
- apiGroups: [""]
resources: ["services"]
verbs: ["get"]
- apiGroups: [""]
resources: ["persistentvolumes"]
verbs: ["get", "list"]
- apiGroups: [""]
resources: ["nodes"]
verbs: ["get", "list"]
- apiGroups: [""]
resources: ["persistentvolumeclaims"]
verbs: ["get", "list"]
- apiGroups: [""]
resources: ["namespaces"]
verbs: ["get", "list"]
- apiGroups: ["storage.k8s.io"]
resources: ["storageclasses"]
verbs: ["get", "list", "watch"]
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: hpe-csi-node-sa
namespace: {{ .Release.Namespace }}
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: hpe-csi-driver-binding
subjects:
- kind: ServiceAccount
name: hpe-csi-controller-sa
namespace: {{ .Release.Namespace }}
- kind: ServiceAccount
name: hpe-csi-node-sa
namespace: {{ .Release.Namespace }}
- kind: ServiceAccount
name: hpe-csp-sa
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: hpe-csi-driver-role
apiGroup: rbac.authorization.k8s.io
---
kind: ServiceAccount
apiVersion: v1
metadata:
name: hpe-csp-sa
namespace: {{ .Release.Namespace }}

View File

@ -0,0 +1,13 @@
---
kind: ConfigMap
apiVersion: v1
metadata:
name: hpe-linux-config
namespace: {{ .Release.Namespace }}
data:
{{ if and .Values.iscsi.chapUser .Values.iscsi.chapPassword }}
CHAP_USER: {{ .Values.iscsi.chapUser | quote }}
CHAP_PASSWORD: {{ .Values.iscsi.chapPassword | quote }}
{{- end }}
config.json: |-
{{ (.Files.Get "files/config.json") | indent 4 }}

View File

@ -0,0 +1,94 @@
{{- if not .Values.disable.alletra6000 }}
---
### Alletra 6000 CSP Service ###
kind: Service
apiVersion: v1
metadata:
name: alletra6000-csp-svc
namespace: {{ .Release.Namespace }}
labels:
app: alletra6000-csp-svc
spec:
ports:
- port: 8080
protocol: TCP
selector:
app: nimble-csp
{{- end }}
{{- if not .Values.disable.nimble }}
---
### Nimble CSP Service ###
kind: Service
apiVersion: v1
metadata:
name: nimble-csp-svc
namespace: {{ .Release.Namespace }}
labels:
app: nimble-csp-svc
spec:
ports:
- port: 8080
protocol: TCP
selector:
app: nimble-csp
{{- end }}
{{- if or (not .Values.disable.alletra6000) (not .Values.disable.nimble) }}
---
### CSP deployment ###
kind: Deployment
apiVersion: apps/v1
metadata:
name: nimble-csp
namespace: {{ .Release.Namespace }}
spec:
selector:
matchLabels:
app: nimble-csp
replicas: 1
template:
metadata:
labels:
app: nimble-csp
{{- if .Values.csp.labels }}
{{ toYaml .Values.csp.labels | indent 8 }}
{{- end }}
spec:
serviceAccountName: hpe-csp-sa
{{- if and (eq .Capabilities.KubeVersion.Major "1") ( ge ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "17") }}
priorityClassName: system-cluster-critical
{{- end }}
containers:
- name: nimble-csp
{{- if .Values.registry }}
image: {{ .Values.registry }}/hpestorage/alletra-6000-and-nimble-csp:v2.2.0
{{- else }}
image: quay.io/hpestorage/alletra-6000-and-nimble-csp:v2.2.0
{{- end }}
imagePullPolicy: {{ .Values.imagePullPolicy | quote }}
ports:
- containerPort: 8080
volumeMounts:
- name: log-dir
mountPath: /var/log
volumes:
- name: log-dir
hostPath:
path: /var/log
{{- if .Values.csp.nodeSelector }}
nodeSelector:
{{ toYaml .Values.csp.nodeSelector | indent 8 }}
{{- end }}
{{- if .Values.csp.tolerations }}
tolerations:
{{ toYaml .Values.csp.tolerations | indent 8 }}
{{- end }}
{{- if .Values.csp.affinity }}
affinity:
{{ toYaml .Values.csp.affinity | indent 8 }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,103 @@
{{- if not .Values.disable.alletra9000 }}
---
### Alletra9000 CSP Service ###
kind: Service
apiVersion: v1
metadata:
name: alletra9000-csp-svc
namespace: {{ .Release.Namespace }}
labels:
app: alletra9000-csp-svc
spec:
ports:
- port: 8080
protocol: TCP
selector:
app: primera3par-csp
{{- end }}
{{- if not .Values.disable.primera }}
---
### Primera3par CSP Service ###
kind: Service
apiVersion: v1
metadata:
name: primera3par-csp-svc
namespace: {{ .Release.Namespace }}
labels:
app: primera3par-csp-svc
spec:
ports:
- port: 8080
protocol: TCP
selector:
app: primera3par-csp
{{- end }}
{{- if or (not .Values.disable.alletra9000) (not .Values.disable.primera) }}
---
### CSP deployment ###
kind: Deployment
apiVersion: apps/v1
metadata:
name: primera3par-csp
labels:
app: primera3par-csp
namespace: {{ .Release.Namespace }}
spec:
selector:
matchLabels:
app: primera3par-csp
replicas: 1
template:
metadata:
labels:
app: primera3par-csp
{{- if .Values.csp.labels }}
{{ toYaml .Values.csp.labels | indent 8 }}
{{- end }}
spec:
serviceAccountName: hpe-csp-sa
{{- if and (eq .Capabilities.KubeVersion.Major "1") ( ge ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "17") }}
priorityClassName: system-cluster-critical
{{- end }}
containers:
- name: primera3par-csp
{{- if .Values.registry }}
image: {{ .Values.registry }}/hpestorage/alletra-9000-primera-and-3par-csp:v2.2.0
{{- else }}
image: quay.io/hpestorage/alletra-9000-primera-and-3par-csp:v2.2.0
{{- end }}
imagePullPolicy: {{ .Values.imagePullPolicy | quote }}
env:
- name: CRD_CLIENT_CONFIG_QPS
value: "35"
- name: CRD_CLIENT_CONFIG_BURST
value: "20"
ports:
- containerPort: 8080
volumeMounts:
- name: log-dir
mountPath: /var/log
volumes:
- name: log-dir
hostPath:
path: /var/log
{{- if .Values.csp.nodeSelector }}
nodeSelector:
{{ toYaml .Values.csp.nodeSelector | indent 8 }}
{{- end }}
{{- if .Values.csp.tolerations }}
tolerations:
{{ toYaml .Values.csp.tolerations | indent 8 }}
{{- end }}
{{- if .Values.csp.affinity }}
affinity:
{{ toYaml .Values.csp.affinity | indent 8 }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,155 @@
# Default values for hpe-csi-driver Helm chart
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
# Control CSP Service and Deployments for HPE storage products
disable:
nimble: false
primera: false
alletra6000: false
alletra9000: false
# For controlling automatic iscsi/multipath package installation
disableNodeConformance: false
# imagePullPolicy applied for all hpe-csi-driver images
imagePullPolicy: "IfNotPresent"
# Cluster wide values for CHAP authentication
iscsi:
chapUser: ""
chapPassword: ""
# Log level for all hpe-csi-driver components
logLevel: "info"
# Registry prefix for hpe-csi-driver images
registry: "quay.io"
# Kubelet root directory path
kubeletRootDir: "/var/lib/kubelet/"
# NodeGetVolumestats will be called by default, set true to disable the call
disableNodeGetVolumeStats: false
controller:
# These values map directly to yaml in the deployment spec, see the kubernetes docs for info
labels:
infra: storage
# These values map directly to yaml in the deployment spec, see the kubernetes docs for info
nodeSelector: {}
#disktype: ssd
# These values map directly to yaml in the deployment spec, see the kubernetes docs for info
tolerations: []
# - effect: NoExecute
# key: node.kubernetes.io/not-ready
# operator: Exists
# tolerationSeconds: 30
# - effect: NoExecute
# key: node.kubernetes.io/unreachable
# operator: Exists
# tolerationSeconds: 30
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: disktype
operator: In
values:
- ssd
# nodeAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# - key: az
# operator: In
# values:
# - az-east
# - az-west
csp:
# These values map directly to yaml in the deployment spec, see the kubernetes docs for info
labels:
infra: storage
# These values map directly to yaml in the deployment spec, see the kubernetes docs for info
nodeSelector: {}
#disktype: ssd
# These values map directly to yaml in the deployment spec, see the kubernetes docs for info
tolerations: []
# - effect: NoExecute
# key: node.kubernetes.io/not-ready
# operator: Exists
# tolerationSeconds: 30
# - effect: NoExecute
# key: node.kubernetes.io/unreachable
# operator: Exists
# tolerationSeconds: 30
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: disktype
operator: In
values:
- ssd
# nodeAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# - key: az
# operator: In
# values:
# - az-east
# - az-west
node:
# These values map directly to yaml in the deployment spec, see the kubernetes docs for info
labels: {}
#infra: storage
# These values map directly to yaml in the deployment spec, see the kubernetes docs for info
nodeSelector: {}
#disktype: ssd
# These values map directly to yaml in the deployment spec, see the kubernetes docs for info
tolerations: [ ]
# - effect: NoExecute
# key: node.kubernetes.io/not-ready
# operator: Exists
# tolerationSeconds: 30
# - effect: NoExecute
# key: node.kubernetes.io/unreachable
# operator: Exists
# tolerationSeconds: 30
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: disktype
operator: In
values:
- ssd
# nodeAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# - key: az
# operator: In
# values:
# - az-east
# - az-west

View File

@ -0,0 +1,274 @@
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "http://example.com/example.json",
"title": "HPE CSI Driver for Kubernetes Helm Chart JSON Schema",
"type": "object",
"default":
{
"disable": {
"nimble": false,
"primera": false,
"alletra6000": false,
"alletra9000": false
},
"disableNodeConformance": false,
"imagePullPolicy": "IfNotPresent",
"iscsi": {
"chapUser": "",
"chapPassword": ""
},
"logLevel": "info",
"registry": "quay.io",
"kubeletRootDir": "/var/lib/kubelet/",
"disableNodeGetVolumeStats": false,
"csp": {
"nodeSelector": {},
"tolerations": [],
"affinity": {},
"labels": {}
},
"controller": {
"nodeSelector": {},
"tolerations": [],
"affinity": {},
"labels": {}
},
"node": {
"nodeSelector": {},
"tolerations": [],
"affinity": {},
"labels": {}
}
},
"required": [
"disable",
"disableNodeConformance",
"imagePullPolicy",
"iscsi",
"logLevel",
"registry",
"kubeletRootDir",
"disableNodeGetVolumeStats",
"csp",
"controller",
"node"
],
"properties": {
"disable": {
"$id": "#/properties/disable",
"title": "CSP Deployment and Service backend exclusion",
"description": "All backend Deployments and Services are installed by default.",
"type": "object",
"default":
{
"nimble": false,
"primera": false,
"alletra6000": false,
"alletra9000": false
},
"required": [
"nimble",
"primera",
"alletra6000",
"alletra9000"
],
"properties": {
"nimble": {
"$id": "#/properties/disable/properties/nimble",
"title": "HPE Nimble Storage",
"type": "boolean",
"default": false
},
"primera": {
"$id": "#/properties/disable/properties/primera",
"title": "HPE Primera",
"type": "boolean",
"default": false
},
"alletra6000": {
"$id": "#/properties/disable/properties/alletra6000",
"title": "HPE Alletra 6000",
"type": "boolean",
"default": false
},
"alletra9000": {
"$id": "#/properties/disable/properties/alletra9000",
"title": "HPE Alletra 9000",
"type": "boolean",
"default": false
}
},
"additionalProperties": false
},
"disableNodeConformance": {
"$id": "#/properties/disableNodeConformance",
"title": "Disable node conformance",
"description": "Disabling node conformance forces the cluster administrator to install required packages and ensure the correct node services are started to use external block storage.",
"type": "boolean",
"default": false
},
"imagePullPolicy": {
"$id": "#/properties/imagePullPolicy",
"title": "CSI driver image pull policy",
"type": "string",
"default": "IfNotPresent",
"enum": [ "Always", "IfNotPresent", "Never" ]
},
"iscsi": {
"$id": "#/properties/iscsi",
"title": "iSCSI CHAP credentials",
"type": "object",
"default":
{
"chapUser": "",
"chapPassword": ""
},
"required": [
"chapUser",
"chapPassword"
],
"properties": {
"chapUser": {
"$id": "#/properties/iscsi/properties/chapUser",
"title": "CHAP username",
"type": "string",
"default": ""
},
"chapPassword": {
"$id": "#/properties/iscsi/properties/chapPassword",
"title": "CHAP password",
"description": "Between 12 and 16 characters",
"type": "string",
"default": "",
"pattern": "^$|^[a-zA-Z0-9+_)(*^%$#@!]{12,16}$"
}
},
"additionalProperties": false
},
"logLevel": {
"$id": "#/properties/logLevel",
"title": "Set the log level of the HPE CSI Driver images",
"type": "string",
"default": "info",
"enum": [ "info", "debug", "trace", "warn", "error" ]
},
"registry": {
"$id": "#/properties/registry",
"title": "Pull images from a different registry than default",
"description": "SIG Storage images needs to be mirrored from k8s.gcr.io to this registry if this parameter is changed.",
"type": "string",
"default": "quay.io"
},
"kubeletRootDir": {
"$id": "#/properties/kubeletRootDir",
"title": "Kubelet root directory",
"description": "Only change this if the kubelet root dir has been altered by the Kubernetes platform installer.",
"type": "string",
"default": "/var/lib/kubelet",
"pattern": "^/"
},
"disableNodeGetVolumeStats": {
"$id": "#/properties/disableNodeGetVolumeStats",
"title": "Disable the CSI nodeGetVolumeStats call",
"description": "In very large environments, disabling this feature may alleviate pressure on the CSP.",
"type": "boolean",
"default": false
},
"csp": {
"nodeSelector": {
"$id": "#/properties/csp/properties/nodeSelector",
"title": "Node selector to control the selection of nodes (optional).",
"description": "Selector which must match a node's labels for the pod to be scheduled on that node.",
"type": "object",
"default": {}
},
"tolerations": {
"$id": "#/properties/csp/properties/tolerations",
"title": "Set tolerations for the csp pods(optional).",
"description": "Tolerations is the list of tolerations for the csp pods.",
"type": "array",
"default": []
},
"affinity": {
"$id": "#/properties/csp/properties/affinity",
"title": "Node affinity for csp plugin (optional).",
"description": "Describes node affinity scheduling rules for the pod.",
"type": "object",
"default": {}
},
"labels": {
"$id": "#/properties/csp/properties/labels",
"title": "labels",
"description": "labels.",
"type": "object",
"default": {}
}
},
"controller": {
"nodeSelector": {
"$id": "#/properties/controller/properties/nodeSelector",
"title": "Node selector to control the selection of nodes (optional).",
"description": "Selector which must match a node's labels for the pod to be scheduled on that node.",
"type": "object",
"default": {}
},
"tolerations": {
"$id": "#/properties/controller/properties/tolerations",
"title": "Set tolerations for the driver pods(optional)",
"description": "Tolerations is the list of tolerations for the driver pods.",
"type": "array",
"default": []
},
"affinity": {
"$id": "#/properties/controller/properties/affinity",
"title": "Node affinity for controller plugin (optional).",
"description": "Describes node affinity scheduling rules for the pod.",
"type": "object",
"default": {}
},
"labels": {
"$id": "#/properties/controller/properties/labels",
"title": "labels",
"description": "labels.",
"type": "object",
"default": {}
}
},
"node": {
"nodeSelector": {
"$id": "#/properties/node/properties/nodeSelector",
"title": "Node selector to control the selection of nodes (optional).",
"description": "Selector which must match a node's labels for the pod to be scheduled on that node.",
"type": "object",
"default": {}
},
"tolerations": {
"$id": "#/properties/node/properties/tolerations",
"title": "Set tolerations for the node pods(optional).",
"description": "Tolerations is the list of tolerations for the node pods.",
"type": "array",
"default": []
},
"affinity": {
"$id": "#/properties/node/properties/affinity",
"title": "Node affinity for node plugin (optional).",
"description": "Describes node affinity scheduling rules for the pod.",
"type": "object",
"default": {}
},
"labels": {
"$id": "#/properties/node/properties/labels",
"title": "labels",
"description": "labels.",
"type": "object",
"default": {}
}
},
"global": {}
},
"additionalProperties": false
}

View File

@ -0,0 +1,73 @@
# Default values for hpe-csi-driver Helm chart
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
# Control CSP Service and Deployments for HPE storage products
disable:
nimble: false
primera: false
alletra6000: false
alletra9000: false
# For controlling automatic iscsi/multipath package installation
disableNodeConformance: false
# imagePullPolicy applied for all hpe-csi-driver images
imagePullPolicy: "IfNotPresent"
# Cluster wide values for CHAP authentication
iscsi:
chapUser: ""
chapPassword: ""
# Log level for all hpe-csi-driver components
logLevel: "info"
# Registry prefix for hpe-csi-driver images
registry: "quay.io"
# Kubelet root directory path
kubeletRootDir: "/var/lib/kubelet/"
# NodeGetVolumestats will be called by default, set true to disable the call
disableNodeGetVolumeStats: false
controller:
# These values map directly to yaml in the deployment spec, see the kubernetes docs for info
labels: {}
# These values map directly to yaml in the deployment spec, see the kubernetes docs for info
nodeSelector: {}
# These values map directly to yaml in the deployment spec, see the kubernetes docs for info
tolerations: []
affinity: {}
csp:
# These values map directly to yaml in the deployment spec, see the kubernetes docs for info
labels: {}
# These values map directly to yaml in the deployment spec, see the kubernetes docs for info
nodeSelector: {}
# These values map directly to yaml in the deployment spec, see the kubernetes docs for info
tolerations: []
affinity: {}
node:
# These values map directly to yaml in the deployment spec, see the kubernetes docs for info
labels: {}
# These values map directly to yaml in the deployment spec, see the kubernetes docs for info
nodeSelector: {}
# These values map directly to yaml in the deployment spec, see the kubernetes docs for info
tolerations: []
affinity: {}

View File

@ -2158,6 +2158,39 @@ entries:
- assets/haproxy/haproxy-1.4.300.tgz
version: 1.4.300
hpe-csi-driver:
- annotations:
artifacthub.io/license: Apache-2.0
artifacthub.io/links: |
- name: Documentation
url: https://scod.hpedev.io/csi_driver
artifacthub.io/prerelease: "false"
catalog.cattle.io/certified: partner
catalog.cattle.io/display-name: HPE CSI Driver for Kubernetes
catalog.cattle.io/namespace: hpe-storage
catalog.cattle.io/os: linux
catalog.cattle.io/release-name: hpe-csi-driver
apiVersion: v1
appVersion: 2.2.0
created: "2022-08-05T09:52:10.361141-07:00"
description: A Helm chart for installing the HPE CSI Driver for Kubernetes
digest: 9ce5321def3a352305ba512454d4ecce0ac8594b7478133b80f83890e8881db5
home: https://hpe.com/storage/containers
icon: https://raw.githubusercontent.com/hpe-storage/co-deployments/master/docs/assets/hpedev.png
keywords:
- HPE
- Storage
- CSI
kubeVersion: 1.21 - 1.24
maintainers:
- email: datamattsson@hpe.com
name: datamattsson
name: hpe-csi-driver
sources:
- https://github.com/hpe-storage/co-deployments
- https://github.com/hpe-storage/csi-driver
urls:
- assets/hpe-csi-driver/hpe-csi-driver-2.2.0.tgz
version: 2.2.0
- annotations:
artifacthub.io/license: Apache-2.0
artifacthub.io/links: |