From 92f961b6c27da7c1135bac1778be0cce34f32dce Mon Sep 17 00:00:00 2001 From: Bharath Sreekanth Date: Fri, 20 May 2022 10:51:51 -0400 Subject: [PATCH] make charts --- .../dell-csi-powerflex/csi-vxflexos-2.2.0.tgz | Bin 0 -> 7935 bytes .../csi-vxflexos/2.2.0/Chart.yaml | 21 + .../csi-vxflexos/2.2.0/app-readme.md | 10 + .../csi-vxflexos/2.2.0/questions.yaml | 21 + .../csi-vxflexos/2.2.0/templates/_helpers.tpl | 86 ++++ .../2.2.0/templates/controller.yaml | 390 +++++++++++++++++ .../2.2.0/templates/csidriver.yaml | 10 + .../2.2.0/templates/driver-config-params.yaml | 15 + .../csi-vxflexos/2.2.0/templates/node.yaml | 391 ++++++++++++++++++ .../csi-vxflexos/2.2.0/values.yaml | 229 ++++++++++ index.yaml | 25 ++ 11 files changed, 1198 insertions(+) create mode 100644 assets/dell-csi-powerflex/csi-vxflexos-2.2.0.tgz create mode 100644 charts/dell-csi-powerflex/csi-vxflexos/2.2.0/Chart.yaml create mode 100644 charts/dell-csi-powerflex/csi-vxflexos/2.2.0/app-readme.md create mode 100644 charts/dell-csi-powerflex/csi-vxflexos/2.2.0/questions.yaml create mode 100644 charts/dell-csi-powerflex/csi-vxflexos/2.2.0/templates/_helpers.tpl create mode 100644 charts/dell-csi-powerflex/csi-vxflexos/2.2.0/templates/controller.yaml create mode 100644 charts/dell-csi-powerflex/csi-vxflexos/2.2.0/templates/csidriver.yaml create mode 100644 charts/dell-csi-powerflex/csi-vxflexos/2.2.0/templates/driver-config-params.yaml create mode 100644 charts/dell-csi-powerflex/csi-vxflexos/2.2.0/templates/node.yaml create mode 100644 charts/dell-csi-powerflex/csi-vxflexos/2.2.0/values.yaml diff --git a/assets/dell-csi-powerflex/csi-vxflexos-2.2.0.tgz b/assets/dell-csi-powerflex/csi-vxflexos-2.2.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..b590c59b63fe017acff238a92b2015b249a015f1 GIT binary patch literal 7935 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 literal 0 HcmV?d00001 diff --git a/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/Chart.yaml b/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/Chart.yaml new file mode 100644 index 000000000..e29a4531b --- /dev/null +++ b/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/Chart.yaml @@ -0,0 +1,21 @@ +annotations: + catalog.cattle.io/certified: partner + catalog.cattle.io/display-name: Dell CSI PowerFlex + catalog.cattle.io/release-name: vxflexos +apiVersion: v2 +appVersion: 2.2.0 +description: | + PowerFlex CSI (Container Storage Interface) driver Kubernetes + integration. This chart includes everything required to provision via CSI as + well as a StorageClass. +icon: https://partner-charts.rancher.io/assets/logos/dell.png +keywords: +- csi +- storage +kubeVersion: 1.21-0 - 1.23-0 +maintainers: +- name: DellEMC +name: csi-vxflexos +sources: +- https://github.com/dell/csi-powerflex +version: 2.2.0 diff --git a/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/app-readme.md b/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/app-readme.md new file mode 100644 index 000000000..4c22667c1 --- /dev/null +++ b/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/app-readme.md @@ -0,0 +1,10 @@ +CSI Driver for PowerFlex is part of the CSM (Container Storage Modules) open-source suite of Kubernetes storage enablers for Dell EMC products. CSI Driver for PowerFlex is a Container Storage Interface (CSI) driver that provides support for provisioning persistent storage using Dell EMC PowerFlex storage array. + +Pre-Install +- All nodes must have the SDC client installed to satisfy the CSI driver for PowerFlex. Ensure that nodes are provided at least two (2) interfaces and potentially up to four (4) interfaces depending on the PowerFlex system configuration. +- [Install Storage Data Client](https://dell.github.io/csm-docs/docs/csidriver/installation/helm/powerflex/#manual-sdc-deployment) +- [Create Configuration Secret (Step 4)](https://dell.github.io/csm-docs/docs/csidriver/installation/helm/powerflex/#install-the-driver) + +Post-Install +- [Create Storage Class(es)](https://dell.github.io/csm-docs/docs/csidriver/installation/helm/powerflex/#storage-classes) + [Storage Class Examples](https://github.com/dell/csi-powerflex/tree/main/samples/storageclass) diff --git a/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/questions.yaml b/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/questions.yaml new file mode 100644 index 000000000..7c196f8be --- /dev/null +++ b/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/questions.yaml @@ -0,0 +1,21 @@ +categories: +- storage +namespace: vxflexos +labels: + io.rancher.certified: partner +questions: +- variable: defaultFsType + label: "Defines Filesystem format" + type: enum + required: true + group: "General settings (Required)" + options: + - "ext4" + - "xfs" + +- variable: volumeNamePrefix + label: "Defines a string prepended to each volume created" + type: string + default: "k8svol" + required: true + group: "General settings (Required)" diff --git a/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/templates/_helpers.tpl b/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/templates/_helpers.tpl new file mode 100644 index 000000000..a24d260a5 --- /dev/null +++ b/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/templates/_helpers.tpl @@ -0,0 +1,86 @@ +{{/* +Return the appropriate sidecar images based on k8s version +*/}} +{{- define "csi-vxflexos.attacherImage" -}} + {{- if eq .Capabilities.KubeVersion.Major "1" }} + {{- if eq ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "19" }} + {{- print "k8s.gcr.io/sig-storage/csi-attacher:v3.1.0" -}} + {{- else if and (ge (trimSuffix "+" .Capabilities.KubeVersion.Minor) "20") (le (trimSuffix "+" .Capabilities.KubeVersion.Minor) "21") -}} + {{- print "k8s.gcr.io/sig-storage/csi-attacher:v3.2.1" -}} + {{- else if and (ge (trimSuffix "+" .Capabilities.KubeVersion.Minor) "21") (le (trimSuffix "+" .Capabilities.KubeVersion.Minor) "23") -}} + {{- print "k8s.gcr.io/sig-storage/csi-attacher:v3.4.0" -}} + {{- else -}} + {{- print "k8s.gcr.io/sig-storage/csi-attacher:v3.1.0" -}} + {{- end -}} + {{- end -}} +{{- end -}} + +{{- define "csi-vxflexos.provisionerImage" -}} + {{- if eq .Capabilities.KubeVersion.Major "1" }} + {{- if eq ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "19" }} + {{- print "k8s.gcr.io/sig-storage/csi-provisioner:v2.1.0" -}} + {{- else if and (ge (trimSuffix "+" .Capabilities.KubeVersion.Minor) "20") (le (trimSuffix "+" .Capabilities.KubeVersion.Minor) "21") -}} + {{- print "k8s.gcr.io/sig-storage/csi-provisioner:v2.2.1" -}} + {{- else if and (ge (trimSuffix "+" .Capabilities.KubeVersion.Minor) "21") (le (trimSuffix "+" .Capabilities.KubeVersion.Minor) "23") -}} + {{- print "k8s.gcr.io/sig-storage/csi-provisioner:v3.1.0" -}} + {{- else -}} + {{- print "k8s.gcr.io/sig-storage/csi-provisioner:v2.1.0" -}} + {{- end -}} + {{- end -}} +{{- end -}} + +{{- define "csi-vxflexos.snapshotterImage" -}} + {{- if eq .Capabilities.KubeVersion.Major "1" }} + {{- if eq ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "19" }} + {{- print "k8s.gcr.io/sig-storage/csi-snapshotter:v3.0.3" -}} + {{- else if or (eq (trimSuffix "+" .Capabilities.KubeVersion.Minor) "20") (eq (trimSuffix "+" .Capabilities.KubeVersion.Minor) "21") -}} + {{- print "k8s.gcr.io/sig-storage/csi-snapshotter:v4.1.0" -}} + {{- else if and (ge (trimSuffix "+" .Capabilities.KubeVersion.Minor) "21") (le (trimSuffix "+" .Capabilities.KubeVersion.Minor) "23") -}} + {{- print "k8s.gcr.io/sig-storage/csi-snapshotter:v5.0.1" -}} + {{- else -}} + {{- print "k8s.gcr.io/sig-storage/csi-snapshotter:v3.0.3" -}} + {{- end -}} + {{- end -}} +{{- end -}} + +{{- define "csi-vxflexos.resizerImage" -}} + {{- if eq .Capabilities.KubeVersion.Major "1" }} + {{- if eq ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "19" }} + {{- print "k8s.gcr.io/sig-storage/csi-resizer:v1.1.0" -}} + {{- else if and (ge (trimSuffix "+" .Capabilities.KubeVersion.Minor) "19") (le (trimSuffix "+" .Capabilities.KubeVersion.Minor) "21") -}} + {{- print "k8s.gcr.io/sig-storage/csi-resizer:v1.2.0" -}} + {{- else if and (ge (trimSuffix "+" .Capabilities.KubeVersion.Minor) "21") (le (trimSuffix "+" .Capabilities.KubeVersion.Minor) "23") -}} + {{- print "k8s.gcr.io/sig-storage/csi-resizer:v1.4.0" -}} + {{- else -}} + {{- print "k8s.gcr.io/sig-storage/csi-resizer:v1.1.0" -}} + {{- end -}} + {{- end -}} +{{- end -}} + +{{- define "csi-vxflexos.registrarImage" -}} + {{- if eq .Capabilities.KubeVersion.Major "1" }} + {{- if eq ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "19" }} + {{- print "k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.1.0" -}} + {{- else if and (ge (trimSuffix "+" .Capabilities.KubeVersion.Minor) "20") (le (trimSuffix "+" .Capabilities.KubeVersion.Minor) "21") -}} + {{- print "k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.2.0" -}} + {{- else if and (ge (trimSuffix "+" .Capabilities.KubeVersion.Minor) "21") (le (trimSuffix "+" .Capabilities.KubeVersion.Minor) "23") -}} + {{- print "k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.5.0" -}} + {{- else -}} + {{- print "k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.1.0" -}} + {{- end -}} + {{- end -}} +{{- end -}} + +{{- define "csi-vxflexos.healthmonitorImage" -}} + {{- if eq .Capabilities.KubeVersion.Major "1" }} + {{- if eq ( trimSuffix "+" .Capabilities.KubeVersion.Minor ) "19" }} + {{- print "gcr.io/k8s-staging-sig-storage/csi-external-health-monitor-controller:v0.4.0" -}} + {{- else if and (ge (trimSuffix "+" .Capabilities.KubeVersion.Minor) "20") (le (trimSuffix "+" .Capabilities.KubeVersion.Minor) "21") -}} + {{- print "gcr.io/k8s-staging-sig-storage/csi-external-health-monitor-controller:v0.4.0" -}} + {{- else if ge (trimSuffix "+" .Capabilities.KubeVersion.Minor ) "22" -}} + {{- print "gcr.io/k8s-staging-sig-storage/csi-external-health-monitor-controller:v0.4.0" -}} + {{- else -}} + {{- print "gcr.io/k8s-staging-sig-storage/csi-external-health-monitor-controller:v0.4.0" -}} + {{- end -}} + {{- end -}} +{{- end -}} diff --git a/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/templates/controller.yaml b/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/templates/controller.yaml new file mode 100644 index 000000000..190268038 --- /dev/null +++ b/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/templates/controller.yaml @@ -0,0 +1,390 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ .Release.Name }}-controller + namespace: {{ .Release.Namespace }} +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ .Release.Name }}-controller +rules: + - apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: ["get", "watch", "list", "delete", "update", "create"] + - apiGroups: [""] + resources: ["events"] + verbs: ["list", "watch", "create", "update", "patch"] + - apiGroups: [""] + resources: ["nodes"] +{{- if hasKey .Values "podmon" }} +{{- if eq .Values.podmon.enabled true }} + verbs: ["get", "list", "watch", "patch"] +{{- else }} + verbs: ["get", "list", "watch"] +{{- end }} +{{- end }} + - apiGroups: [""] + resources: ["persistentvolumes"] + verbs: ["get", "list", "watch", "create", "delete", "update", "patch"] + - apiGroups: [""] + resources: ["persistentvolumeclaims"] + verbs: ["get", "list", "watch", "update", "patch"] + - apiGroups: [""] + resources: ["persistentvolumeclaims/status"] + verbs: ["update", "patch"] + - apiGroups: ["storage.k8s.io"] + resources: ["storageclasses"] + verbs: ["get", "list", "watch"] + - apiGroups: ["storage.k8s.io"] + resources: ["volumeattachments"] +{{- if hasKey .Values "podmon" }} +{{- if eq .Values.podmon.enabled true }} + verbs: ["get", "list", "watch", "update", "patch", "delete"] +{{- else }} + verbs: ["get", "list", "watch", "update", "patch"] +{{- end }} +{{- end }} + - apiGroups: ["storage.k8s.io"] + resources: ["csinodes"] + verbs: ["get", "list", "watch", "update"] + - apiGroups: ["storage.k8s.io"] + resources: ["volumeattachments/status"] + verbs: ["patch"] + - apiGroups: ["csi.storage.k8s.io"] + resources: ["csinodeinfos"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["pods"] +{{- if hasKey .Values "podmon" }} +{{- if eq .Values.podmon.enabled true }} + verbs: ["get", "list", "watch", "update", "delete"] +{{- else }} + verbs: ["get", "list", "watch"] +{{- end }} +{{- end }} +# below for snapshotter + - apiGroups: [""] + resources: ["secrets"] + verbs: ["get", "list"] +{{- if hasKey .Values "vgsnapshotter" }} +{{- if eq .Values.vgsnapshotter.enabled true }} + - apiGroups: ["volumegroup.storage.dell.com"] + resources: ["dellcsivolumegroupsnapshots","dellcsivolumegroupsnapshots/status"] + verbs: ["create", "list", "watch", "delete", "update"] +{{- end }} +{{- end }} + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotclasses"] + verbs: ["get", "list", "watch"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotcontents"] + verbs: ["create", "get", "list", "watch", "update", "delete", "patch"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshots"] +{{- if hasKey .Values "vgsnapshotter" }} +{{- if eq .Values.vgsnapshotter.enabled true }} + verbs: ["get", "list", "watch", "update", "create", "delete"] +{{- else }} + verbs: ["get", "list", "watch", "update"] +{{- end }} +{{- end }} + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshots/status","volumesnapshotcontents/status"] + verbs: ["get", "list", "watch", "update", "patch"] + - apiGroups: ["apiextensions.k8s.io"] + resources: ["customresourcedefinitions"] + verbs: ["create", "list", "watch", "delete", "update"] +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ .Release.Name }}-controller +subjects: + - kind: ServiceAccount + name: {{ .Release.Name }}-controller + namespace: {{ .Release.Namespace }} +roleRef: + kind: ClusterRole + name: {{ .Release.Name }}-controller + apiGroup: rbac.authorization.k8s.io +--- +kind: Deployment +apiVersion: apps/v1 +metadata: + name: {{ .Release.Name }}-controller + namespace: {{ .Release.Namespace }} + {{- if hasKey .Values "authorization" }} + {{- if eq .Values.authorization.enabled true }} + annotations: + com.dell.karavi-authorization-proxy: "true" + {{ end }} + {{ end }} +spec: +{{- if gt (int .Values.controller.controllerCount) 1 }} + strategy: + rollingUpdate: + maxUnavailable: 1 +{{- end }} + selector: + matchLabels: + name: {{ .Release.Name }}-controller + replicas: {{ required "Must provide the number of controller instances to create." .Values.controller.controllerCount }} + template: + metadata: + labels: + {{- if eq (.Values.vgsnapshotter.enabled| toString) "true" }} + vg-snapshotter-enabled: "true" + {{- else if eq (.Values.vgsnapshotter.enabled| toString) "false" }} + vg-snapshotter-enabled: "false" + {{- end }} + name: {{ .Release.Name }}-controller + spec: + affinity: + nodeSelector: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: name + operator: In + values: + - {{ .Release.Name }}-controller + topologyKey: kubernetes.io/hostname + serviceAccountName: {{ .Release.Name }}-controller + {{- if .Values.controller.nodeSelector }} + nodeSelector: + {{- toYaml .Values.controller.nodeSelector | nindent 8 }} + {{- end }} + {{- if .Values.controller.tolerations }} + tolerations: + {{- toYaml .Values.controller.tolerations | nindent 6 }} + {{- end }} + containers: +{{- if hasKey .Values "podmon" }} +{{- if eq .Values.podmon.enabled true }} + - name: podmon + image: {{ required "Must provide the podmon container image." .Values.podmon.image }} + imagePullPolicy: {{ .Values.imagePullPolicy }} + args: + {{- toYaml .Values.podmon.controller.args | nindent 12 }} + env: + - name: MY_NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + - name: MY_POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: MY_POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + volumeMounts: + - name: socket-dir + mountPath: /var/run/csi + - name: vxflexos-config-params + mountPath: /vxflexos-config-params +{{- end }} +{{- end }} + - name: attacher + image: {{ required "Must provide the CSI attacher container image." ( include "csi-vxflexos.attacherImage" . ) }} + imagePullPolicy: {{ .Values.imagePullPolicy }} + args: + - "--csi-address=$(ADDRESS)" + - "--v=5" + - "--leader-election=true" + env: + - name: ADDRESS + value: /var/run/csi/csi.sock + volumeMounts: + - name: socket-dir + mountPath: /var/run/csi + - name: provisioner + image: {{ required "Must provide the CSI provisioner container image." ( include "csi-vxflexos.provisionerImage" . ) }} + imagePullPolicy: {{ .Values.imagePullPolicy }} + args: + - "--csi-address=$(ADDRESS)" + - "--feature-gates=Topology=true" + - "--volume-name-prefix={{ required "Must provide a value to prefix to driver created volume names" .Values.controller.volumeNamePrefix }}" + - "--volume-name-uuid-length=10" + - "--leader-election=true" + - "--timeout=120s" + - "--v=5" + - "--default-fstype={{ .Values.defaultFsType | default "ext4" }}" + - "--extra-create-metadata" + env: + - name: ADDRESS + value: /var/run/csi/csi.sock + volumeMounts: + - name: socket-dir + mountPath: /var/run/csi + {{- if hasKey .Values.controller "healthMonitor" }} + {{- if eq .Values.controller.healthMonitor.enabled true}} + - name: csi-external-health-monitor-controller + image: {{ required "Must provide the CSI external health monitor image." ( include "csi-vxflexos.healthmonitorImage" . ) }} + imagePullPolicy: {{ .Values.imagePullPolicy }} + args: + - "--csi-address=$(ADDRESS)" + - "--v=5" + - "--leader-election=true" + - "--enable-node-watcher=true" + - "--http-endpoint=:8080" + - "--monitor-interval={{ .Values.controller.healthMonitor.volumeHealthMonitorInterval | default "60s" }}" + - "--timeout=180s" + env: + - name: ADDRESS + value: /var/run/csi/csi.sock + volumeMounts: + - name: socket-dir + mountPath: /var/run/csi + {{- end }} + {{- end }} +{{- if hasKey .Values "vgsnapshotter" }} +{{- if eq .Values.vgsnapshotter.enabled true }} + - name: vg-snapshotter + image: {{ required "Must provide the vgsnapshotter container image." .Values.vgsnapshotter.image }} + imagePullPolicy: {{ .Values.imagePullPolicy }} + env: + - name: ADDRESS + value: /var/run/csi/csi.sock + volumeMounts: + - name: socket-dir + mountPath: /var/run/csi +{{- end }} +{{- end }} +{{- if hasKey .Values.controller "snapshot" }} +{{- if eq .Values.controller.snapshot.enabled true }} + - name: snapshotter + image: {{ required "Must provide the CSI snapshotter container image. " ( include "csi-vxflexos.snapshotterImage" . ) }} + imagePullPolicy: {{ .Values.imagePullPolicy }} + args: + - "--csi-address=$(ADDRESS)" + - "--timeout=120s" + - "--v=5" + - "--leader-election=true" + env: + - name: ADDRESS + value: /var/run/csi/csi.sock + volumeMounts: + - name: socket-dir + mountPath: /var/run/csi +{{- end }} +{{- end }} +{{- if hasKey .Values.controller "resizer" }} +{{- if eq .Values.controller.resizer.enabled true }} + - name: resizer + image: {{ required "Must provide the CSI resizer container image." ( include "csi-vxflexos.resizerImage" . ) }} + imagePullPolicy: {{ .Values.imagePullPolicy }} + args: + - "--csi-address=$(ADDRESS)" + - "--v=5" + - "--leader-election=true" + env: + - name: ADDRESS + value: /var/run/csi/csi.sock + volumeMounts: + - name: socket-dir + mountPath: /var/run/csi +{{- end }} +{{- end }} +{{- if hasKey .Values "authorization" }} +{{- if eq .Values.authorization.enabled true }} + - name: karavi-authorization-proxy + image: {{ required "Must provide the authorization sidecar container image." .Values.authorization.sidecarProxyImage }} + imagePullPolicy: {{ .Values.imagePullPolicy }} + env: + - name: PROXY_HOST + value: "{{ .Values.authorization.proxyHost }}" + - name: INSECURE + value: "{{ .Values.authorization.skipCertificateValidation }}" + - name: PLUGIN_IDENTIFIER + value: powerflex + - name: ACCESS_TOKEN + valueFrom: + secretKeyRef: + name: proxy-authz-tokens + key: access + - name: REFRESH_TOKEN + valueFrom: + secretKeyRef: + name: proxy-authz-tokens + key: refresh + volumeMounts: + - name: karavi-authorization-config + mountPath: /etc/karavi-authorization/config + - name: proxy-server-root-certificate + mountPath: /etc/karavi-authorization/root-certificates + - name: vxflexos-config-params + mountPath: /etc/karavi-authorization +{{- end }} +{{- end }} + - name: driver + image: "{{ required "Must provide the driver image repository." .Values.images.driverRepository }}/{{ .Chart.Name }}:v{{ .Values.version }}" + imagePullPolicy: {{ .Values.imagePullPolicy }} + command: [ "/csi-vxflexos.sh" ] + args: + - "--leader-election" + - "--array-config=/vxflexos-config/config" + - "--driver-config-params=/vxflexos-config-params/driver-config-params.yaml" + env: + - name: CSI_ENDPOINT + value: /var/run/csi/csi.sock + - name: X_CSI_MODE + value: controller + - name: X_CSI_VXFLEXOS_ENABLESNAPSHOTCGDELETE + value: "{{ required "Enable this to allow deletion of all snaps in CG" .Values.enablesnapshotcgdelete }}" + - name: X_CSI_VXFLEXOS_ENABLELISTVOLUMESNAPSHOT + value: "{{ required "Enable this to have CSI ListVolumes include snapshots" .Values.enablelistvolumesnapshot }}" + - name: SSL_CERT_DIR + value: /certs + {{- if hasKey .Values.controller "healthMonitor" }} + {{- if eq .Values.controller.healthMonitor.enabled true}} + - name: X_CSI_HEALTH_MONITOR_ENABLED + value: "{{ .Values.controller.healthMonitor.enabled }}" + {{- end }} + {{- end }} + volumeMounts: + - name: socket-dir + mountPath: /var/run/csi + - name: vxflexos-config + mountPath: /vxflexos-config + - name: vxflexos-config-params + mountPath: /vxflexos-config-params +{{- if ge (int .Values.certSecretCount) 1 }} + - name: certs + mountPath: /certs + readOnly: true +{{- end}} + volumes: + - name: socket-dir + emptyDir: + - name: vxflexos-config + secret: + secretName: {{ .Release.Name }}-config + - name: vxflexos-config-params + configMap: + name: {{ .Release.Name }}-config-params + {{- if hasKey .Values "authorization" }} + {{- if eq .Values.authorization.enabled true }} + - name: karavi-authorization-config + secret: + secretName: karavi-authorization-config + - name: proxy-server-root-certificate + secret: + secretName: proxy-server-root-certificate + {{ end }} + {{ end }} +{{- if ge (int .Values.certSecretCount) 1 }} + - name: certs + projected: + sources: +{{- range $i, $e := until (int .Values.certSecretCount ) }} + - secret: + name: {{ print $.Release.Name "-certs-" $e }} + items: + - key: cert-{{ $e }} + path: cert-{{ $e }} +{{- end }} +{{- end }} diff --git a/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/templates/csidriver.yaml b/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/templates/csidriver.yaml new file mode 100644 index 000000000..3fd487956 --- /dev/null +++ b/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/templates/csidriver.yaml @@ -0,0 +1,10 @@ +apiVersion: storage.k8s.io/v1 +kind: CSIDriver +metadata: + name: csi-vxflexos.dellemc.com +spec: + attachRequired: true + podInfoOnMount: true + volumeLifecycleModes: + - Persistent + - Ephemeral diff --git a/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/templates/driver-config-params.yaml b/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/templates/driver-config-params.yaml new file mode 100644 index 000000000..0129cac56 --- /dev/null +++ b/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/templates/driver-config-params.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ .Release.Name }}-config-params + namespace: {{ .Release.Namespace }} +data: + driver-config-params.yaml: | + CSI_LOG_LEVEL: "{{ .Values.logLevel }}" + CSI_LOG_FORMAT: "{{ .Values.logFormat }}" + {{ if .Values.podmon.enabled }} + PODMON_CONTROLLER_LOG_LEVEL: "{{ .Values.logLevel }}" + PODMON_CONTROLLER_LOG_FORMAT: "{{ .Values.logFormat }}" + PODMON_NODE_LOG_LEVEL: "{{ .Values.logLevel }}" + PODMON_NODE_LOG_FORMAT: "{{ .Values.logFormat }}" + {{ end }} diff --git a/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/templates/node.yaml b/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/templates/node.yaml new file mode 100644 index 000000000..f34ec9027 --- /dev/null +++ b/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/templates/node.yaml @@ -0,0 +1,391 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ .Release.Name }}-node + namespace: {{ .Release.Namespace }} +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ .Release.Name }}-node +rules: + - apiGroups: [""] + resources: ["persistentvolumes"] + verbs: ["create", "delete", "get", "list", "watch", "update"] + - apiGroups: [""] + resources: ["persistentvolumesclaims"] + verbs: ["get", "list", "watch", "update"] + - apiGroups: [""] + resources: ["events"] + verbs: ["get", "list", "watch", "create", "update", "patch"] + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get", "list", "watch", "update", "patch"] + - apiGroups: ["storage.k8s.io"] + resources: ["volumeattachments"] + verbs: ["get", "list", "watch", "update"] + - apiGroups: ["storage.k8s.io"] + resources: ["storageclasses"] + verbs: ["get", "list", "watch"] + - apiGroups: ["storage.k8s.io"] + resources: ["volumeattachments"] + verbs: ["get", "list", "watch", "update"] + - apiGroups: ["security.openshift.io"] + resourceNames: ["privileged"] + resources: ["securitycontextconstraints"] + verbs: ["use"] +{{- if hasKey .Values "podmon" }} +{{- if eq .Values.podmon.enabled true }} + - apiGroups: [""] + resources: ["pods"] + verbs: ["get", "list", "watch", "update", "delete"] + - apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: ["get", "watch", "list", "delete", "update", "create"] +{{ end }} +{{ end }} +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ .Release.Name }}-node +subjects: + - kind: ServiceAccount + name: {{ .Release.Name }}-node + namespace: {{ .Release.Namespace }} +roleRef: + kind: ClusterRole + name: {{ .Release.Name }}-node + apiGroup: rbac.authorization.k8s.io +--- +kind: DaemonSet +apiVersion: apps/v1 +metadata: + name: {{ .Release.Name }}-node + namespace: {{ .Release.Namespace }} + {{- if hasKey .Values "authorization" }} + {{- if eq .Values.authorization.enabled true }} + annotations: + com.dell.karavi-authorization-proxy: "true" + {{ end }} + {{ end }} +spec: + selector: + matchLabels: + app: {{ .Release.Name }}-node + template: + metadata: + labels: + app: {{ .Release.Name }}-node + spec: + {{- if .Values.node.nodeSelector }} + nodeSelector: + {{- toYaml .Values.node.nodeSelector | nindent 8 }} + {{- end }} + {{- if .Values.node.tolerations }} + tolerations: + {{- toYaml .Values.node.tolerations | nindent 6 }} + {{- end }} + serviceAccount: {{ .Release.Name }}-node + dnsPolicy: ClusterFirstWithHostNet + hostNetwork: true + {{- if and .Values.monitor.enabled .Values.monitor.hostPID }} + hostPID: true + {{- else }} + hostPID: false + {{- end }} + containers: +{{- if hasKey .Values "podmon" }} +{{- if eq .Values.podmon.enabled true }} + - name: podmon + securityContext: + privileged: true + capabilities: + add: ["SYS_ADMIN"] + allowPrivilegeEscalation: true + image: {{ required "Must provide the podmon container image." .Values.podmon.image }} + imagePullPolicy: {{ .Values.imagePullPolicy }} + args: + {{- toYaml .Values.podmon.node.args | nindent 12 }} + env: + - name: KUBE_NODE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName + - name: X_CSI_PRIVATE_MOUNT_DIR + value: "{{ .Values.kubeletConfigDir }}/plugins/vxflexos.emc.dell.com/disks" + - name: MY_NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + - name: MY_POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: MY_POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + volumeMounts: + - name: kubelet-pods + mountPath: {{ .Values.kubeletConfigDir }}/pods + mountPropagation: "Bidirectional" + - name: driver-path + mountPath: {{ .Values.kubeletConfigDir }}/plugins/vxflexos.emc.dell.com + mountPropagation: "Bidirectional" + - name: usr-bin + mountPath: /usr-bin + - name: var-run + mountPath: /var/run + - name: vxflexos-config-params + mountPath: /vxflexos-config-params +{{- end }} +{{- end }} +{{- if hasKey .Values "authorization" }} +{{- if eq .Values.authorization.enabled true }} + - name: karavi-authorization-proxy + image: {{ required "Must provide the authorization sidecar container image." .Values.authorization.sidecarProxyImage }} + imagePullPolicy: {{ .Values.imagePullPolicy }} + env: + - name: PROXY_HOST + value: "{{ .Values.authorization.proxyHost }}" + - name: INSECURE + value: "{{ .Values.authorization.skipCertificateValidation }}" + - name: PLUGIN_IDENTIFIER + value: powerflex + - name: ACCESS_TOKEN + valueFrom: + secretKeyRef: + name: proxy-authz-tokens + key: access + - name: REFRESH_TOKEN + valueFrom: + secretKeyRef: + name: proxy-authz-tokens + key: refresh + volumeMounts: + - name: karavi-authorization-config + mountPath: /etc/karavi-authorization/config + - name: proxy-server-root-certificate + mountPath: /etc/karavi-authorization/root-certificates + - name: vxflexos-config-params + mountPath: /etc/karavi-authorization +{{ end }} +{{ end }} + - name: driver + securityContext: + privileged: true + allowPrivilegeEscalation: true + capabilities: + add: ["SYS_ADMIN"] + image: "{{ required "Must provide the driver image repository." .Values.images.driverRepository }}/{{ .Chart.Name }}:v{{ .Values.version }}" + imagePullPolicy: {{ .Values.imagePullPolicy }} + command: [ "/csi-vxflexos.sh" ] + args: + - "--array-config=/vxflexos-config/config" + - "--driver-config-params=/vxflexos-config-params/driver-config-params.yaml" + env: + - name: CSI_ENDPOINT + value: unix://{{ .Values.kubeletConfigDir }}/plugins/vxflexos.emc.dell.com/csi_sock + - name: X_CSI_MODE + value: node + - name: X_CSI_PRIVATE_MOUNT_DIR + value: "{{ .Values.kubeletConfigDir }}/plugins/vxflexos.emc.dell.com/disks" + - name: X_CSI_ALLOW_RWO_MULTI_POD_ACCESS + value: "{{ required "Must provide a true/false string to allow RWO multi pod access." .Values.allowRWOMultiPodAccess }}" + - name: SSL_CERT_DIR + value: /certs + {{- if hasKey .Values.node "healthMonitor" }} + - name: X_CSI_HEALTH_MONITOR_ENABLED + value: "{{ .Values.node.healthMonitor.enabled }}" + {{- end }} + volumeMounts: + - name: driver-path + mountPath: {{ .Values.kubeletConfigDir }}/plugins/vxflexos.emc.dell.com + - name: volumedevices-path + mountPath: {{ .Values.kubeletConfigDir }}/plugins/kubernetes.io/csi/volumeDevices + mountPropagation: "Bidirectional" + - name: pods-path + mountPath: {{ .Values.kubeletConfigDir }}/pods + mountPropagation: "Bidirectional" + - name: dev + mountPath: /dev + - name: vxflexos-config + mountPath: /vxflexos-config + - name: vxflexos-config-params + mountPath: /vxflexos-config-params +{{- if ge (int .Values.certSecretCount) 1 }} + - name: certs + mountPath: /certs + readOnly: true +{{- end}} + - name: registrar + image: {{ required "Must provide the CSI registrar container image." ( include "csi-vxflexos.registrarImage" . ) }} + imagePullPolicy: {{ .Values.imagePullPolicy }} + args: + - "--v=5" + - "--csi-address=$(ADDRESS)" + - --kubelet-registration-path={{ .Values.kubeletConfigDir }}/plugins/vxflexos.emc.dell.com/csi_sock + env: + - name: ADDRESS + value: /csi/csi_sock + - name: KUBE_NODE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName + volumeMounts: + - name: registration-dir + mountPath: /registration + - name: driver-path + mountPath: /csi + {{- if eq .Values.monitor.enabled true }} + - name: sdc-monitor + securityContext: + privileged: true + image: {{ required "Must provide the PowerFlex SDC container image." .Values.images.powerflexSdc }} + imagePullPolicy: {{ .Values.imagePullPolicy }} + env: + {{ if eq .Values.monitor.hostPID true }} + - name: HOST_PID + value: "1" + {{ else }} + - name: HOST_PID + value: "0" + {{ end }} + - name: HOST_NET + value: "1" + - name: NODENAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + - name: MDM + valueFrom: + secretKeyRef: + name: {{ .Release.Name }}-config + key: MDM + - name: MODE + value: "monitoring" + volumeMounts: + - name: dev + mountPath: /dev + - name: os-release + mountPath: /host-os-release + - name: sdc-storage + mountPath: /storage + - name: udev-d + mountPath: /rules.d + {{- end }} + initContainers: + - name: sdc + securityContext: + privileged: true + image: {{ required "Must provide the PowerFlex SDC container image." .Values.images.powerflexSdc }} + imagePullPolicy: {{ .Values.imagePullPolicy }} + env: + - name: NODENAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + - name: MODE + value: "config" + - name: MDM + valueFrom: + secretKeyRef: + name: {{ .Release.Name }}-config + key: MDM + - name: HOST_DRV_CFG_PATH + value: /opt/emc/scaleio/sdc/bin + volumeMounts: + - name: dev + mountPath: /dev + - name: os-release + mountPath: /host-os-release + - name: sdc-storage + mountPath: /storage + - name: udev-d + mountPath: /rules.d + - name: scaleio-path-opt + mountPath: /host_drv_cfg_path + volumes: + - name: registration-dir + hostPath: + path: {{ .Values.kubeletConfigDir }}/plugins_registry/ + type: DirectoryOrCreate + - name: driver-path + hostPath: + path: {{ .Values.kubeletConfigDir }}/plugins/vxflexos.emc.dell.com + type: DirectoryOrCreate + - name: volumedevices-path + hostPath: + path: {{ .Values.kubeletConfigDir }}/plugins/kubernetes.io/csi/volumeDevices + type: DirectoryOrCreate + - name: pods-path + hostPath: + path: {{ .Values.kubeletConfigDir }}/pods + type: Directory + - name: dev + hostPath: + path: /dev + type: Directory + - name: scaleio-path-opt + hostPath: + path: /opt/emc/scaleio/sdc/bin + type: DirectoryOrCreate + - name: sdc-storage + hostPath: + path: /var/emc-scaleio + type: DirectoryOrCreate + - name: udev-d + hostPath: + path: /etc/udev/rules.d + type: Directory + - name: os-release + hostPath: + path: /etc/os-release + type: File + - name: vxflexos-config + secret: + secretName: {{ .Release.Name }}-config + - name: vxflexos-config-params + configMap: + name: {{ .Release.Name }}-config-params +{{- if ge (int .Values.certSecretCount) 1 }} + - name: certs + projected: + sources: +{{- range $i, $e := until (int .Values.certSecretCount ) }} + - secret: + name: {{ print $.Release.Name "-certs-" $e }} + items: + - key: cert-{{ $e }} + path: cert-{{ $e }} +{{- end }} +{{- end }} +{{- if hasKey .Values "authorization" }} +{{- if eq .Values.authorization.enabled true }} + - name: karavi-authorization-config + secret: + secretName: karavi-authorization-config + - name: proxy-server-root-certificate + secret: + secretName: proxy-server-root-certificate +{{ end }} +{{ end }} +{{- if hasKey .Values "podmon" }} +{{- if eq .Values.podmon.enabled true }} + - name: usr-bin + hostPath: + path: /usr/bin + type: Directory + - name: kubelet-pods + hostPath: + path: /var/lib/kubelet/pods + type: Directory + - name: var-run + hostPath: + path: /var/run + type: Directory +{{- end }} +{{- end }} diff --git a/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/values.yaml b/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/values.yaml new file mode 100644 index 000000000..503d7f9f9 --- /dev/null +++ b/charts/dell-csi-powerflex/csi-vxflexos/2.2.0/values.yaml @@ -0,0 +1,229 @@ +--- +# k8s/driver attributes + +# "version" is used to verify the values file matches driver version +# Not recommend to change +version: 2.2.0 + +images: + # "driver" defines the container image, used for the driver container. + driverRepository: dellemc + + # "powerflexSdc" defines the SDC image for init container. + powerflexSdc: dellemc/sdc:3.6 + + +# Represents number of certificate secrets, which user is going to create for ssl authentication. (vxflexos-cert-0..vxflexos-cert-n) +# If user does not use certificate, set to 0 +certSecretCount: 0 + +# CSI driver log level +# Allowed values: "error", "warn"/"warning", "info", "debug" +# Default value: "debug" +logLevel: "debug" + +# CSI driver log format +# Allowed values: "TEXT" or "JSON" +# Default value: "TEXT" +logFormat: "TEXT" + +# Specify kubelet config dir path. +# Ensure that the config.yaml file is present at this path. +# Default value: None +kubeletConfigDir: /var/lib/kubelet + +# "defaultFsType" is used to set the default FS type which will be used +# for mount volumes if FsType is not specified in the storage class +# Allowed values: ext4, xfs +# Default value: none +defaultFsType: ext4 + +# imagePullPolicy: Policy to determine if the image should be pulled prior to starting the container. +# Allowed values: +# Always: Always pull the image. +# IfNotPresent: Only pull the image if it does not already exist on the node. +# Never: Never pull the image. +# Default value: None +imagePullPolicy: IfNotPresent + +# "enablesnapshotcgdelete"- a boolean that, when enabled, will delete all snapshots in a consistency group +# everytime a snap in the group is deleted +# Allowed values: true, false +# Default value: none +enablesnapshotcgdelete: "false" + +# "enablelistvolumesnapshot" - a boolean that, when enabled, will allow list volume operation to include snapshots (since creating a volume +# from a snap actually results in a new snap) +# It is recommend this be false unless instructed otherwise. +# Allowed values: true, false +# Default value: none +enablelistvolumesnapshot: "false" + +# Setting allowRWOMultiPodAccess to "true" will allow multiple pods on the same node +# to access the same RWO volume. This behavior conflicts with the CSI specification version 1.3 +# NodePublishVolume descrition that requires an error to be returned in this case. +# However some other CSI drivers support this behavior and some customers desire this behavior. +# Kubernetes could make a change at their discretion that would preclude our ability to support this option. +# Customers use this option at their own risk. +# You should leave this set as "false" unless instructed to change it by Dell support. +# Allowed values: true, false +# Default value: "false" +allowRWOMultiPodAccess: "false" + +# "controller" allows to configure controller specific parameters +controller: + + healthMonitor: + # enabled: Enable/Disable health monitor of CSI volumes + # Allowed values: + # true: enable checking of health condition of CSI volumes + # false: disable checking of health condition of CSI volumes + # Default value: None + enabled: false + + # healthMonitorInterval: Interval of monitoring volume health condition + # Allowed values: Number followed by unit (s,m,h) + # Examples: 60s, 5m, 1h + # Default value: 60s + volumeHealthMonitorInterval: 60s + + # volumeNamePrefix- defines a string prepended to each volume created by the CSI driver. + # Default value: none + # Examples: "k8s", "app1" + volumeNamePrefix: k8s + + # "controllerCount" defines the number of VxFlex controller pods to deploy + # Allowed values: n, where n > 0 + # Default value: none + controllerCount: 2 + + snapshot: + # enabled: Enable/Disable volume snapshot feature + # Allowed values: + # true: enable volume snapshot feature(install snapshotter sidecar) + # false: disable volume snapshot feature(do not install snapshotter sidecar) + # Default value: None + enabled: true + + resizer: + # enabled: Enable/Disable volume expansion feature + # Allowed values: + # true: enable volume expansion feature(install resizer sidecar) + # false: disable volume snapshot feature(do not install resizer sidecar) + # Default value: None + enabled: true + + #"controller.nodeSelector" defines what nodes would be selected for pods of controller deployment + # Leave as blank to use all nodes + # Allowed values: map of key-value pairs + # Default value: None + # Examples: + # node-role.kubernetes.io/master: "" + nodeSelector: + # node-role.kubernetes.io/master: "" + + # "controller.tolerations" defines tolerations that would be applied to controller deployment + # Leave as blank to install controller on worker nodes + # Default value: None + tolerations: + # - key: "node-role.kubernetes.io/master" + # operator: "Exists" + # effect: "NoSchedule" + +# "node" allows to configure node specific parameters +node: + healthMonitor: + # enabled: Enable/Disable health monitor of CSI volumes- volume usage, volume condition + # Allowed values: + # true: enable checking of health condition of CSI volumes + # false: disable checking of health condition of CSI volumes + # Default value: None + enabled: false + + # "node.nodeSelector" defines what nodes would be selected for pods of node daemonset + # Leave as blank to use all nodes + # Allowed values: map of key-value pairs + # Default value: None + nodeSelector: + # node-role.kubernetes.io/master: "" + + # "node.tolerations" defines tolerations that would be applied to node daemonset + # Leave as blank to install node driver only on worker nodes + # Default value: None + tolerations: + # - key: "node-role.kubernetes.io/master" + # operator: "Exists" + # effect: "NoSchedule" + +# monitoring pod details +# These options control the running of the monitoring container +# This container gather diagnostic information in case of failure +monitor: + # enabled allows the usage of the monitoring pod to be disabled + # Allowed values: true, false + # Default value: "false" + enabled: false + + # hostNetwork determines if the monitor pod should run on the host network or not + # Allowed values: true, false + # Default value: "false" + hostNetwork: true + + # hostPID determines if the monitor pod should run in the host namespace + # Allowed values: true, false + # Default value: "false" + hostPID: true + + +# CSM module attributes + +# volume group snapshotter(vgsnapshotter) details +# These options control the running of the vgsnapshotter container +vgsnapshotter: + enabled: false + image: dellemc/csi-volumegroup-snapshotter:v1.0.0 + +# Podmon is an optional feature under development and tech preview. +# Enable this feature only after contact support for additional information +podmon: + enabled: false + image: dellemc/podmon:v1.1.0 + #controller: + # args: + # - "--csisock=unix:/var/run/csi/csi.sock" + # - "--labelvalue=csi-vxflexos" + # - "--mode=controller" + # - "--skipArrayConnectionValidation=false" + # - "--driver-config-params=/vxflexos-config-params/driver-config-params.yaml" + #node: + # args: + # - "--csisock=unix:/var/lib/kubelet/plugins/vxflexos.emc.dell.com/csi_sock" + # - "--labelvalue=csi-vxflexos" + # - "--mode=node" + # - "--leaderelection=false" + # - "--driver-config-params=/vxflexos-config-params/driver-config-params.yaml" + +# CSM module attributes +# authorization: enable csm-authorization for RBAC +# Deploy and configure authorization before installing driver +# Allowed values: +# "true" - authorization is enabled +# "false" - authorization is disabled +# Default value: "false" +authorization: + enabled: false + + # sidecarProxyImage: the container image used for the csm-authorization-sidecar. + # Default value: dellemc/csm-authorization-sidecar:v1.2.0 + sidecarProxyImage: dellemc/csm-authorization-sidecar:v1.2.0 + + # proxyHost: hostname of the csm-authorization server + # Default value: None + proxyHost: + + # skipCertificateValidation: certificate validation of the csm-authorization server + # Allowed Values: + # "true" - TLS certificate verification will be skipped + # "false" - TLS certificate will be verified + # Default value: "true" + skipCertificateValidation: true diff --git a/index.yaml b/index.yaml index 3519deec0..fff980581 100755 --- a/index.yaml +++ b/index.yaml @@ -869,6 +869,31 @@ entries: - assets/kubecost/cost-analyzer-1.70.000.tgz version: 1.70.000 csi-vxflexos: + - annotations: + catalog.cattle.io/certified: partner + catalog.cattle.io/display-name: Dell CSI PowerFlex + catalog.cattle.io/release-name: vxflexos + apiVersion: v2 + appVersion: 2.2.0 + created: "2022-05-20T10:51:15.893808318-04:00" + description: | + PowerFlex CSI (Container Storage Interface) driver Kubernetes + integration. This chart includes everything required to provision via CSI as + well as a StorageClass. + digest: 59c32b320f31ac571bac47783f0c23879cd3c36d26a1c57e59a7698e3ab544f5 + icon: https://partner-charts.rancher.io/assets/logos/dell.png + keywords: + - csi + - storage + kubeVersion: 1.21-0 - 1.23-0 + maintainers: + - name: DellEMC + name: csi-vxflexos + sources: + - https://github.com/dell/csi-powerflex + urls: + - assets/dell-csi-powerflex/csi-vxflexos-2.2.0.tgz + version: 2.2.0 - annotations: catalog.cattle.io/certified: partner catalog.cattle.io/display-name: Dell CSI PowerFlex