diff --git a/chart/questions.yaml b/chart/questions.yaml index cfe56a9..fec15d5 100644 --- a/chart/questions.yaml +++ b/chart/questions.yaml @@ -670,3 +670,9 @@ WARNING: label: Pod Security Policy type: boolean group: "Other Settings" +- variable: global.cattle.windowsCluster.enabled + default: "false" + description: "Enable this to allow Longhorn to run on the Rancher deployed Windows cluster." + label: Rancher Windows Cluster + type: boolean + group: "Other Settings" diff --git a/chart/templates/daemonset-sa.yaml b/chart/templates/daemonset-sa.yaml index 28c9b7e..01f1c5f 100644 --- a/chart/templates/daemonset-sa.yaml +++ b/chart/templates/daemonset-sa.yaml @@ -95,15 +95,25 @@ spec: - name: {{ .Values.privateRegistry.registrySecret }} {{- end }} {{- if .Values.longhornManager.priorityClass }} - priorityClassName: {{ .Values.longhornManager.priorityClass | quote}} + priorityClassName: {{ .Values.longhornManager.priorityClass | quote }} {{- end }} - {{- if .Values.longhornManager.tolerations }} + {{- if or .Values.longhornManager.tolerations .Values.global.cattle.windowsCluster.enabled }} tolerations: + {{- if and .Values.global.cattle.windowsCluster.enabled .Values.global.cattle.windowsCluster.tolerations }} +{{ toYaml .Values.global.cattle.windowsCluster.tolerations | indent 6 }} + {{- end }} + {{- if .Values.longhornManager.tolerations }} {{ toYaml .Values.longhornManager.tolerations | indent 6 }} + {{- end }} {{- end }} - {{- if .Values.longhornManager.nodeSelector }} + {{- if or .Values.longhornManager.nodeSelector .Values.global.cattle.windowsCluster.enabled }} nodeSelector: + {{- if and .Values.global.cattle.windowsCluster.enabled .Values.global.cattle.windowsCluster.nodeSelector }} +{{ toYaml .Values.global.cattle.windowsCluster.nodeSelector | indent 8 }} + {{- end }} + {{- if .Values.longhornManager.nodeSelector }} {{ toYaml .Values.longhornManager.nodeSelector | indent 8 }} + {{- end }} {{- end }} serviceAccountName: longhorn-service-account updateStrategy: diff --git a/chart/templates/default-setting.yaml b/chart/templates/default-setting.yaml index be01f5d..b5cd84a 100644 --- a/chart/templates/default-setting.yaml +++ b/chart/templates/default-setting.yaml @@ -20,8 +20,26 @@ data: {{ if not (kindIs "invalid" .Values.defaultSettings.defaultDataLocality) }}default-data-locality: {{ .Values.defaultSettings.defaultDataLocality }}{{ end }} {{ if not (kindIs "invalid" .Values.defaultSettings.defaultLonghornStaticStorageClass) }}default-longhorn-static-storage-class: {{ .Values.defaultSettings.defaultLonghornStaticStorageClass }}{{ end }} {{ if not (kindIs "invalid" .Values.defaultSettings.backupstorePollInterval) }}backupstore-poll-interval: {{ .Values.defaultSettings.backupstorePollInterval }}{{ end }} - {{ if not (kindIs "invalid" .Values.defaultSettings.taintToleration) }}taint-toleration: {{ .Values.defaultSettings.taintToleration }}{{ end }} - {{ if not (kindIs "invalid" .Values.defaultSettings.systemManagedComponentsNodeSelector) }}system-managed-components-node-selector: {{ .Values.defaultSettings.systemManagedComponentsNodeSelector }}{{ end }} + {{- if or (not (kindIs "invalid" .Values.defaultSettings.taintToleration)) (not (kindIs "invalid" .Values.global.cattle.windowsCluster.enabled)) }} + taint-toleration: {{ $windowsDefaultSettingTaintToleration := list }}{{ $defaultSettingTaintToleration := list -}} + {{- if and .Values.global.cattle.windowsCluster.enabled .Values.global.cattle.windowsCluster.defaultSetting.taintToleration -}} + {{- $windowsDefaultSettingTaintToleration = .Values.global.cattle.windowsCluster.defaultSetting.taintToleration -}} + {{- end -}} + {{- if not (kindIs "invalid" .Values.defaultSettings.taintToleration) -}} + {{- $defaultSettingTaintToleration = .Values.defaultSettings.taintToleration -}} + {{- end -}} + {{- $taintToleration := list $windowsDefaultSettingTaintToleration $defaultSettingTaintToleration }}{{ join ";" (compact $taintToleration) -}} + {{- end }} + {{- if or (not (kindIs "invalid" .Values.defaultSettings.systemManagedComponentsNodeSelector)) (not (kindIs "invalid" .Values.global.cattle.windowsCluster.enabled)) }} + system-managed-components-node-selector: {{ $windowsDefaultSettingNodeSelector := list }}{{ $defaultSettingNodeSelector := list -}} + {{- if and .Values.global.cattle.windowsCluster.enabled .Values.global.cattle.windowsCluster.defaultSetting.systemManagedComponentsNodeSelector -}} + {{ $windowsDefaultSettingNodeSelector = .Values.global.cattle.windowsCluster.defaultSetting.systemManagedComponentsNodeSelector -}} + {{- end -}} + {{- if not (kindIs "invalid" .Values.defaultSettings.systemManagedComponentsNodeSelector) -}} + {{- $defaultSettingNodeSelector = .Values.defaultSettings.systemManagedComponentsNodeSelector -}} + {{- end -}} + {{- $nodeSelector := list $windowsDefaultSettingNodeSelector $defaultSettingNodeSelector }}{{ join ";" (compact $nodeSelector) -}} + {{- end }} {{ if not (kindIs "invalid" .Values.defaultSettings.priorityClass) }}priority-class: {{ .Values.defaultSettings.priorityClass }}{{ end }} {{ if not (kindIs "invalid" .Values.defaultSettings.autoSalvage) }}auto-salvage: {{ .Values.defaultSettings.autoSalvage }}{{ end }} {{ if not (kindIs "invalid" .Values.defaultSettings.autoDeletePodWhenVolumeDetachedUnexpectedly) }}auto-delete-pod-when-volume-detached-unexpectedly: {{ .Values.defaultSettings.autoDeletePodWhenVolumeDetachedUnexpectedly }}{{ end }} diff --git a/chart/templates/deployment-driver.yaml b/chart/templates/deployment-driver.yaml index 67e3c2c..ecbde87 100644 --- a/chart/templates/deployment-driver.yaml +++ b/chart/templates/deployment-driver.yaml @@ -89,15 +89,25 @@ spec: - name: {{ .Values.privateRegistry.registrySecret }} {{- end }} {{- if .Values.longhornDriver.priorityClass }} - priorityClassName: {{ .Values.longhornDriver.priorityClass | quote}} + priorityClassName: {{ .Values.longhornDriver.priorityClass | quote }} {{- end }} - {{- if .Values.longhornDriver.tolerations }} + {{- if or .Values.longhornDriver.tolerations .Values.global.cattle.windowsCluster.enabled }} tolerations: + {{- if and .Values.global.cattle.windowsCluster.enabled .Values.global.cattle.windowsCluster.tolerations }} +{{ toYaml .Values.global.cattle.windowsCluster.tolerations | indent 6 }} + {{- end }} + {{- if .Values.longhornDriver.tolerations }} {{ toYaml .Values.longhornDriver.tolerations | indent 6 }} + {{- end }} {{- end }} - {{- if .Values.longhornDriver.nodeSelector }} + {{- if or .Values.longhornDriver.nodeSelector .Values.global.cattle.windowsCluster.enabled }} nodeSelector: + {{- if and .Values.global.cattle.windowsCluster.enabled .Values.global.cattle.windowsCluster.nodeSelector }} +{{ toYaml .Values.global.cattle.windowsCluster.nodeSelector | indent 8 }} + {{- end }} + {{- if .Values.longhornDriver.nodeSelector }} {{ toYaml .Values.longhornDriver.nodeSelector | indent 8 }} + {{- end }} {{- end }} serviceAccountName: longhorn-service-account securityContext: diff --git a/chart/templates/deployment-ui.yaml b/chart/templates/deployment-ui.yaml index a1ba7a9..06791a1 100644 --- a/chart/templates/deployment-ui.yaml +++ b/chart/templates/deployment-ui.yaml @@ -46,15 +46,25 @@ spec: - name: {{ .Values.privateRegistry.registrySecret }} {{- end }} {{- if .Values.longhornUI.priorityClass }} - priorityClassName: {{ .Values.longhornUI.priorityClass | quote}} + priorityClassName: {{ .Values.longhornUI.priorityClass | quote }} {{- end }} - {{- if .Values.longhornUI.tolerations }} + {{- if or .Values.longhornUI.tolerations .Values.global.cattle.windowsCluster.enabled }} tolerations: + {{- if and .Values.global.cattle.windowsCluster.enabled .Values.global.cattle.windowsCluster.tolerations }} +{{ toYaml .Values.global.cattle.windowsCluster.tolerations | indent 6 }} + {{- end }} + {{- if .Values.longhornUI.tolerations }} {{ toYaml .Values.longhornUI.tolerations | indent 6 }} + {{- end }} {{- end }} - {{- if .Values.longhornUI.nodeSelector }} + {{- if or .Values.longhornUI.nodeSelector .Values.global.cattle.windowsCluster.enabled }} nodeSelector: + {{- if and .Values.global.cattle.windowsCluster.enabled .Values.global.cattle.windowsCluster.nodeSelector }} +{{ toYaml .Values.global.cattle.windowsCluster.nodeSelector | indent 8 }} + {{- end }} + {{- if .Values.longhornUI.nodeSelector }} {{ toYaml .Values.longhornUI.nodeSelector | indent 8 }} + {{- end }} {{- end }} --- kind: Service diff --git a/chart/templates/deployment-webhook.yaml b/chart/templates/deployment-webhook.yaml index e80a564..3b32b1b 100644 --- a/chart/templates/deployment-webhook.yaml +++ b/chart/templates/deployment-webhook.yaml @@ -54,15 +54,25 @@ spec: - name: {{ .Values.privateRegistry.registrySecret }} {{- end }} {{- if .Values.longhornDriver.priorityClass }} - priorityClassName: {{ .Values.longhornDriver.priorityClass | quote}} + priorityClassName: {{ .Values.longhornDriver.priorityClass | quote }} {{- end }} - {{- if .Values.longhornDriver.tolerations }} + {{- if or .Values.longhornDriver.tolerations .Values.global.cattle.windowsCluster.enabled }} tolerations: + {{- if and .Values.global.cattle.windowsCluster.enabled .Values.global.cattle.windowsCluster.tolerations }} +{{ toYaml .Values.global.cattle.windowsCluster.tolerations | indent 6 }} + {{- end }} + {{- if .Values.longhornDriver.tolerations }} {{ toYaml .Values.longhornDriver.tolerations | indent 6 }} + {{- end }} {{- end }} - {{- if .Values.longhornDriver.nodeSelector }} + {{- if or .Values.longhornDriver.nodeSelector .Values.global.cattle.windowsCluster.enabled }} nodeSelector: + {{- if and .Values.global.cattle.windowsCluster.enabled .Values.global.cattle.windowsCluster.nodeSelector }} +{{ toYaml .Values.global.cattle.windowsCluster.nodeSelector | indent 8 }} + {{- end }} + {{- if .Values.longhornDriver.nodeSelector }} {{ toYaml .Values.longhornDriver.nodeSelector | indent 8 }} + {{- end }} {{- end }} serviceAccountName: longhorn-service-account --- @@ -133,14 +143,24 @@ spec: - name: {{ .Values.privateRegistry.registrySecret }} {{- end }} {{- if .Values.longhornDriver.priorityClass }} - priorityClassName: {{ .Values.longhornDriver.priorityClass | quote}} + priorityClassName: {{ .Values.longhornDriver.priorityClass | quote }} {{- end }} - {{- if .Values.longhornDriver.tolerations }} + {{- if or .Values.longhornDriver.tolerations .Values.global.cattle.windowsCluster.enabled }} tolerations: + {{- if and .Values.global.cattle.windowsCluster.enabled .Values.global.cattle.windowsCluster.tolerations }} +{{ toYaml .Values.global.cattle.windowsCluster.tolerations | indent 6 }} + {{- end }} + {{- if .Values.longhornDriver.tolerations }} {{ toYaml .Values.longhornDriver.tolerations | indent 6 }} + {{- end }} {{- end }} - {{- if .Values.longhornDriver.nodeSelector }} + {{- if or .Values.longhornDriver.nodeSelector .Values.global.cattle.windowsCluster.enabled }} nodeSelector: + {{- if and .Values.global.cattle.windowsCluster.enabled .Values.global.cattle.windowsCluster.nodeSelector }} +{{ toYaml .Values.global.cattle.windowsCluster.nodeSelector | indent 8 }} + {{- end }} + {{- if or .Values.longhornDriver.nodeSelector }} {{ toYaml .Values.longhornDriver.nodeSelector | indent 8 }} + {{- end }} {{- end }} serviceAccountName: longhorn-service-account diff --git a/chart/templates/postupgrade-job.yaml b/chart/templates/postupgrade-job.yaml index d0691fe..b9b2eeb 100644 --- a/chart/templates/postupgrade-job.yaml +++ b/chart/templates/postupgrade-job.yaml @@ -35,14 +35,24 @@ spec: - name: {{ .Values.privateRegistry.registrySecret }} {{- end }} {{- if .Values.longhornManager.priorityClass }} - priorityClassName: {{ .Values.longhornManager.priorityClass | quote}} + priorityClassName: {{ .Values.longhornManager.priorityClass | quote }} {{- end }} serviceAccountName: longhorn-service-account - {{- if .Values.longhornManager.tolerations }} + {{- if or .Values.longhornManager.tolerations .Values.global.cattle.windowsCluster.enabled }} tolerations: + {{- if and .Values.global.cattle.windowsCluster.enabled .Values.global.cattle.windowsCluster.tolerations }} +{{ toYaml .Values.global.cattle.windowsCluster.tolerations | indent 6 }} + {{- end }} + {{- if .Values.longhornManager.tolerations }} {{ toYaml .Values.longhornManager.tolerations | indent 6 }} + {{- end }} {{- end }} - {{- if .Values.longhornManager.nodeSelector }} + {{- if or .Values.longhornManager.nodeSelector .Values.global.cattle.windowsCluster.enabled }} nodeSelector: + {{- if and .Values.global.cattle.windowsCluster.enabled .Values.global.cattle.windowsCluster.nodeSelector }} +{{ toYaml .Values.global.cattle.windowsCluster.nodeSelector | indent 8 }} + {{- end }} + {{- if .Values.longhornManager.nodeSelector }} {{ toYaml .Values.longhornManager.nodeSelector | indent 8 }} + {{- end }} {{- end }} diff --git a/chart/templates/storageclass.yaml b/chart/templates/storageclass.yaml index 3a68265..14bf41e 100644 --- a/chart/templates/storageclass.yaml +++ b/chart/templates/storageclass.yaml @@ -21,10 +21,10 @@ data: staleReplicaTimeout: "30" fromBackup: "" {{- if .Values.persistence.defaultFsType }} - fsType: "{{.Values.persistence.defaultFsType}}" + fsType: "{{ .Values.persistence.defaultFsType }}" {{- end }} {{- if .Values.persistence.migratable }} - migratable: "{{.Values.persistence.migratable}}" + migratable: "{{ .Values.persistence.migratable }}" {{- end }} {{- if .Values.persistence.backingImage.enable }} backingImage: {{ .Values.persistence.backingImage.name }} diff --git a/chart/templates/uninstall-job.yaml b/chart/templates/uninstall-job.yaml index cecb590..ac3525b 100644 --- a/chart/templates/uninstall-job.yaml +++ b/chart/templates/uninstall-job.yaml @@ -36,14 +36,24 @@ spec: - name: {{ .Values.privateRegistry.registrySecret }} {{- end }} {{- if .Values.longhornManager.priorityClass }} - priorityClassName: {{ .Values.longhornManager.priorityClass | quote}} + priorityClassName: {{ .Values.longhornManager.priorityClass | quote }} {{- end }} serviceAccountName: longhorn-service-account - {{- if .Values.longhornManager.tolerations }} + {{- if or .Values.longhornManager.tolerations .Values.global.cattle.windowsCluster.enabled }} tolerations: + {{- if and .Values.global.cattle.windowsCluster.enabled .Values.global.cattle.windowsCluster.tolerations }} +{{ toYaml .Values.global.cattle.windowsCluster.tolerations | indent 6 }} + {{- end }} + {{- if .Values.longhornManager.tolerations }} {{ toYaml .Values.longhornManager.tolerations | indent 6 }} + {{- end }} {{- end }} - {{- if .Values.longhornManager.nodeSelector }} + {{- if or .Values.longhornManager.nodeSelector .Values.global.cattle.windowsCluster.enabled }} nodeSelector: + {{- if and .Values.global.cattle.windowsCluster.enabled .Values.global.cattle.windowsCluster.nodeSelector }} +{{ toYaml .Values.global.cattle.windowsCluster.nodeSelector | indent 8 }} + {{- end }} + {{- if or .Values.longhornManager.nodeSelector }} {{ toYaml .Values.longhornManager.nodeSelector | indent 8 }} + {{- end }} {{- end }} diff --git a/chart/values.yaml b/chart/values.yaml index 375b9ef..0dfb571 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -4,6 +4,22 @@ global: cattle: systemDefaultRegistry: "" + windowsCluster: + # Enable this to allow Longhorn to run on the Rancher deployed Windows cluster + enabled: false + # Tolerate Linux node taint + tolerations: + - key: "cattle.io/os" + value: "linux" + effect: "NoSchedule" + operator: "Equal" + # Select Linux nodes + nodeSelector: + kubernetes.io/os: "linux" + # Recognize toleration and node selector for Longhorn run-time created components + defaultSetting: + taintToleration: cattle.io/os=linux:NoSchedule + systemManagedComponentsNodeSelector: kubernetes.io/os:linux image: longhorn: