diff --git a/chart/questions.yml b/chart/questions.yml index 4570162..58c8c2e 100644 --- a/chart/questions.yml +++ b/chart/questions.yml @@ -621,3 +621,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 450ca57..94b1994 100644 --- a/chart/templates/daemonset-sa.yaml +++ b/chart/templates/daemonset-sa.yaml @@ -82,15 +82,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 4cdd924..5f62b3c 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 fb0390a..3546ebd 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 37bf27a..e5f640d 100644 --- a/chart/templates/deployment-ui.yaml +++ b/chart/templates/deployment-ui.yaml @@ -44,15 +44,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/postupgrade-job.yaml b/chart/templates/postupgrade-job.yaml index 4af75e2..8662c9f 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 47dc697..3a9b0e3 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 5f21b10..3e80621 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 b4ea9f9..08a4854 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: