diff --git a/charts/nutanix-csi-storage/Chart.yaml b/charts/nutanix-csi-storage/Chart.yaml index d0314df..6426a3e 100644 --- a/charts/nutanix-csi-storage/Chart.yaml +++ b/charts/nutanix-csi-storage/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v1 name: nutanix-csi-storage -version: 2.6.6 +version: 3.0.0-rc6 kubeVersion: ">= 1.20.0-0" description: Nutanix Container Storage Interface (CSI) Driver home: https://github.com/nutanix/helm @@ -8,7 +8,7 @@ maintainers: - name: nutanix-cloud-native-bot email: cloudnative@nutanix.com icon: https://avatars2.githubusercontent.com/u/6165865?s=200&v=4 -appVersion: "2.6.6" +appVersion: "3.0.0-rc6" keywords: - Nutanix - Storage @@ -23,8 +23,7 @@ annotations: artifacthub.io/displayName: "Nutanix CSI Storage" artifacthub.io/containsSecurityUpdates: "true" artifacthub.io/changes: | - - Update Nutanix CSI driver to v2.6.6 - - Update CSI Sidecar version + - Update Nutanix CSI Driver to 3.0.0 artifacthub.io/links: | - name: Nutanix CSI Driver documentation url: https://portal.nutanix.com/page/documents/details?targetId=CSI-Volume-Driver-v2_6:CSI-Volume-Driver-v2_6 diff --git a/charts/nutanix-csi-storage/README.md b/charts/nutanix-csi-storage/README.md index 874c34a..accac5f 100644 --- a/charts/nutanix-csi-storage/README.md +++ b/charts/nutanix-csi-storage/README.md @@ -25,7 +25,7 @@ https://portal.nutanix.com/page/documents/details?targetId=CSI-Volume-Driver-v2_ ## Features list -- Nutanix CSI Driver v2.6.6 +- Nutanix CSI Driver v3.0.0 - Nutanix Volumes support - Nutanix Files support - Volume clone diff --git a/charts/nutanix-csi-storage/templates/NOTES.txt b/charts/nutanix-csi-storage/templates/NOTES.txt index 3921d16..ca2ca75 100644 --- a/charts/nutanix-csi-storage/templates/NOTES.txt +++ b/charts/nutanix-csi-storage/templates/NOTES.txt @@ -1,3 +1,4 @@ Driver name: {{ include "nutanix-csi-storage.drivername" . }} -Nutanix CSI provider was deployed in namespace {{ .Release.Namespace }} +Nutanix CSI provider was deployed in namespace {{ .Release.Namespace }}. Check it's status by running: +kubectl -n {{ .Release.Namespace }} get pods | grep 'nutanix-csi' diff --git a/charts/nutanix-csi-storage/templates/csi-driver.yaml b/charts/nutanix-csi-storage/templates/csi-driver.yaml index 980b44d..6165377 100644 --- a/charts/nutanix-csi-storage/templates/csi-driver.yaml +++ b/charts/nutanix-csi-storage/templates/csi-driver.yaml @@ -3,5 +3,5 @@ kind: CSIDriver metadata: name: {{ include "nutanix-csi-storage.drivername" . }} spec: - attachRequired: false - podInfoOnMount: true \ No newline at end of file + attachRequired: true + podInfoOnMount: true diff --git a/charts/nutanix-csi-storage/templates/ntnx-csi-controller-deployment.yaml b/charts/nutanix-csi-storage/templates/ntnx-csi-controller-deployment.yaml index 9b8a43e..87f0807 100644 --- a/charts/nutanix-csi-storage/templates/ntnx-csi-controller-deployment.yaml +++ b/charts/nutanix-csi-storage/templates/ntnx-csi-controller-deployment.yaml @@ -19,6 +19,8 @@ spec: app: nutanix-csi-controller template: metadata: + annotations: + kubectl.kubernetes.io/default-container: nutanix-csi-plugin labels: app: nutanix-csi-controller spec: @@ -43,19 +45,46 @@ spec: imagePullPolicy: {{ .Values.imagePullPolicy }} args: - --csi-address=$(ADDRESS) - - --timeout=60s + - --timeout=300s - --worker-threads=16 # This adds PV/PVC metadata to create volume requests - --extra-create-metadata=true - --default-fstype=ext4 # This is used to collect CSI operation metrics - --http-endpoint=:9809 + - --feature-gates=Topology=true + - --leader-election=true + - --v=2 + env: + - name: ADDRESS + value: /var/lib/csi/sockets/pluginproxy/csi.sock + resources: + limits: + cpu: 100m + memory: 200Mi + requests: + cpu: 100m + memory: 200Mi + volumeMounts: + - name: socket-dir + mountPath: /var/lib/csi/sockets/pluginproxy/ + - name: csi-attacher + image: {{ .Values.sidecars.attacher.image }} + imagePullPolicy: {{ .Values.imagePullPolicy }} + args: + - --csi-address=$(ADDRESS) + - --timeout=300s + - --worker-threads=16 + - --http-endpoint=:9810 - --v=2 - --leader-election=true env: - name: ADDRESS value: /var/lib/csi/sockets/pluginproxy/csi.sock resources: + limits: + cpu: 100m + memory: 200Mi requests: cpu: 100m memory: 200Mi @@ -68,21 +97,19 @@ spec: args: - --v=2 - --csi-address=$(ADDRESS) - - --timeout=60s + - --timeout=300s - --leader-election=true # NTNX CSI dirver supports online volume expansion. - --handle-volume-inuse-error=false - - --http-endpoint=:9810 + - --http-endpoint=:9811 env: - name: ADDRESS value: /var/lib/csi/sockets/pluginproxy/csi.sock - resources: - requests: - cpu: 5m - memory: 30Mi volumeMounts: - name: socket-dir mountPath: /var/lib/csi/sockets/pluginproxy/ + # Checks whether to deploy snapshotter sidecar. + {{- if eq .Values.sidecars.snapshotter.deploy true }} - name: csi-snapshotter {{- if .Capabilities.APIVersions.Has "snapshot.storage.k8s.io/v1" }} image: {{ .Values.sidecars.snapshotter.image }} @@ -95,6 +122,7 @@ spec: - --leader-election=true - --logtostderr=true - --timeout=300s + - --http-endpoint=:9812 env: - name: ADDRESS value: /csi/csi.sock @@ -105,6 +133,7 @@ spec: volumeMounts: - name: socket-dir mountPath: /csi + {{- end }} - name: nutanix-csi-plugin image: {{ .Values.controller.image }} imagePullPolicy: {{ .Values.imagePullPolicy }} @@ -115,6 +144,9 @@ spec: - --endpoint=$(CSI_ENDPOINT) - --nodeid=$(NODE_ID) - --drivername={{ include "nutanix-csi-storage.drivername" . }} + - --use-pc=true + # - --capacity-bytes-threshold=50.0 + - --enable-volume-health-monitoring=true env: - name: CSI_ENDPOINT value: unix:///var/lib/csi/sockets/pluginproxy/csi.sock @@ -122,16 +154,28 @@ spec: valueFrom: fieldRef: fieldPath: spec.nodeName + - name: CSI_SECRET_DIR + value: {{ .Values.csiSecretDir }} + - name: CSI_CATEGORY_CONFIGMAP_NAME + value: {{ .Values.csiCategoryConfigmapName }} + - name: CSI_CATEGORY_CONFIGMAP_NAMESPACE + value: {{ .Values.csiCategoryConfigmapNamespace }} resources: + limits: + cpu: {{ .Values.controller.cpu }} + memory: {{ .Values.controller.memory }} requests: - cpu: 100m - memory: 200Mi + cpu: {{ .Values.controller.cpu }} + memory: {{ .Values.controller.memory }} volumeMounts: - mountPath: /var/lib/csi/sockets/pluginproxy/ name: socket-dir # This is needed for static NFS volume feature. - mountPath: /host name: root-dir + - mountPath: {{ .Values.csiSecretDir }} + name: pc-secret + readOnly: true ports: - containerPort: 9807 name: http-endpoint @@ -140,10 +184,10 @@ spec: httpGet: path: /healthz port: http-endpoint - initialDelaySeconds: 10 - timeoutSeconds: 3 - periodSeconds: 2 - failureThreshold: 3 + initialDelaySeconds: {{ .Values.liveness.controller.initialDelaySeconds }} + timeoutSeconds: {{ .Values.liveness.controller.timeoutSeconds }} + periodSeconds: {{ .Values.liveness.controller.periodSeconds }} + failureThreshold: {{ .Values.liveness.controller.failureThreshold }} - name: liveness-probe resources: requests: @@ -157,6 +201,21 @@ spec: args: - --csi-address=/csi/csi.sock - --http-endpoint=:9807 + - args: + - "--v=5" + - "--csi-address=$(ADDRESS)" + - "--leader-election=false" + - "--http-endpoint=:9813" + - "--monitor-interval=1m0s" + env: + - name: ADDRESS + value: unix:///var/lib/csi/sockets/pluginproxy/csi.sock + image: {{ .Values.sidecars.healthmonitor.image }} + imagePullPolicy: {{ .Values.imagePullPolicy }} + name: csi-external-health-monitor-controller + volumeMounts: + - mountPath: /var/lib/csi/sockets/pluginproxy/ + name: socket-dir priorityClassName: system-cluster-critical {{- with (.Values.controller.nodeSelector | default .Values.nodeSelector) }} nodeSelector: @@ -173,3 +232,6 @@ spec: path: / type: Directory name: root-dir + - name: pc-secret + secret: + secretName: {{ .Values.pcSecretName }} diff --git a/charts/nutanix-csi-storage/templates/ntnx-csi-init-configmap.yaml b/charts/nutanix-csi-storage/templates/ntnx-csi-init-configmap.yaml new file mode 100644 index 0000000..9150563 --- /dev/null +++ b/charts/nutanix-csi-storage/templates/ntnx-csi-init-configmap.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: ntnx-init-configmap + namespace: {{ .Release.Namespace }} +data: + supportedPCVersions: {{ .Values.supportedPCVersions }} + kubernetesClusterDeploymentType: {{ .Values.kubernetesClusterDeploymentType }} diff --git a/charts/nutanix-csi-storage/templates/ntnx-csi-node-ds.yaml b/charts/nutanix-csi-storage/templates/ntnx-csi-node-ds.yaml index 257c15c..a46154a 100644 --- a/charts/nutanix-csi-storage/templates/ntnx-csi-node-ds.yaml +++ b/charts/nutanix-csi-storage/templates/ntnx-csi-node-ds.yaml @@ -14,9 +14,11 @@ spec: updateStrategy: type: "RollingUpdate" rollingUpdate: - maxUnavailable: 10% + maxUnavailable: "10%" template: metadata: + annotations: + kubectl.kubernetes.io/default-container: nutanix-csi-node labels: app: nutanix-csi-node spec: @@ -58,6 +60,8 @@ spec: - "--endpoint=$(CSI_ENDPOINT)" - "--nodeid=$(NODE_ID)" - "--drivername={{ include "nutanix-csi-storage.drivername" . }}" + - "--use-pc=true" + # - --volume-capacity-threshold=50.0 env: - name: CSI_ENDPOINT value: unix:///csi/csi.sock @@ -69,11 +73,23 @@ spec: valueFrom: fieldRef: fieldPath: status.hostIP + - name: CSI_SECRET_DIR + value: {{ .Values.csiSecretDir }} + - name: CSI_CATEGORY_CONFIGMAP_NAME + value: {{ .Values.csiCategoryConfigmapName }} + - name: CSI_CATEGORY_CONFIGMAP_NAMESPACE + value: {{ .Values.csiCategoryConfigmapNamespace }} resources: + limits: + cpu: {{ .Values.node.cpu }} + memory: {{ .Values.node.memory }} requests: - cpu: 100m - memory: 200Mi + cpu: {{ .Values.node.cpu }} + memory: {{ .Values.node.memory }} volumeMounts: + - mountPath: {{ .Values.csiSecretDir }} + name: pc-secret + readOnly: true - name: plugin-dir mountPath: /csi - name: pods-mount-dir @@ -97,10 +113,10 @@ spec: httpGet: path: /healthz port: http-endpoint - initialDelaySeconds: 10 - timeoutSeconds: 3 - periodSeconds: 2 - failureThreshold: 3 + initialDelaySeconds: {{ .Values.liveness.node.initialDelaySeconds }} + timeoutSeconds: {{ .Values.liveness.node.timeoutSeconds }} + periodSeconds: {{ .Values.liveness.node.periodSeconds }} + failureThreshold: {{ .Values.liveness.node.failureThreshold }} - name: liveness-probe resources: requests: @@ -151,3 +167,6 @@ spec: hostPath: path: / type: Directory + - name: pc-secret + secret: + secretName: {{ .Values.pcSecretName }} diff --git a/charts/nutanix-csi-storage/templates/ntnx-csi-rbac.yaml b/charts/nutanix-csi-storage/templates/ntnx-csi-rbac.yaml index 1f0bfab..1862907 100644 --- a/charts/nutanix-csi-storage/templates/ntnx-csi-rbac.yaml +++ b/charts/nutanix-csi-storage/templates/ntnx-csi-rbac.yaml @@ -22,7 +22,19 @@ rules: verbs: ["get", "list", "watch"] - apiGroups: [""] resources: ["nodes"] - verbs: ["get"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["namespaces"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["pods"] + verbs: ["get", "list", "watch"] - apiGroups: [""] resources: ["persistentvolumes"] verbs: ["get", "list", "watch", "create", "delete", "update", "patch"] @@ -35,9 +47,15 @@ rules: - apiGroups: ["storage.k8s.io"] resources: ["storageclasses"] verbs: ["get", "list", "watch"] + - apiGroups: ["storage.k8s.io"] + resources: ["volumeattachments"] + verbs: ["get", "list", "watch", "update", "patch"] + - apiGroups: ["storage.k8s.io"] + resources: ["volumeattachments/status"] + verbs: ["patch"] - apiGroups: [""] resources: ["events"] - verbs: ["list", "watch", "create", "update", "patch"] + verbs: ["get", "list", "watch", "create", "update", "patch"] - apiGroups: ["snapshot.storage.k8s.io"] resources: ["volumesnapshotclasses"] verbs: ["get", "list", "watch"] @@ -101,6 +119,9 @@ rules: - apiGroups: ["storage.k8s.io"] resources: ["volumeattachments"] verbs: ["get", "list", "watch", "update"] + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get", "list", "watch"] --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 diff --git a/charts/nutanix-csi-storage/templates/ntnx-sc.yaml b/charts/nutanix-csi-storage/templates/ntnx-sc.yaml index 7cd6678..6ee2538 100644 --- a/charts/nutanix-csi-storage/templates/ntnx-sc.yaml +++ b/charts/nutanix-csi-storage/templates/ntnx-sc.yaml @@ -1,7 +1,7 @@ {{- if eq .Values.volumeClass true }} ---- -{{- $storageContainer := .Values.storageContainer | required "storageContainer is required." -}} +{{- $storageContainer := .Values.storageContainer | required "storageContainer is required." -}} +--- kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: @@ -20,12 +20,6 @@ metadata: provisioner: {{ include "nutanix-csi-storage.drivername" . }} parameters: storageType: NutanixVolumes - csi.storage.k8s.io/provisioner-secret-name: {{ .Values.secretName }} - csi.storage.k8s.io/provisioner-secret-namespace: {{ .Release.Namespace }} - csi.storage.k8s.io/node-publish-secret-name: {{ .Values.secretName }} - csi.storage.k8s.io/node-publish-secret-namespace: {{ .Release.Namespace }} - csi.storage.k8s.io/controller-expand-secret-name: {{ .Values.secretName }} - csi.storage.k8s.io/controller-expand-secret-namespace: {{ .Release.Namespace }} storageContainer: {{ .Values.storageContainer }} csi.storage.k8s.io/fstype: {{ .Values.fsType }} isSegmentedIscsiNetwork: {{ quote .Values.networkSegmentation }} @@ -35,8 +29,12 @@ parameters: numLVMDisks: {{ quote .Values.lvmDisks }} {{- end }} allowVolumeExpansion: true +volumeBindingMode: WaitForFirstConsumer reclaimPolicy: {{ .Values.volumeClassRetention }} +{{- end }} + --- +{{- if eq .Values.createVolumeSnapshotClass true}} {{- if .Capabilities.APIVersions.Has "snapshot.storage.k8s.io/v1" }} apiVersion: snapshot.storage.k8s.io/v1 {{- else }} @@ -45,27 +43,17 @@ apiVersion: snapshot.storage.k8s.io/v1beta1 kind: VolumeSnapshotClass metadata: name: {{ .Values.volumeSnapshotClassName }} - annotations: - {{- with .Values.volumeSnapshotClassAnnotations }} - {{ toYaml . | nindent 4 }} - {{- end }} - labels: - {{- with .Values.volumeSnapshotClassLabels }} - {{ toYaml . | nindent 4 }} - {{- end }} driver: {{ include "nutanix-csi-storage.drivername" . }} parameters: storageType: NutanixVolumes - csi.storage.k8s.io/snapshotter-secret-name: {{ .Values.secretName }} - csi.storage.k8s.io/snapshotter-secret-namespace: {{ .Release.Namespace }} -deletionPolicy: Delete +deletionPolicy: {{ .Values.volumeSnapshotClassRetention}} {{- end }} {{- if eq .Values.fileClass true }} ---- + {{- $fileHost := .Values.fileHost | required "fileHost is required." -}} {{- $filePath := .Values.filePath | required "filePath is required." -}} - +--- kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: @@ -83,16 +71,17 @@ metadata: {{- end }} provisioner: {{ include "nutanix-csi-storage.drivername" . }} parameters: - storageType: NutanixFiles - nfsServer: {{ .Values.fileHost }} - nfsPath: {{ .Values.filePath }} + storageType: NutanixFiles + nfsServer: {{ .Values.fileHost }} + nfsPath: {{ .Values.filePath }} +allowVolumeExpansion: true reclaimPolicy: {{ .Values.fileClassRetention }} {{- end }} {{- if eq .Values.dynamicFileClass true }} ---- -{{- $fileServerName := .Values.fileServerName | required "fileServerName is required." -}} +{{- $fileServerName := .Values.fileServerName | required "fileServerName is required." -}} +--- kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: @@ -110,17 +99,17 @@ metadata: {{- end }} provisioner: {{ include "nutanix-csi-storage.drivername" . }} parameters: - storageType: NutanixFiles - dynamicProv: ENABLED - squashType: {{ .Values.dynamicFileSquashType }} - nfsServerName: {{ .Values.fileServerName }} - csi.storage.k8s.io/provisioner-secret-name: {{ .Values.secretName }} - csi.storage.k8s.io/provisioner-secret-namespace: {{ .Release.Namespace }} - csi.storage.k8s.io/node-publish-secret-name: {{ .Values.secretName }} - csi.storage.k8s.io/node-publish-secret-namespace: {{ .Release.Namespace }} - csi.storage.k8s.io/controller-expand-secret-name: {{ .Values.secretName }} - csi.storage.k8s.io/controller-expand-secret-namespace: {{ .Release.Namespace }} - description: {{ quote (.Values.dynamicFileClassDescription | default .Values.dynamicFileClassName) }} + storageType: NutanixFiles + dynamicProv: ENABLED + squashType: {{ .Values.dynamicFileSquashType | default "none" }} + nfsServerName: {{ .Values.fileServerName }} + csi.storage.k8s.io/provisioner-secret-name: {{ .Values.peSecretName }} + csi.storage.k8s.io/provisioner-secret-namespace: {{ .Release.Namespace }} + csi.storage.k8s.io/node-publish-secret-name: {{ .Values.peSecretName }} + csi.storage.k8s.io/node-publish-secret-namespace: {{ .Release.Namespace }} + csi.storage.k8s.io/controller-expand-secret-name: {{ .Values.peSecretName }} + csi.storage.k8s.io/controller-expand-secret-namespace: {{ .Release.Namespace }} + description: {{ quote (.Values.dynamicFileClassDescription | default .Values.dynamicFileClassName) }} allowVolumeExpansion: true reclaimPolicy: {{ .Values.dynamicFileClassRetention }} -{{- end }} \ No newline at end of file +{{- end }} diff --git a/charts/nutanix-csi-storage/templates/ntnx-secret.yaml b/charts/nutanix-csi-storage/templates/ntnx-secret.yaml index c9f95bd..a1ad143 100644 --- a/charts/nutanix-csi-storage/templates/ntnx-secret.yaml +++ b/charts/nutanix-csi-storage/templates/ntnx-secret.yaml @@ -8,11 +8,23 @@ apiVersion: v1 kind: Secret metadata: - name: {{ .Values.secretName }} + name: {{ .Values.peSecretName }} namespace: {{ .Release.Namespace }} data: # base64 encoded prism-ip:prism-port:admin:password. # E.g.: echo -n "10.83.0.91:9440:admin:mypassword" | base64 - key: {{ printf "%s:%v:%s:%s" .Values.prismEndPoint .Values.prismPort .Values.username .Values.password | b64enc}} + key: {{ printf "%s:9440:%s:%s" .Values.prismEndPoint .Values.username .Values.password | b64enc}} +{{- end }} +{{- end }} +--- +{{- if eq .Values.createPrismCentralSecret true }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ .Values.pcSecretName }} + namespace: {{ .Release.Namespace }} +data: + # base64 encoded prism-ip:prism-port:admin:password. + # E.g.: echo -n "10.83.0.91:9440:admin:mypassword" | base64 + key: {{ printf "%s:9440:%s:%s" .Values.prismCentralEndPoint .Values.pcUsername .Values.pcPassword | b64enc}} {{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/nutanix-csi-storage/templates/service-prometheus-csi.yaml b/charts/nutanix-csi-storage/templates/service-prometheus-csi.yaml index 261bb9f..ae49f0b 100644 --- a/charts/nutanix-csi-storage/templates/service-prometheus-csi.yaml +++ b/charts/nutanix-csi-storage/templates/service-prometheus-csi.yaml @@ -19,10 +19,18 @@ spec: port: 9809 targetPort: 9809 protocol: TCP - - name: resizer + - name: attacher port: 9810 targetPort: 9810 protocol: TCP + - name: resizer + port: 9811 + targetPort: 9811 + protocol: TCP + - name: snapshotter + port: 9812 + targetPort: 9812 + protocol: TCP {{- if eq .Values.servicemonitor.enabled true }} --- apiVersion: monitoring.coreos.com/v1 @@ -40,6 +48,10 @@ spec: port: provisioner - interval: 30s port: resizer + - interval: 30s + port: attacher + - interval: 30s + port: snapshotter selector: matchLabels: app: nutanix-csi-metrics diff --git a/charts/nutanix-csi-storage/values.yaml b/charts/nutanix-csi-storage/values.yaml index 35e49c2..8430d4b 100644 --- a/charts/nutanix-csi-storage/values.yaml +++ b/charts/nutanix-csi-storage/values.yaml @@ -19,10 +19,18 @@ openshift: workerIscsiConfig: false # kubeletDir allows overriding the host location of kubelet's internal state. +# for NKE cluster set it to "/var/nutanix/var/lib/kubelet" kubeletDir: "/var/lib/kubelet" # Global Settings for all pods +# csiSecretDir is the directory where PC (Prism Central) secret is mounted. +csiSecretDir: "/var/run/ntnx-secret-dir" + +# category configmap name and namespace +csiCategoryConfigmapName: ntnx-cluster-configmap +csiCategoryConfigmapNamespace: ntnx-system + nodeSelector: {} tolerations: [] imagePullPolicy: IfNotPresent @@ -30,17 +38,13 @@ imagePullPolicy: IfNotPresent # Storage Class settings # # choose for which mode (Volume, File, Dynamic File) storageclass need to be created -volumeClass: false +volumeClass: true volumeClassName: "nutanix-volume" volumeClassRetention: "Delete" # volumeClassDescription: "" # volumeClassAnnotations: {} # volumeClassLabels: {} -volumeSnapshotClassName: "nutanix-snapshot-class" -# volumeSnapshotClassAnnotations: {} -# volumeSnapshotClassLabels: {} - fileClass: false fileClassName: "nutanix-file" fileClassRetention: "Delete" @@ -60,38 +64,47 @@ dynamicFileClassRetention: "Delete" # value are: none, volume, file, dynfile defaultStorageClass: none -# Nutanix Prism Elements settings +# VolumeSnapshotClass settings # -# Allow dynamic creation of Volumes and Fileshare -# needed if volumeClass or dynamicFileClass is set to true - -## fully qualified domain name (FQDN) or the cluster virtual IP address (if one is not configured, use the virtual IP address of any Controller VM in the cluster). -# prismEndPoint: -prismPort: 9440 - -## username of the Prism Element (PE) cluster admin -# username: - -## password for the PE cluster admin. -# password: - -## secret name that stores Nutanix cluster credentials -secretName: ntnx-secret +# If createVolumeSnapshotClass is set to true, volumesnapshotclass will be created as part of the deployment. +# volumeSnapshotClassRetention sets retention policy +createVolumeSnapshotClass: true +volumeSnapshotClassName: "nutanix-snapshot-class" +# volumeSnapshotClassAnnotations: {} +# volumeSnapshotClassLabels: {} +volumeSnapshotClassRetention: "Retain" -## Nutanix Prism Elements Existing Secret +# Nutanix Prism Central settings # +# Allow dynamic creation of Volumes and Fileshare +# needed if volumeClass or dynamicFileClass is set to true +# Nutanix Prism Central Existing Secret +# if set to false a new secret will not be created. PrismCentral secret is +# required for the csi driver else helm install/upgrade will fail. You can +# create PrismCentral secret in the k8s cluster before helm install/upgrade. +createPrismCentralSecret: true +prismCentralEndPoint: 00.00.00.00 +pcUsername: username +pcPassword: password +pcSecretName: ntnx-pc-secret + +# Nutanix Prism Element Secret which is used by dynamicFileClass. +# The user needs to create this secret. # if set to false a new secret will not be created -createSecret: true - -## Volumes Settings +# If set to true in older version and you are upgrading to CSI 3.0, +# ensure you retain values of following variables +# so that the ntnx-secret is not deleted or modified. +createSecret: false +prismEndPoint: 00.00.000.000 +username: username +password: password +peSecretName: ntnx-secret + +# Volumes Settings # - -## name of the Nutanix storage container -# storageContainer: - -## Filesystem used in volume PV -fsType: xfs +storageContainer: add-container-name +fsType: ext4 lvmVolume: false lvmDisks: 4 @@ -132,30 +145,59 @@ servicemonitor: controller: replicas: 2 - image: quay.io/karbon/ntnx-csi:v2.6.6 + image: quay.io/karbon/ntnx-csi:v3.0.0-rc6 nodeSelector: {} tolerations: [] + cpu: 200m + memory: 200Mi node: - image: quay.io/karbon/ntnx-csi:v2.6.6 - nodeSelector: {} + image: quay.io/karbon/ntnx-csi:v3.0.0-rc6 + nodeSelector: + kubernetes.io/os: linux tolerations: [] + cpu: 200m + memory: 200Mi sidecars: registrar: - image: registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.9.1 + image: registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.8.0 provisioner: - image: registry.k8s.io/sig-storage/csi-provisioner:v3.6.2 + image: registry.k8s.io/sig-storage/csi-provisioner:v3.5.0 imageLegacy: registry.k8s.io/sig-storage/csi-provisioner:v2.2.2 + attacher: + image: k8s.gcr.io/sig-storage/csi-attacher:v3.4.0 snapshotter: - image: registry.k8s.io/sig-storage/csi-snapshotter:v6.3.2 + image: registry.k8s.io/sig-storage/csi-snapshotter:v6.2.1 imageBeta: registry.k8s.io/sig-storage/csi-snapshotter:v3.0.3 + # set it to true, if external-snapshotter sidecar should be deployed along with controller. + deploy: true resizer: - image: registry.k8s.io/sig-storage/csi-resizer:v1.9.2 + image: registry.k8s.io/sig-storage/csi-resizer:v1.8.0 livenessprobe: - image: registry.k8s.io/sig-storage/livenessprobe:v2.11.0 + image: registry.k8s.io/sig-storage/livenessprobe:v2.10.0 + healthmonitor: + image: gcr.io/k8s-staging-sig-storage/csi-external-health-monitor-controller:v0.9.0 + +# PC versions on which Nutanix CSI Driver is supported currently. PLEASE DO NOT CHANGE. +supportedPCVersions: "fraser-6.6-stable-pc-1,fraser-6.6-stable-pc-1.1,fraser-2023.3-stable-pc-0,fraser-2023.4-stable-pc-0" + +# kubernetesClusterDeploymentType : Takes values in ["non-bare-metal", "bare-metal"] depending on the type of deployment +kubernetesClusterDeploymentType: "non-bare-metal" + +# liveness probe configuration +liveness: + controller: + initialDelaySeconds: 60 + timeoutSeconds: 3 + periodSeconds: 2 + failureThreshold: 3 + node: + initialDelaySeconds: 60 + timeoutSeconds: 3 + periodSeconds: 2 + failureThreshold: 3 # Used for deployment test in kind cluster # - kindtest: false