From ecebf8a8f450cdad9edb102f77f6a454b9d26e65 Mon Sep 17 00:00:00 2001 From: Michael Mattsson Date: Sun, 30 Jan 2022 22:47:33 -0800 Subject: [PATCH] First pass against v2.1.0 (#25) Signed-off-by: Michael Mattsson --- .gitignore | 3 + INSTALL.md | 29 +- K8s/v2.1.0/hpe-storageclass-nfs.yaml | 25 + K8s/v2.1.0/hpe-storageclass.yaml | 24 + K8s/v2.1.0/truenas-csp.yaml | 38 ++ K8s/v2.1.0/truenas-secret.yaml | 12 + Makefile | 4 +- README.md | 31 +- docs/index.yaml | 35 +- docs/truenas-csp-1.1.0.tgz | Bin 0 -> 20737 bytes e2e/Makefile | 4 +- helm/charts/Makefile | 3 +- helm/charts/truenas-csp/Chart.lock | 6 + helm/charts/truenas-csp/Chart.yaml | 12 +- helm/charts/truenas-csp/README.md | 9 +- .../charts/hpe-csi-driver-2.1.0.tgz | Bin 0 -> 14636 bytes .../charts/hpe-csi-driver/Chart.yaml | 23 - .../charts/hpe-csi-driver/README.md | 115 ---- .../hpe-csi-driver/crds/hpe-nodeinfo-crd.yaml | 70 --- .../crds/hpe-replicated-device-info-crd.yaml | 57 -- .../crds/hpe-snapshotgroupinfo-crd.yaml | 57 -- .../crds/hpe-volumegroupinfo-crd.yaml | 64 -- .../crds/hpe-volumeinfo-crd.yaml | 32 - .../storage.hpe.com_snapshotgroupclasses.yaml | 60 -- ...storage.hpe.com_snapshotgroupcontents.yaml | 104 ---- .../crds/storage.hpe.com_snapshotgroups.yaml | 83 --- .../storage.hpe.com_volumegroupclasses.yaml | 60 -- .../storage.hpe.com_volumegroupcontents.yaml | 96 --- .../crds/storage.hpe.com_volumegroups.yaml | 69 --- .../charts/hpe-csi-driver/files/config.json | 128 ---- .../charts/hpe-csi-driver/templates/NOTES.txt | 0 .../hpe-csi-driver/templates/_helpers.tpl | 32 - .../templates/csi-driver-crd.yaml | 24 - .../templates/hpe-csi-controller.yaml | 240 -------- .../templates/hpe-csi-node.yaml | 204 ------- .../templates/hpe-csi-rbac.yaml | 566 ------------------ .../templates/hpe-linux-config.yaml | 13 - .../hpe-csi-driver/templates/nimble-csp.yaml | 87 --- .../templates/primera-3par-csp.yaml | 89 --- .../charts/hpe-csi-driver/values.schema.json | 170 ------ .../charts/hpe-csi-driver/values.yaml | 36 -- 41 files changed, 192 insertions(+), 2522 deletions(-) create mode 100644 .gitignore create mode 100644 K8s/v2.1.0/hpe-storageclass-nfs.yaml create mode 100644 K8s/v2.1.0/hpe-storageclass.yaml create mode 100644 K8s/v2.1.0/truenas-csp.yaml create mode 100644 K8s/v2.1.0/truenas-secret.yaml create mode 100644 docs/truenas-csp-1.1.0.tgz create mode 100644 helm/charts/truenas-csp/Chart.lock create mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver-2.1.0.tgz delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/Chart.yaml delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/README.md delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/crds/hpe-nodeinfo-crd.yaml delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/crds/hpe-replicated-device-info-crd.yaml delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/crds/hpe-snapshotgroupinfo-crd.yaml delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/crds/hpe-volumegroupinfo-crd.yaml delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/crds/hpe-volumeinfo-crd.yaml delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_snapshotgroupclasses.yaml delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_snapshotgroupcontents.yaml delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_snapshotgroups.yaml delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_volumegroupclasses.yaml delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_volumegroupcontents.yaml delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_volumegroups.yaml delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/files/config.json delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/templates/NOTES.txt delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/templates/_helpers.tpl delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/templates/csi-driver-crd.yaml delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/templates/hpe-csi-controller.yaml delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/templates/hpe-csi-node.yaml delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/templates/hpe-csi-rbac.yaml delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/templates/hpe-linux-config.yaml delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/templates/nimble-csp.yaml delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/templates/primera-3par-csp.yaml delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/values.schema.json delete mode 100644 helm/charts/truenas-csp/charts/hpe-csi-driver/values.yaml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e075c5b --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +e2e/e2e.test +e2e/ginkgo +e2e/reports/ diff --git a/INSTALL.md b/INSTALL.md index 549dc48..5a5391a 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,16 +1,17 @@ -# Install TrueNAS CORE Container Storage Provider +# Install TrueNAS Container Storage Provider These procedures assumes a running Kubernetes cluster [supported by the HPE CSI Driver](https://scod.hpedev.io/csi_driver/index.html#compatibility_and_support) where the worker nodes have connectivity to a TrueNAS/FreeNAS storage appliance API and networks used for iSCSI traffic. Worker nodes also need their package managers fully functional and connected to their official repos unless iSCSI and multipathing packages have been pre-installed. ## Prerequisites -- HPE CSI Driver for Kubernetes version 2.0.0 or later -- TrueNAS CORE 12 BETA or later +- HPE CSI Driver for Kubernetes version 2.1.0 or later +- TrueNAS 12.0 BETA or later +- TrueNAS SCALE 22.02 RC1 or later - FreeNAS 11.2-U3 or later -- Kubernetes 1.18 or later +- Kubernetes 1.20 or later - Helm 3.6 or later (optional, only needed if using Helm to install the CSP) -### TrueNAS CORE Container Storage Provider Helm Chart +### TrueNAS Container Storage Provider Helm Chart The recommended way to install the CSP is to use Helm, it automatically fulfill all dependencies. Make sure to make it back here to learn [how to configure and use the CSP with the CSI driver](https://github.com/hpe-storage/truenas-csp/blob/master/INSTALL.md#configure-csi-driver). @@ -20,23 +21,23 @@ The recommended way to install the CSP is to use Helm, it automatically fulfill The HPE CSI Driver may be installed using either a Helm Chart, Operator or directly with manifests. Directly below is the complete procedures for the "[Advanced install](https://scod.hpedev.io/csi_driver/deployment.html#advanced_install)". -**Note:** The [TrueNAS CORE Container Storage Provider Helm Chart](https://artifacthub.io/packages/helm/truenas-csp/truenas-csp) has a dependency on the HPE CSI Driver for Kubernetes Helm Chart and makes it a lot easier to manage configuration during runtime. Consider using Helm to deploy the CSP over the YAML manifests. +**Note:** The [TrueNAS Container Storage Provider Helm Chart](https://artifacthub.io/packages/helm/truenas-csp/truenas-csp) has a dependency on the HPE CSI Driver for Kubernetes Helm Chart and makes it a lot easier to manage configuration during runtime. Consider using Helm to deploy the CSP over the YAML manifests. Install HPE CSI Driver using manifests: ``` -kubectl create -f https://raw.githubusercontent.com/hpe-storage/co-deployments/master/yaml/csi-driver/v2.0.0/hpe-linux-config.yaml -kubectl create -f https://raw.githubusercontent.com/hpe-storage/co-deployments/master/yaml/csi-driver/v2.0.0/hpe-csi-k8s-1.21.yaml +kubectl create -f https://raw.githubusercontent.com/hpe-storage/co-deployments/master/yaml/csi-driver/v2.1.0/hpe-linux-config.yaml +kubectl create -f https://raw.githubusercontent.com/hpe-storage/co-deployments/master/yaml/csi-driver/v2.1.0/hpe-csi-k8s-1.22.yaml ``` -Install the TrueNAS CORE CSP using manifests: +Install the TrueNAS CSP using manifests: ``` kubectl create ns hpe-storage -kubectl create -f https://raw.githubusercontent.com/hpe-storage/truenas-csp/master/K8s/v2.0.0/truenas-csp.yaml +kubectl create -f https://raw.githubusercontent.com/hpe-storage/truenas-csp/master/K8s/v2.1.0/truenas-csp.yaml ``` -**Note:** Replace `hpe-csi-k8s-.yaml` with your version of Kubernetes. Also change the version of the HPE CSI Driver manifests where applicable. Using mismatching versions of the TrueNAS CORE CSP and the HPE CSI Driver will most likely **NOT** work. +**Note:** Replace `hpe-csi-k8s-.yaml` with your version of Kubernetes. Also change the version of the HPE CSI Driver manifests where applicable. Using mismatching versions of the TrueNAS CSP and the HPE CSI Driver will most likely **NOT** work. ### Configure CSI driver @@ -53,11 +54,11 @@ stringData: serviceName: truenas-csp-svc servicePort: "8080" username: hpe-csi (username is a no-op) - password: TrueNAS CORE API key or root password - backend: TrueNAS CORE management IP address + password: API key or root password of TrueNAS/FreeNAS appliance + backend: Management IP address of TrueNAS/FreeNAS appliance ``` -**Hint:** Generate an API key by clicking the cog in the upper right corner of the TrueNAS CORE web UI (FreeNAS does NOT support API keys). What you name the key or the `Secret` `{.stringData.username}` does not matter as it's not being used or referenced during runtime. For tracking purposes it might be a good idea to name the key the same as the username put into the `Secret`. +**Hint:** Generate an API key by clicking the cog in the upper right corner of the TrueNAS web UI (FreeNAS does NOT support API keys). What you name the key or the `Secret` `{.stringData.username}` does not matter as it's not being used or referenced during runtime. For tracking purposes it might be a good idea to name the key the same as the username put into the `Secret`. ### Configure TrueNAS/FreeNAS diff --git a/K8s/v2.1.0/hpe-storageclass-nfs.yaml b/K8s/v2.1.0/hpe-storageclass-nfs.yaml new file mode 100644 index 0000000..0cfca16 --- /dev/null +++ b/K8s/v2.1.0/hpe-storageclass-nfs.yaml @@ -0,0 +1,25 @@ +--- +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + annotations: + storageclass.kubernetes.io/is-default-class: "false" + name: hpe-standard-nfs +provisioner: csi.hpe.com +parameters: + csi.storage.k8s.io/controller-expand-secret-name: truenas-secret + csi.storage.k8s.io/controller-expand-secret-namespace: hpe-storage + csi.storage.k8s.io/controller-publish-secret-name: truenas-secret + csi.storage.k8s.io/controller-publish-secret-namespace: hpe-storage + csi.storage.k8s.io/node-publish-secret-name: truenas-secret + csi.storage.k8s.io/node-publish-secret-namespace: hpe-storage + csi.storage.k8s.io/node-stage-secret-name: truenas-secret + csi.storage.k8s.io/node-stage-secret-namespace: hpe-storage + csi.storage.k8s.io/provisioner-secret-name: truenas-secret + csi.storage.k8s.io/provisioner-secret-namespace: hpe-storage + csi.storage.k8s.io/fstype: xfs + nfsResources: "true" + allowOverrides: sparse,compression,deduplication,volblocksize,sync,description + root: zwimming/csi-volumes +reclaimPolicy: Delete +allowVolumeExpansion: true diff --git a/K8s/v2.1.0/hpe-storageclass.yaml b/K8s/v2.1.0/hpe-storageclass.yaml new file mode 100644 index 0000000..ebc877f --- /dev/null +++ b/K8s/v2.1.0/hpe-storageclass.yaml @@ -0,0 +1,24 @@ +--- +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + annotations: + storageclass.kubernetes.io/is-default-class: "true" + name: hpe-standard +provisioner: csi.hpe.com +parameters: + csi.storage.k8s.io/controller-expand-secret-name: truenas-secret + csi.storage.k8s.io/controller-expand-secret-namespace: hpe-storage + csi.storage.k8s.io/controller-publish-secret-name: truenas-secret + csi.storage.k8s.io/controller-publish-secret-namespace: hpe-storage + csi.storage.k8s.io/node-publish-secret-name: truenas-secret + csi.storage.k8s.io/node-publish-secret-namespace: hpe-storage + csi.storage.k8s.io/node-stage-secret-name: truenas-secret + csi.storage.k8s.io/node-stage-secret-namespace: hpe-storage + csi.storage.k8s.io/provisioner-secret-name: truenas-secret + csi.storage.k8s.io/provisioner-secret-namespace: hpe-storage + csi.storage.k8s.io/fstype: xfs + allowOverrides: sparse,compression,deduplication,volblocksize,sync,description + root: zwimming/csi-volumes +reclaimPolicy: Delete +allowVolumeExpansion: true diff --git a/K8s/v2.1.0/truenas-csp.yaml b/K8s/v2.1.0/truenas-csp.yaml new file mode 100644 index 0000000..0eb934f --- /dev/null +++ b/K8s/v2.1.0/truenas-csp.yaml @@ -0,0 +1,38 @@ +--- +kind: Service +apiVersion: v1 +metadata: + name: truenas-csp-svc + namespace: hpe-storage + labels: + app: truenas-csp-svc +spec: + ports: + - port: 8080 + protocol: TCP + selector: + app: truenas-csp + +--- +kind: Deployment +apiVersion: apps/v1 +metadata: + name: truenas-csp + namespace: hpe-storage +spec: + selector: + matchLabels: + app: truenas-csp + replicas: 1 + template: + metadata: + labels: + app: truenas-csp + spec: + priorityClassName: system-cluster-critical + containers: + - name: truenas-csp + image: quay.io/datamattsson/truenas-csp:v2.1.0 + imagePullPolicy: IfNotPresent + ports: + - containerPort: 8080 diff --git a/K8s/v2.1.0/truenas-secret.yaml b/K8s/v2.1.0/truenas-secret.yaml new file mode 100644 index 0000000..aa3947e --- /dev/null +++ b/K8s/v2.1.0/truenas-secret.yaml @@ -0,0 +1,12 @@ +--- +apiVersion: v1 +kind: Secret +metadata: + name: truenas-secret + namespace: hpe-storage +stringData: + serviceName: truenas-csp-svc + servicePort: "8080" + username: hpe-csi (username is a no-op) + password: API key or root password of TrueNAS/FreeNAS appliance + backend: Management IP address of TrueNAS/FreeNAS appliance diff --git a/Makefile b/Makefile index 8d198d3..0b0e9bb 100644 --- a/Makefile +++ b/Makefile @@ -6,11 +6,11 @@ curl_args = '-v' all: python3 -m py_compile truenascsp/*.py rm -rf truenascsp/__pycache__ - docker build -t hpestorage/truenas-csp:edge . + docker build -t quay.io/datamattsson/truenas-csp:edge . run: docker rm -f truenas-csp || true - docker run -d -p8080:8080 --name truenas-csp -e LOG_DEBUG=1 hpestorage/truenas-csp:edge + docker run -d -p8080:8080 --name truenas-csp -e LOG_DEBUG=1 quay.io/datamattsson/truenas-csp:edge test: # Delete host diff --git a/README.md b/README.md index cefea24..95d2a3e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# TrueNAS CORE Container Storage Provider +# TrueNAS Container Storage Provider -The TrueNAS CORE Container Storage Provider (CSP) is an API gateway to provide iSCSI block storage provisioning using the [HPE CSI Driver for Kubernetes](https://github.com/hpe-storage/csi-driver). It allows you to use [TrueNAS CORE](https://www.truenas.com) and [FreeNAS](https://www.freenas.org/) to provide persistent storage using iSCSI to Kubernetes. +The TrueNAS Container Storage Provider (CSP) is an API gateway to provide iSCSI block storage provisioning using the [HPE CSI Driver for Kubernetes](https://github.com/hpe-storage/csi-driver). It allows you to use [TrueNAS](https://www.truenas.com) and [FreeNAS](https://www.freenas.org/) to provide persistent storage using iSCSI to Kubernetes. CSP API endpoints: @@ -21,14 +21,15 @@ As of version 2.0.0 of the HPE CSI Driver, these parts of the CSI spec are curre - Data Sources (`PersistentVolumeClaims` and `VolumeSnapshots`) - Volume Limits - Volume Stats -- Ephemeral Local Volumes (not supported by the TrueNAS CORE CSP, see [limitations](#limitations)) +- Ephemeral Local Volumes (not supported by the TrueNAS CSP, see [limitations](#limitations)) Topology is currently not supported by the HPE CSI Driver. # Releases -Releases will track the upstream versioning of the HPE CSI Driver for Kubernetes and potential bugfixes in the TrueNAS CORE CSP will be pushed to the same image tag matching the HPE CSI Driver version. +Releases will track the upstream versioning of the HPE CSI Driver for Kubernetes and potential bugfixes in the TrueNAS CSP will be pushed to the same image tag matching the HPE CSI Driver version. +* [TrueNAS CSP v2.1.0](https://github.com/hpe-storage/truenas-csp/releases/tag/v2.0.0) for HPE CSI Driver v2.1.0 * [TrueNAS CORE CSP v2.0.0](https://github.com/hpe-storage/truenas-csp/releases/tag/v2.0.0) for HPE CSI Driver v2.0.0 * [TrueNAS CORE CSP v1.4.0](https://github.com/hpe-storage/truenas-csp/releases/tag/v1.4.0) for HPE CSI Driver v1.4.0 * [TrueNAS CORE CSP v1.3.0](https://github.com/hpe-storage/truenas-csp/releases/tag/v1.3.0) for HPE CSI Driver v1.3.0 @@ -75,8 +76,8 @@ make clean These are the known limitations. -- **Ephemeral Local Volumes:** Due to how TrueNAS CORE handles ZVol names internally and the long names generated by the HPE CSI Driver when requesting ephemeral storage, Ephemeral Local Volumes is not compatible with the TrueNAS CORE CSP. Generic Ephemeral Volumes introduced as an Alpha feature in Kubernetes 1.19 works as the volumes are derived from a regular `StorageClass`. -- **Volume sizing:** TrueNAS CORE ZVols "volblocksize" need to be even divisible by the requesting volume size. This is a non-issue if you're working with even "Gi" sizes in the `PersistentVolumeClaims`. It gets hairy if working with "Mi" sizes and large volume block sizes. +- **Ephemeral Local Volumes:** Due to how TrueNAS handles ZVol names internally and the long names generated by the HPE CSI Driver when requesting ephemeral storage, Ephemeral Local Volumes is not compatible with the TrueNAS CSP. Generic Ephemeral Volumes introduced as an Alpha feature in Kubernetes 1.19 works as the volumes are derived from a regular `StorageClass`. +- **Volume sizing:** TrueNAS ZVols "volblocksize" need to be even divisible by the requesting volume size. This is a non-issue if you're working with even "Gi" sizes in the `PersistentVolumeClaims`. It gets hairy if working with "Mi" sizes and large volume block sizes. # Need help? @@ -84,31 +85,35 @@ Please file an [issue](https://github.com/hpe-storage/truenas-csp/issues). This # Contributing -Contributing to the TrueNAS CORE CSP is subject to the following [contributing](CONTRIBUTING.md) guidelines. +Contributing to the TrueNAS CSP is subject to the following [contributing](CONTRIBUTING.md) guidelines. # Other Container Storage Providers for HPE CSI Driver There's currently no other open source CSPs, but the official HPE CSI Driver for Kubernetes include: - [HPE Alletra 6000 and Nimble Storage](https://scod.hpedev.io/container_storage_provider/hpe_nimble_storage/index.html) -- [HPE Alletra 9000 and Primera (including 3PAR)](https://scod.hpedev.io/container_storage_provider/hpe_3par_primera/index.html) (also works for HPE 3PAR) +- [HPE Alletra 9000 and Primera (including 3PAR)](https://scod.hpedev.io/container_storage_provider/hpe_3par_primera/index.html) # Similar projects -The TrueNAS CORE CSP is not the only enabler of TrueNAS/FreeNAS for Kubernetes. +The TrueNAS CSP is not the only enabler of TrueNAS/FreeNAS for Kubernetes. - [Democratic CSI](https://github.com/democratic-csi/democratic-csi): A generic OpenZFS CSI driver that supports multiple OpenZFS implementations - [FreeNAS Provisioner](https://github.com/nmaupu/freenas-provisioner): An external provisioner for FreeNAS NFS exports # License -TrueNAS CORE(R) (C) 2021 iXsystems, Inc. +TrueNAS(R) (C) 2022 iXsystems, Inc. -FreeNAS(R) is (C) 2011-2021 iXsystems +TrueNAS CORE(R) (C) 2022 iXsystems, Inc. -TrueNAS CORE CSP is released under the [MIT License](LICENSE). +TrueNAS SCALE(R) (C) 2022 iXsystems, Inc. -(C) Copyright 2021 Hewlett Packard Enterprise Development LP. +FreeNAS(R) is (C) 2011-2022 iXsystems + +TrueNAS CSP is released under the [MIT License](LICENSE). + +(C) Copyright 2022 Hewlett Packard Enterprise Development LP. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/docs/index.yaml b/docs/index.yaml index 93a3429..dd303f9 100644 --- a/docs/index.yaml +++ b/docs/index.yaml @@ -1,6 +1,39 @@ apiVersion: v1 entries: truenas-csp: + - annotations: + artifacthub.io/license: MIT + artifacthub.io/links: | + - name: HPE CSI Driver for Kubernetes + url: https://scod.hpedev.io + - name: Install + url: https://github.com/hpe-storage/truenas-csp/blob/master/INSTALL.md + artifacthub.io/prerelease: "false" + apiVersion: v2 + appVersion: 2.1.0 + created: "2022-01-30T18:45:32.690972362-08:00" + dependencies: + - name: hpe-csi-driver + repository: https://hpe-storage.github.io/co-deployments + version: 2.1.0 + description: TrueNAS Container Storage Provider Helm chart for Kubernetes + digest: aaad3b72c7101dcbfbb3f4af61229979b76eeb938cb69cd1c79b8a5e5c13c005 + home: https://github.com/hpe-storage/truenas-csp + icon: https://hpe-storage.github.io/truenas-csp/assets/icon.svg + keywords: + - HPE + - Storage + - CSI + maintainers: + - email: michael.mattsson@gmail.com + name: Michael Mattsson + name: truenas-csp + sources: + - https://github.com/hpe-storage/truenas-csp + type: application + urls: + - truenas-csp-1.1.0.tgz + version: 1.1.0 - annotations: artifacthub.io/license: MIT artifacthub.io/links: | @@ -34,4 +67,4 @@ entries: urls: - truenas-csp-1.0.0.tgz version: 1.0.0 -generated: "2021-10-02T10:25:01.732126837-07:00" +generated: "2022-01-30T18:45:32.68959745-08:00" diff --git a/docs/truenas-csp-1.1.0.tgz b/docs/truenas-csp-1.1.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..55d9bc388d7a230814b6c383cc73466e26cf0459 GIT binary patch literal 20737 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 B&5-~A literal 0 HcmV?d00001 diff --git a/e2e/Makefile b/e2e/Makefile index b83a5e4..e95d29e 100644 --- a/e2e/Makefile +++ b/e2e/Makefile @@ -18,7 +18,7 @@ rwo: mkreports -ginkgo.focus='External.Storage' \ -ginkgo.skip='\[Feature:|\[Disruptive\]|\[Serial\]' \ -storage.testdriver=test-driver-rwo.yaml \ - --non-blocking-taints=node-role.kubernetes.io/controlplane,node-role.kubernetes.io/etcd \ + --non-blocking-taints=node-role.kubernetes.io/controlplane,node-role.kubernetes.io/etcd,node-role.kubernetes.io/master \ -report-dir reports rwx: mkreports @@ -26,7 +26,7 @@ rwx: mkreports -ginkgo.focus='External.Storage' \ -ginkgo.skip='\[Feature:|\[Disruptive\]|\[Serial\]' \ -storage.testdriver=test-driver-rwx.yaml \ - --non-blocking-taints=node-role.kubernetes.io/controlplane,node-role.kubernetes.io/etcd \ + --non-blocking-taints=node-role.kubernetes.io/controlplane,node-role.kubernetes.io/etcd,node-role.kubernetes.io/master \ -report-dir reports mkreports: diff --git a/helm/charts/Makefile b/helm/charts/Makefile index 97e6d03..d1238b7 100755 --- a/helm/charts/Makefile +++ b/helm/charts/Makefile @@ -2,8 +2,9 @@ CHART_TARGET:=../../docs all: truenas-csp truenas-csp: + helm dependency build $@ helm lint $@ helm package $@ -d . - helm repo index --merge $(CHART_TARGET)/docs/index.yaml . + helm repo index --merge $(CHART_TARGET)/index.yaml . mv *.tgz $(CHART_TARGET) mv index.yaml $(CHART_TARGET) diff --git a/helm/charts/truenas-csp/Chart.lock b/helm/charts/truenas-csp/Chart.lock new file mode 100644 index 0000000..19bff4b --- /dev/null +++ b/helm/charts/truenas-csp/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: hpe-csi-driver + repository: https://hpe-storage.github.io/co-deployments + version: 2.1.0 +digest: sha256:5e423cd86a91d6d5fc5f8314e192b76464615bb56f11618b4c29d406397d34c4 +generated: "2022-01-30T16:20:09.63119967-08:00" diff --git a/helm/charts/truenas-csp/Chart.yaml b/helm/charts/truenas-csp/Chart.yaml index 65391cf..1475c6d 100644 --- a/helm/charts/truenas-csp/Chart.yaml +++ b/helm/charts/truenas-csp/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: truenas-csp type: application -description: TrueNAS CORE Container Storage Provider Helm chart for Kubernetes +description: TrueNAS Container Storage Provider Helm chart for Kubernetes icon: https://hpe-storage.github.io/truenas-csp/assets/icon.svg annotations: artifacthub.io/license: MIT @@ -11,9 +11,9 @@ annotations: url: https://scod.hpedev.io - name: Install url: https://github.com/hpe-storage/truenas-csp/blob/master/INSTALL.md - artifacthub.io/prerelease: "true" -version: "1.0.0" -appVersion: "2.0.0" + artifacthub.io/prerelease: "false" +version: "1.1.0" +appVersion: "2.1.0" maintainers: - name: Michael Mattsson email: michael.mattsson@gmail.com @@ -22,8 +22,8 @@ sources: home: https://github.com/hpe-storage/truenas-csp dependencies: - name: hpe-csi-driver - version: 2.0.0 -# repository: https://hpe-storage.github.io/co-deployments + version: 2.1.0 + repository: "https://hpe-storage.github.io/co-deployments" keywords: - HPE - Storage diff --git a/helm/charts/truenas-csp/README.md b/helm/charts/truenas-csp/README.md index 1625aa7..5edb407 100644 --- a/helm/charts/truenas-csp/README.md +++ b/helm/charts/truenas-csp/README.md @@ -1,16 +1,17 @@ -# TrueNAS CORE Container Storage Provider for Kubernetes Helm chart +# TrueNAS Container Storage Provider for Kubernetes Helm chart -This Chart provide means to install the dependent [HPE CSI Driver for Kubernetes](https://scod.hpedev.io/csi_driver) to provide persistent storage for Kubernetes workloads using [TrueNAS CORE Container Storage Provider](https://github.com/hpe-storage/truenas-csp). +This Chart provide means to install the dependent [HPE CSI Driver for Kubernetes](https://scod.hpedev.io/csi_driver) to provide persistent storage for Kubernetes workloads using [TrueNAS Container Storage Provider](https://github.com/hpe-storage/truenas-csp). **Note:** This is a pre-release chart! ## Prerequisites -- Upstream Kubernetes version >= 1.18 +- Upstream Kubernetes version >= 1.20 - Most Kubernetes distributions are supported - Recent Ubuntu, SLES, CentOS or RHEL compute nodes connected to their respective official package repositories - Helm 3 (Version >= 3.6.x required) -- TrueNAS CORE 12 BETA or later +- TrueNAS 12.0 BETA or later +- TrueNAS SCALE 22.02 RC1 or later - FreeNAS 11.2-U3 or later This chart is lock stepped with [HPE CSI Driver for Kubernetes Helm chart](https://artifacthub.io/packages/helm/hpe-storage/hpe-csi-driver) application versions. Other requirements and prerequisites may be found on that chart. diff --git a/helm/charts/truenas-csp/charts/hpe-csi-driver-2.1.0.tgz b/helm/charts/truenas-csp/charts/hpe-csi-driver-2.1.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..a3dcc02d68cd39f03ab1ad3d4402965fb5ced185 GIT binary patch literal 14636 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 literal 0 HcmV?d00001 diff --git a/helm/charts/truenas-csp/charts/hpe-csi-driver/Chart.yaml b/helm/charts/truenas-csp/charts/hpe-csi-driver/Chart.yaml deleted file mode 100644 index 5a11f48..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/Chart.yaml +++ /dev/null @@ -1,23 +0,0 @@ -annotations: - artifacthub.io/license: Apache-2.0 - artifacthub.io/links: | - - name: Documentation - url: https://scod.hpedev.io/csi_driver - artifacthub.io/prerelease: "false" -apiVersion: v1 -appVersion: 2.0.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 -maintainers: -- email: hpe-containers-dev@hpe.com - name: raunakkumar -name: hpe-csi-driver -sources: -- https://github.com/hpe-storage/co-deployments -- https://github.com/hpe-storage/csi-driver -version: 2.0.0 diff --git a/helm/charts/truenas-csp/charts/hpe-csi-driver/README.md b/helm/charts/truenas-csp/charts/hpe-csi-driver/README.md deleted file mode 100644 index 4986dcb..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/README.md +++ /dev/null @@ -1,115 +0,0 @@ -# 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 | -| cspClientTimeout | CSP client timeout for HPE Alletra 9000, Primera and 3PAR (60-360 sec).| 60 | - -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 `pre-prelease` 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. - -### 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/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/hpe-nodeinfo-crd.yaml b/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/hpe-nodeinfo-crd.yaml deleted file mode 100644 index 86c60cf..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/hpe-nodeinfo-crd.yaml +++ /dev/null @@ -1,70 +0,0 @@ ---- -############################################# -############ 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/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/hpe-replicated-device-info-crd.yaml b/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/hpe-replicated-device-info-crd.yaml deleted file mode 100644 index 253d87d..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/hpe-replicated-device-info-crd.yaml +++ /dev/null @@ -1,57 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - creationTimestamp: null - name: hpereplicationdeviceinfos.storage.hpe.com -spec: - group: storage.hpe.com - names: - kind: HPEReplicationDeviceInfo - plural: hpereplicationdeviceinfos - shortNames: - - hperdi - - scope: Cluster - validation: - openAPIV3Schema: - properties: - hpeReplicationDeviceInfos: - description: List of HPE Replicated Arrays configured for 3PAR/Primera arrays. - items: - properties: - targets: - description: Target Array Details - type: array - items: - 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 - type: array - version: v1 -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/hpe-snapshotgroupinfo-crd.yaml b/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/hpe-snapshotgroupinfo-crd.yaml deleted file mode 100644 index 76789ed..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/hpe-snapshotgroupinfo-crd.yaml +++ /dev/null @@ -1,57 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - creationTimestamp: null - name: hpesnapshotgroupinfos.storage.hpe.com -spec: - group: storage.hpe.com - names: - kind: HPESnapshotGroupInfo - plural: hpesnapshotgroupinfos - shortNames: - - hpesgi - scope: Cluster - version: v1 - validation: - openAPIV3Schema: - properties: - hpeSnapshotGroupInfos: - description: List of HPE snapshot groups created for 3PAR/Primera arrays. - type: array - items: - properties: - uuid: - description: The UUID of the node. - type: string - - record: - description: Metadata for the volume group - type: map[string]string - - snapshotVolumes: - description: Snapshot volumes that are part of this snapshot group - type: array - items: - 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/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/hpe-volumegroupinfo-crd.yaml b/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/hpe-volumegroupinfo-crd.yaml deleted file mode 100644 index c9e58e4..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/hpe-volumegroupinfo-crd.yaml +++ /dev/null @@ -1,64 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - creationTimestamp: null - name: hpevolumegroupinfos.storage.hpe.com -spec: - group: storage.hpe.com - names: - kind: HPEVolumeGroupInfo - plural: hpevolumegroupinfos - shortNames: - - hpevgi - scope: Cluster - version: v1 - validation: - openAPIV3Schema: - properties: - hpeVolumeGroupInfos: - description: List of HPE volume groups configured for 3PAR/Primera arrays. - type: array - items: - properties: - uuid: - description: The UUID of the node. - type: string - - record: - description: Metadata for the volume group - type: map[string]string - - snapshotGroups: - description: Snapshot groups that are linked to this volume group - type: array - items: - properties: - id: - description: ID of the snapshot group - type: string - - name: - description: Name of the snapshot group - type: string - - volumes: - description: Volumes that are members in this volume group - type: array - items: - properties: - volumeId: - description: ID of the member volume - type: string - - volumeName: - description: Name of the member volume - type: string - - - -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/hpe-volumeinfo-crd.yaml b/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/hpe-volumeinfo-crd.yaml deleted file mode 100644 index 417f4f4..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/hpe-volumeinfo-crd.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - creationTimestamp: null - name: hpevolumeinfos.storage.hpe.com -spec: - group: storage.hpe.com - names: - kind: HPEVolumeInfo - plural: hpevolumeinfos - scope: Cluster - validation: - openAPIV3Schema: - properties: - hpeVolumes: - description: List of HPE volumes configured for 3PAR/Primera arrays. - items: - properties: - uuid: - description: The UUID of the volume. - type: string - record: - description: Metadata for the volume. - type: map[string]string - type: array - version: v1 -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_snapshotgroupclasses.yaml b/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_snapshotgroupclasses.yaml deleted file mode 100644 index b588784..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_snapshotgroupclasses.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -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/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_snapshotgroupcontents.yaml b/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_snapshotgroupcontents.yaml deleted file mode 100644 index a7132c5..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_snapshotgroupcontents.yaml +++ /dev/null @@ -1,104 +0,0 @@ ---- -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/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_snapshotgroups.yaml b/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_snapshotgroups.yaml deleted file mode 100644 index 3372a7d..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_snapshotgroups.yaml +++ /dev/null @@ -1,83 +0,0 @@ ---- -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/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_volumegroupclasses.yaml b/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_volumegroupclasses.yaml deleted file mode 100644 index e201ec9..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_volumegroupclasses.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -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/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_volumegroupcontents.yaml b/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_volumegroupcontents.yaml deleted file mode 100644 index d944909..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_volumegroupcontents.yaml +++ /dev/null @@ -1,96 +0,0 @@ ---- -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/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_volumegroups.yaml b/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_volumegroups.yaml deleted file mode 100644 index 862b439..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/crds/storage.hpe.com_volumegroups.yaml +++ /dev/null @@ -1,69 +0,0 @@ ---- -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/helm/charts/truenas-csp/charts/hpe-csi-driver/files/config.json b/helm/charts/truenas-csp/charts/hpe-csi-driver/files/config.json deleted file mode 100644 index d006501..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/files/config.json +++ /dev/null @@ -1,128 +0,0 @@ -[ - { - "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": "info", - "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": "info", - "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" - } -] \ No newline at end of file diff --git a/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/NOTES.txt b/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/NOTES.txt deleted file mode 100644 index e69de29..0000000 diff --git a/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/_helpers.tpl b/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/_helpers.tpl deleted file mode 100644 index 165840d..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/_helpers.tpl +++ /dev/null @@ -1,32 +0,0 @@ -{{/* 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/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/csi-driver-crd.yaml b/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/csi-driver-crd.yaml deleted file mode 100644 index 61275ff..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/csi-driver-crd.yaml +++ /dev/null @@ -1,24 +0,0 @@ - - - ---- - -################# 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/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/hpe-csi-controller.yaml b/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/hpe-csi-controller.yaml deleted file mode 100644 index 8126295..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/hpe-csi-controller.yaml +++ /dev/null @@ -1,240 +0,0 @@ ---- - -############################################# -############ 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 - 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:v1.5.0 - {{- else if .Values.registry }} - image: {{ .Values.registry }}/sig-storage/csi-provisioner:v1.5.0 - {{- else }} - image: k8s.gcr.io/sig-storage/csi-provisioner:v1.5.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:v2.2.0 - {{- else if .Values.registry }} - image: {{ .Values.registry }}/sig-storage/csi-attacher:v2.2.0 - {{- else }} - image: k8s.gcr.io/sig-storage/csi-attacher:v2.2.0 - {{- 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 - - 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:v4.0.0 - {{- else if .Values.registry }} - image: {{ .Values.registry }}/k8scsi/csi-snapshotter:v4.0.0 - {{- else }} - image: k8s.gcr.io/sig-storage/csi-snapshotter:v4.0.0 - {{- 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:v0.4.0 - {{- else if .Values.registry }} - image: {{ .Values.registry }}/sig-storage/csi-resizer:v0.4.0 - {{- else }} - image: k8s.gcr.io/sig-storage/csi-resizer:v0.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.0.0 - {{- else }} - image: quay.io/hpestorage/csi-driver:v2.0.0 - {{- end }} - args : - - "--endpoint=$(CSI_ENDPOINT)" - - "--flavor=kubernetes" - - "--pod-monitor" - - "--pod-monitor-interval=30" - {{- if .Values.cspClientTimeout }} - - "--csp-client-timeout={{ .Values.cspClientTimeout }}s" - {{- end }} - 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.2.0 - {{- else }} - image: quay.io/hpestorage/volume-mutator:v1.2.0 - {{- 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.0 - {{- else }} - image: quay.io/hpestorage/volume-group-snapshotter:v1.0.0 - {{- 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.0 - {{- else }} - image: quay.io/hpestorage/volume-group-provisioner:v1.0.0 - {{- 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.0 - {{- else }} - image: quay.io/hpestorage/csi-extensions:v1.2.0 - {{- 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: / - tolerations: - - effect: NoExecute - key: node.kubernetes.io/not-ready - operator: Exists - tolerationSeconds: 30 - - effect: NoExecute - key: node.kubernetes.io/unreachable - operator: Exists - tolerationSeconds: 30 diff --git a/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/hpe-csi-node.yaml b/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/hpe-csi-node.yaml deleted file mode 100644 index a721428..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/hpe-csi-node.yaml +++ /dev/null @@ -1,204 +0,0 @@ ---- - -####################################### -############ 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 - 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.0.1 - {{- else if .Values.registry }} - image: {{ .Values.registry }}/sig-storage/csi-node-driver-registrar:v2.0.1 - {{- else }} - image: k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.0.1 - {{- 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: "Always" - 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.0.0 - {{- else }} - image: quay.io/hpestorage/csi-driver:v2.0.0 - {{- end}} - args : - - "--endpoint=$(CSI_ENDPOINT)" - - "--node-service" - - "--flavor=kubernetes" - {{- if .Values.cspClientTimeout }} - - "--csp-client-timeout={{ .Values.cspClientTimeout }}s" - {{- end }} - 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 - tolerations: - - effect: NoExecute - key: node.kubernetes.io/not-ready - operator: Exists - tolerationSeconds: 30 - - effect: NoExecute - key: node.kubernetes.io/unreachable - operator: Exists - tolerationSeconds: 30 diff --git a/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/hpe-csi-rbac.yaml b/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/hpe-csi-rbac.yaml deleted file mode 100644 index d6a3509..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/hpe-csi-rbac.yaml +++ /dev/null @@ -1,566 +0,0 @@ ---- - -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"] - - 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"] - - apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshotcontents/status"] - verbs: ["create", "get", "list", "watch", "update", "delete"] - - 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"] - - apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshotcontents/status"] - verbs: ["create", "get", "list", "watch", "update", "delete"] - - 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 - namespace: {{ .Release.Namespace }} -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/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/hpe-linux-config.yaml b/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/hpe-linux-config.yaml deleted file mode 100644 index 5e4c494..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/hpe-linux-config.yaml +++ /dev/null @@ -1,13 +0,0 @@ ---- -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/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/nimble-csp.yaml b/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/nimble-csp.yaml deleted file mode 100644 index f3d90b3..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/nimble-csp.yaml +++ /dev/null @@ -1,87 +0,0 @@ -{{- 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 - 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.0.0 - {{- else }} - image: quay.io/hpestorage/alletra-6000-and-nimble-csp:v2.0.0 - {{- end }} - imagePullPolicy: {{ .Values.imagePullPolicy | quote }} - ports: - - containerPort: 8080 - volumeMounts: - - name: log-dir - mountPath: /var/log - volumes: - - name: log-dir - hostPath: - path: /var/log - tolerations: - - effect: NoExecute - key: node.kubernetes.io/not-ready - operator: Exists - tolerationSeconds: 30 - - effect: NoExecute - key: node.kubernetes.io/unreachable - operator: Exists - tolerationSeconds: 30 -{{- end }} diff --git a/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/primera-3par-csp.yaml b/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/primera-3par-csp.yaml deleted file mode 100644 index 5e69342..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/templates/primera-3par-csp.yaml +++ /dev/null @@ -1,89 +0,0 @@ -{{- 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 - 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.0.0 - {{- else }} - image: quay.io/hpestorage/alletra-9000-primera-and-3par-csp:v2.0.0 - {{- end }} - imagePullPolicy: {{ .Values.imagePullPolicy | quote }} - ports: - - containerPort: 8080 - volumeMounts: - - name: log-dir - mountPath: /var/log - volumes: - - name: log-dir - hostPath: - path: /var/log - tolerations: - - effect: NoExecute - key: node.kubernetes.io/not-ready - operator: Exists - tolerationSeconds: 30 - - effect: NoExecute - key: node.kubernetes.io/unreachable - operator: Exists - tolerationSeconds: 30 -{{- end }} diff --git a/helm/charts/truenas-csp/charts/hpe-csi-driver/values.schema.json b/helm/charts/truenas-csp/charts/hpe-csi-driver/values.schema.json deleted file mode 100644 index e8085b0..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/values.schema.json +++ /dev/null @@ -1,170 +0,0 @@ -{ - "$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, - "cspClientTimeout": 60 - }, - "required": [ - "disable", - "disableNodeConformance", - "imagePullPolicy", - "iscsi", - "logLevel", - "registry", - "kubeletRootDir", - "disableNodeGetVolumeStats", - "cspClientTimeout" - ], - "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 - }, - "cspClientTimeout": { - "$id": "#/properties/cspClientTimeout", - "title": "CSP client timeout", - "description": "Change the CSP client timeout for HPE Alletra 9000, Primera and 3PAR systems", - "type": "integer", - "default": 60, - "minimum": 60, - "maximum": 360 - }, - "global": {} - }, - "additionalProperties": false -} diff --git a/helm/charts/truenas-csp/charts/hpe-csi-driver/values.yaml b/helm/charts/truenas-csp/charts/hpe-csi-driver/values.yaml deleted file mode 100644 index b40dfce..0000000 --- a/helm/charts/truenas-csp/charts/hpe-csi-driver/values.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# 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 - -# CSP client timeout for HPE Alletra 9000, Primera and 3PAR (60-360 seconds) -cspClientTimeout: 60