diff --git a/assets/hpe-csi-driver/hpe-csi-driver-2.2.0.tgz b/assets/hpe-csi-driver/hpe-csi-driver-2.2.0.tgz new file mode 100644 index 000000000..0d39c7390 Binary files /dev/null and b/assets/hpe-csi-driver/hpe-csi-driver-2.2.0.tgz differ diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/Chart.yaml b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/Chart.yaml new file mode 100644 index 000000000..094927650 --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/Chart.yaml @@ -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 diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/README.md b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/README.md new file mode 100644 index 000000000..7cac21200 --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/README.md @@ -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: "" + chapPassword: "" +``` + +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. diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/app-readme.md b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/app-readme.md new file mode 100644 index 000000000..29ca912cb --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/app-readme.md @@ -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. diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/hpe-nodeinfo-crd.yaml b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/hpe-nodeinfo-crd.yaml new file mode 100644 index 000000000..86c60cf34 --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/hpe-nodeinfo-crd.yaml @@ -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: [] \ No newline at end of file diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/hpereplicated_deviceinfo_v2_crd.yaml b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/hpereplicated_deviceinfo_v2_crd.yaml new file mode 100644 index 000000000..b95a9eef9 --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/hpereplicated_deviceinfo_v2_crd.yaml @@ -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: [] + + diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/hpevolumegroupinfos_v2_crd.yaml b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/hpevolumegroupinfos_v2_crd.yaml new file mode 100644 index 000000000..2803998be --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/hpevolumegroupinfos_v2_crd.yaml @@ -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: [] + diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/hpevolumeinfos_v2_crd.yaml b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/hpevolumeinfos_v2_crd.yaml new file mode 100644 index 000000000..7f995a724 --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/hpevolumeinfos_v2_crd.yaml @@ -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: [] + diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/snapshotgroupinfos_v2_crd.yaml b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/snapshotgroupinfos_v2_crd.yaml new file mode 100644 index 000000000..6fc351999 --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/snapshotgroupinfos_v2_crd.yaml @@ -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: [] + diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/storage.hpe.com_snapshotgroupclasses.yaml b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/storage.hpe.com_snapshotgroupclasses.yaml new file mode 100644 index 000000000..b58878471 --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/storage.hpe.com_snapshotgroupclasses.yaml @@ -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 \ No newline at end of file diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/storage.hpe.com_snapshotgroupcontents.yaml b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/storage.hpe.com_snapshotgroupcontents.yaml new file mode 100644 index 000000000..a7132c59e --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/storage.hpe.com_snapshotgroupcontents.yaml @@ -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 \ No newline at end of file diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/storage.hpe.com_snapshotgroups.yaml b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/storage.hpe.com_snapshotgroups.yaml new file mode 100644 index 000000000..3372a7db7 --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/storage.hpe.com_snapshotgroups.yaml @@ -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 \ No newline at end of file diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/storage.hpe.com_volumegroupclasses.yaml b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/storage.hpe.com_volumegroupclasses.yaml new file mode 100644 index 000000000..e201ec94e --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/storage.hpe.com_volumegroupclasses.yaml @@ -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 \ No newline at end of file diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/storage.hpe.com_volumegroupcontents.yaml b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/storage.hpe.com_volumegroupcontents.yaml new file mode 100644 index 000000000..d944909eb --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/storage.hpe.com_volumegroupcontents.yaml @@ -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 \ No newline at end of file diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/storage.hpe.com_volumegroups.yaml b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/storage.hpe.com_volumegroups.yaml new file mode 100644 index 000000000..862b4398a --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/crds/storage.hpe.com_volumegroups.yaml @@ -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 \ No newline at end of file diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/files/config.json b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/files/config.json new file mode 100644 index 000000000..d7f893b2a --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/files/config.json @@ -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\"" + } + ] + } +} \ No newline at end of file diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/questions.yml b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/questions.yml new file mode 100644 index 000000000..fa860cfdc --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/questions.yml @@ -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" diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/NOTES.txt b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/NOTES.txt new file mode 100644 index 000000000..e69de29bb diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/_helpers.tpl b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/_helpers.tpl new file mode 100644 index 000000000..165840d52 --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/_helpers.tpl @@ -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 -}} diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/csi-driver-crd.yaml b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/csi-driver-crd.yaml new file mode 100644 index 000000000..61275fffa --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/csi-driver-crd.yaml @@ -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 }} \ No newline at end of file diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/hpe-csi-controller.yaml b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/hpe-csi-controller.yaml new file mode 100644 index 000000000..1d7ed2bf7 --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/hpe-csi-controller.yaml @@ -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 }} diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/hpe-csi-node.yaml b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/hpe-csi-node.yaml new file mode 100644 index 000000000..2ee6ab6f5 --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/hpe-csi-node.yaml @@ -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 }} diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/hpe-csi-rbac.yaml b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/hpe-csi-rbac.yaml new file mode 100644 index 000000000..fd72c9956 --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/hpe-csi-rbac.yaml @@ -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 }} diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/hpe-linux-config.yaml b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/hpe-linux-config.yaml new file mode 100644 index 000000000..5e4c4944a --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/hpe-linux-config.yaml @@ -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 }} \ No newline at end of file diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/nimble-csp.yaml b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/nimble-csp.yaml new file mode 100644 index 000000000..248847ef2 --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/nimble-csp.yaml @@ -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 }} + diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/primera-3par-csp.yaml b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/primera-3par-csp.yaml new file mode 100644 index 000000000..c0f77f70b --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/templates/primera-3par-csp.yaml @@ -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 }} + + + diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/test_values.yaml b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/test_values.yaml new file mode 100644 index 000000000..714b55ac7 --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/test_values.yaml @@ -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 diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/values.schema.json b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/values.schema.json new file mode 100644 index 000000000..dbe4ea4ae --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/values.schema.json @@ -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 +} diff --git a/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/values.yaml b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/values.yaml new file mode 100644 index 000000000..e1ad2e3b2 --- /dev/null +++ b/charts/hpe-csi-driver/hpe-csi-driver/2.2.0/values.yaml @@ -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: {} diff --git a/index.yaml b/index.yaml index def3fa7e9..0bf8ea237 100755 --- a/index.yaml +++ b/index.yaml @@ -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: |