Compare commits

...

39 Commits

Author SHA1 Message Date
Ray Chang
45cfa03f19 fix: correct the version of CSI-attacher and CSI-nodeDriverRegistrar
Signed-off-by: Ray Chang <ray.chang@suse.com>
2022-11-05 06:35:38 +08:00
Ray Chang
2434bca969 fix: update version number in question.yaml
Signed-off-by: Ray Chang <ray.chang@suse.com>
2022-11-05 06:02:44 +08:00
David Ko
f936f6eec0 Release 1.2.6
Signed-off-by: David Ko <dko@suse.com>
2022-11-04 13:42:59 +08:00
Ray Chang
bf56ac144c fix: modify parameter names , output-file and version, in help function
Longhorn 1521

Signed-off-by: Ray Chang <ray.chang@suse.com>
(cherry picked from commit e68f633053122fd8dadd87e140ae104a00ce62ff)
2022-11-01 16:27:00 +08:00
Shuo Wu
8fe0c3807b Update backing image manager tag to longhornio/backing-image-manager:v2_20221027
Longhorn 4738

Signed-off-by: Shuo Wu <shuo.wu@suse.com>
2022-10-30 15:05:16 +08:00
Ray Chang
81a23943f0 improvement(restore): script for restoring from backup file
Longhorn 1521

Signed-off-by: Ray Chang <ray.chang@suse.com>
(cherry picked from commit 7805007c99c7197b8d860db1850f24c373982d0f)
2022-10-21 08:05:59 +08:00
David Ko
6a8198c0ea Release 1.2.6-rc1
Signed-off-by: David Ko <dko@suse.com>
2022-10-20 17:08:18 +08:00
David Ko
d9ad7918ca Update system managed component images for v1.2.6
Signed-off-by: David Ko <dko@suse.com>
2022-10-20 14:31:03 +08:00
Phan Le
80a7ea47e1 Fix: update outdated csi-image tags in chart/questions.yaml
Signed-off-by: Phan Le <phan.le@suse.com>
2022-10-04 08:03:43 +08:00
Ray Chang
f61e36eae8 Add K8s version limitation to < 1.4 chart
Longhorn 4664

Signed-off-by: Ray Chang <ray.chang@suse.com>
2022-10-03 18:01:16 +08:00
Ray Chang
76bd82c9e0 Remove resources block in values.yaml
Longhorn 4601

Signed-off-by: Ray Chang <ray.chang@suse.com>
(cherry picked from commit 61ad5112c120cc049cd9a6af70cc76ceca585e41)
2022-09-29 14:02:31 +08:00
David Ko
b6027050fa Release 1.2.5
Signed-off-by: David Ko <dko@suse.com>
2022-09-02 14:21:42 +08:00
David Ko
e931127489 Release 1.2.5 RC2
Signed-off-by: David Ko <dko@suse.com>
2022-08-29 10:39:57 +08:00
David Ko
76d8ec5685 Update managed components images
Signed-off-by: David Ko <dko@suse.com>
2022-08-29 08:16:02 +08:00
James Lu
fba0c5c167 Update LEP: Failed-Backups-Cleanup
Add failed backup TTL to enable and disbale the auto-deletion.

Signed-off-by: James Lu <james.lu@suse.com>
2022-08-24 17:13:11 +08:00
James Lu
e7715ad51f Failed backups cleanup: update deploy YAML
Add a new option `failed-backup-ttl` and update the LEP for failed
backup cleanup.

Longhorn 3898

Signed-off-by: James Lu <james.lu@suse.com>
2022-08-24 17:13:11 +08:00
Serge Tkatchouk
fc66ce16d9 Add Gentoo support to environment_check.sh
This addition will allow Gentoo users to run this script and get sensible error messages in case they forgot to install required packages.

Signed-off-by: Serge Tkatchouk <sp1j3t@gmail.com>
(cherry picked from commit c1b93f5531)
Signed-off-by: Chin-Ya Huang <chin-ya.huang@suse.com>
2022-08-24 16:47:27 +08:00
Dante Foulke
8220a6194c bugfix for issue #4216
Signed-off-by: Dante Foulke <flkdnt@gmail.com>
(cherry picked from commit edc1b83c5f)
Signed-off-by: Chin-Ya Huang <chin-ya.huang@suse.com>
2022-08-24 16:47:27 +08:00
Max Hooton
892e64772a added arch support
Signed-off-by: Keloran <keloran@chewedfeed.com>
(cherry picked from commit b4fd827436)
Signed-off-by: Chin-Ya Huang <chin-ya.huang@suse.com>
2022-08-24 16:47:27 +08:00
David Ko
9fa6cd48f2 Release 1.2.5-rc1
Signed-off-by: David Ko <dko@suse.com>
2022-08-19 18:47:16 +08:00
Phan Le
70cacf0ebe Add volumeattachment to uninstaller's service account
longhorn-4405

Signed-off-by: Phan Le <phan.le@suse.com>
2022-08-12 06:57:32 +08:00
Derek Su
5aa7a349d3 Update charts
Longhorn 4332

Signed-off-by: Derek Su <derek.su@suse.com>
2022-08-02 15:53:53 +08:00
Derek Su
92d58fced4 chart: fix the conditions of Rancher deployed Windows Cluster
Longhorn 4289

Signed-off-by: Derek Su <derek.su@suse.com>
2022-07-27 12:33:40 +08:00
c3y1huang
c9161b9ca7 chart: support Rancher deployed Windows Cluster
Longhorn-4262

Signed-off-by: Chin-Ya Huang <chin-ya.huang@suse.com>
2022-07-22 19:13:50 +08:00
Derek Su
0ed376c4cc Remove longhorn-default-settings from manifests
Longhorn 2570
Longhorn 3488

Signed-off-by: Derek Su <derek.su@suse.com>
2022-06-07 13:17:51 +08:00
Derek Su
7f675a365d Update longhorn.yaml
Longhorn 2570
Longhorn 3488

Signed-off-by: Derek Su <derek.su@suse.com>
2022-06-07 13:17:51 +08:00
Derek Su
1532a7815c Skip rendering nil default settings
A default settings is nil when it is
- unset in values, or
- the value is "~"

Longhorn 2570
Longhorn 3488

Signed-off-by: Derek Su <derek.su@suse.com>
2022-06-07 13:17:51 +08:00
signaleleven
3bad923306 Allow to add annotations on the serviceAccount managed by the helm chart
Signed-off-by: signaleleven <michael.sacchi@signal-eleven.com>
Co-authored-by: JenTing Hsiao <hsiaoairplane@gmail.com>
2022-05-10 08:54:28 +08:00
David Ko
571bc65be2 Fix wrong type of parameters in the storage class
Longhorn #3880

Signed-off-by: David Ko <dko@suse.com>

(cherry picked from commit f898dec142)
2022-05-05 16:51:06 +08:00
Gaurav Mehta
8a0db181a5 minor tweak to remove quotes
Signed-off-by: Gaurav Mehta <gaurav@rancher.com>
2022-04-21 14:48:20 +08:00
Gaurav Mehta
2783ef7bd5 Retrofit of ability to expose migratable paraemter in the longhorn helm chart
Signed-off-by: Gaurav Mehta <gaurav@rancher.com>
2022-04-21 14:48:20 +08:00
David Ko
a13c25a8d2 Change imagePullPolicy of uninstall job to IfNotPresent
Signed-off-by: David Ko <dko@suse.com>

(cherry picked from commit 9a36732ebd)
2022-03-18 14:28:53 +08:00
David Ko
55f21d3be5 Release 1.2.4
Signed-off-by: David Ko <dko@suse.com>
2022-03-17 17:24:50 +08:00
David Ko
383bf248ad Release 1.2.4-rc1
Signed-off-by: David Ko <dko@suse.com>
2022-03-04 20:55:34 +08:00
Keith Lucas
4c74890cff Add the new instance manager to the charts
Signed-off-by: Keith Lucas <keith.lucas@suse.com>
2022-03-04 02:30:23 +08:00
Keith Lucas
2f4534a491 Update instance manager
Use an instance manager version with the tgt 100% CPU usage fix.

Signed-off-by: Keith Lucas <keith.lucas@suse.com>
2022-03-04 02:30:23 +08:00
Matthew Mattox
b267caddd9 Removing runAsUser and securityContext, as the image will run as Longhorn instead of root
Signed-off-by: Matthew Mattox <Matt.Mattox@suse.com>
(cherry picked from commit fa6ec17cfb)
2022-03-02 17:51:31 +08:00
Matthew Mattox
8ad1c56cad adding cache-volume to longhorn-ui
Signed-off-by: Matthew Mattox <Matt.Mattox@suse.com>
(cherry picked from commit c7ed614cbc)
2022-03-02 17:51:31 +08:00
Lukas Auerbeck
d7b3d06cd1 Make namespace configureable for services
Signed-off-by: Lukas Auerbeck <lauerbeck@gmx.at>
2021-12-24 07:11:07 +08:00
21 changed files with 696 additions and 181 deletions

View File

@ -1,8 +1,8 @@
apiVersion: v1 apiVersion: v1
name: longhorn name: longhorn
version: 1.2.3 version: 1.2.6
appVersion: v1.2.3 appVersion: v1.2.6
kubeVersion: ">=1.18.0-0" kubeVersion: ">=1.18.0-0 <1.25.0-0"
description: Longhorn is a distributed block storage system for Kubernetes. description: Longhorn is a distributed block storage system for Kubernetes.
keywords: keywords:
- longhorn - longhorn

View File

@ -17,7 +17,7 @@ questions:
label: Longhorn Manager Image Repository label: Longhorn Manager Image Repository
group: "Longhorn Images Settings" group: "Longhorn Images Settings"
- variable: image.longhorn.manager.tag - variable: image.longhorn.manager.tag
default: v1.2.3 default: v1.2.6
description: "Specify Longhorn Manager Image Tag" description: "Specify Longhorn Manager Image Tag"
type: string type: string
label: Longhorn Manager Image Tag label: Longhorn Manager Image Tag
@ -29,7 +29,7 @@ questions:
label: Longhorn Engine Image Repository label: Longhorn Engine Image Repository
group: "Longhorn Images Settings" group: "Longhorn Images Settings"
- variable: image.longhorn.engine.tag - variable: image.longhorn.engine.tag
default: v1.2.3 default: v1.2.6
description: "Specify Longhorn Engine Image Tag" description: "Specify Longhorn Engine Image Tag"
type: string type: string
label: Longhorn Engine Image Tag label: Longhorn Engine Image Tag
@ -41,7 +41,7 @@ questions:
label: Longhorn UI Image Repository label: Longhorn UI Image Repository
group: "Longhorn Images Settings" group: "Longhorn Images Settings"
- variable: image.longhorn.ui.tag - variable: image.longhorn.ui.tag
default: v1.2.3 default: v1.2.6
description: "Specify Longhorn UI Image Tag" description: "Specify Longhorn UI Image Tag"
type: string type: string
label: Longhorn UI Image Tag label: Longhorn UI Image Tag
@ -53,7 +53,7 @@ questions:
label: Longhorn Instance Manager Image Repository label: Longhorn Instance Manager Image Repository
group: "Longhorn Images Settings" group: "Longhorn Images Settings"
- variable: image.longhorn.instanceManager.tag - variable: image.longhorn.instanceManager.tag
default: v1_20211210 default: v1_20220303_patch2
description: "Specify Longhorn Instance Manager Image Tag" description: "Specify Longhorn Instance Manager Image Tag"
type: string type: string
label: Longhorn Instance Manager Image Tag label: Longhorn Instance Manager Image Tag
@ -65,7 +65,7 @@ questions:
label: Longhorn Share Manager Image Repository label: Longhorn Share Manager Image Repository
group: "Longhorn Images Settings" group: "Longhorn Images Settings"
- variable: image.longhorn.shareManager.tag - variable: image.longhorn.shareManager.tag
default: v1_20211020 default: v1_20211020_patch2
description: "Specify Longhorn Share Manager Image Tag" description: "Specify Longhorn Share Manager Image Tag"
type: string type: string
label: Longhorn Share Manager Image Tag label: Longhorn Share Manager Image Tag
@ -77,7 +77,7 @@ questions:
label: Longhorn Backing Image Manager Image Repository label: Longhorn Backing Image Manager Image Repository
group: "Longhorn Images Settings" group: "Longhorn Images Settings"
- variable: image.longhorn.backingImageManager.tag - variable: image.longhorn.backingImageManager.tag
default: v2_20210820 default: v2_20221027
description: "Specify Longhorn Backing Image Manager Image Tag" description: "Specify Longhorn Backing Image Manager Image Tag"
type: string type: string
label: Longhorn Backing Image Manager Image Tag label: Longhorn Backing Image Manager Image Tag
@ -324,6 +324,16 @@ The available volume spec options are:
type: int type: int
min: 0 min: 0
default: 300 default: 300
- variable: defaultSettings.failedBackupTTL
label: Failed Backup Time to Live
description: "In minutes. This setting determines how long Longhorn will keep the backup resource that was failed. Set to 0 to disable the auto-deletion.
Failed backups will be checked and cleaned up during backupstore polling which is controlled by **Backupstore Poll Interval** setting.
Hence this value determines the minimal wait interval of the cleanup. And the actual cleanup interval is multiple of **Backupstore Poll Interval**.
Disabling **Backupstore Poll Interval** also means to disable failed backup auto-deletion."
group: "Longhorn Default Settings"
type: int
min: 0
default: 1440
- variable: defaultSettings.autoSalvage - variable: defaultSettings.autoSalvage
label: Automatic salvage label: Automatic salvage
description: "If enabled, volumes will be automatically salvaged when all the replicas become faulty e.g. due to network disconnection. Longhorn will try to figure out which replica(s) are usable, then use them for the volume. By default true." description: "If enabled, volumes will be automatically salvaged when all the replicas become faulty e.g. due to network disconnection. Longhorn will try to figure out which replica(s) are usable, then use them for the volume. By default true."
@ -621,3 +631,9 @@ WARNING:
label: Pod Security Policy label: Pod Security Policy
type: boolean type: boolean
group: "Other Settings" 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"

View File

@ -232,7 +232,7 @@ spec:
jsonPath: .spec.image jsonPath: .spec.image
- name: RefCount - name: RefCount
type: integer type: integer
description: Number of volumes are using the engine image description: Number of resources using the engine image
jsonPath: .status.refCount jsonPath: .status.refCount
- name: BuildDate - name: BuildDate
type: date type: date

View File

@ -54,8 +54,6 @@ spec:
- name: longhorn - name: longhorn
mountPath: /var/lib/longhorn/ mountPath: /var/lib/longhorn/
mountPropagation: Bidirectional mountPropagation: Bidirectional
- name: longhorn-default-setting
mountPath: /var/lib/longhorn-setting/
env: env:
- name: POD_NAMESPACE - name: POD_NAMESPACE
valueFrom: valueFrom:
@ -69,8 +67,6 @@ spec:
valueFrom: valueFrom:
fieldRef: fieldRef:
fieldPath: spec.nodeName fieldPath: spec.nodeName
- name: DEFAULT_SETTING_PATH
value: /var/lib/longhorn-setting/default-setting.yaml
volumes: volumes:
- name: dev - name: dev
hostPath: hostPath:
@ -81,9 +77,6 @@ spec:
- name: longhorn - name: longhorn
hostPath: hostPath:
path: /var/lib/longhorn/ path: /var/lib/longhorn/
- name: longhorn-default-setting
configMap:
name: longhorn-default-setting
{{- if .Values.privateRegistry.registrySecret }} {{- if .Values.privateRegistry.registrySecret }}
imagePullSecrets: imagePullSecrets:
- name: {{ .Values.privateRegistry.registrySecret }} - name: {{ .Values.privateRegistry.registrySecret }}
@ -91,14 +84,24 @@ spec:
{{- if .Values.longhornManager.priorityClass }} {{- if .Values.longhornManager.priorityClass }}
priorityClassName: {{ .Values.longhornManager.priorityClass | quote }} priorityClassName: {{ .Values.longhornManager.priorityClass | quote }}
{{- end }} {{- end }}
{{- if .Values.longhornManager.tolerations }} {{- if or .Values.longhornManager.tolerations .Values.global.cattle.windowsCluster.enabled }}
tolerations: 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 }} {{ toYaml .Values.longhornManager.tolerations | indent 6 }}
{{- end }} {{- end }}
{{- if .Values.longhornManager.nodeSelector }} {{- end }}
{{- if or .Values.longhornManager.nodeSelector .Values.global.cattle.windowsCluster.enabled }}
nodeSelector: 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 }} {{ toYaml .Values.longhornManager.nodeSelector | indent 8 }}
{{- end }} {{- end }}
{{- end }}
serviceAccountName: longhorn-service-account serviceAccountName: longhorn-service-account
updateStrategy: updateStrategy:
rollingUpdate: rollingUpdate:

View File

@ -6,39 +6,58 @@ metadata:
labels: {{- include "longhorn.labels" . | nindent 4 }} labels: {{- include "longhorn.labels" . | nindent 4 }}
data: data:
default-setting.yaml: |- default-setting.yaml: |-
backup-target: {{ .Values.defaultSettings.backupTarget }} {{ if not (kindIs "invalid" .Values.defaultSettings.backupTarget) }}backup-target: {{ .Values.defaultSettings.backupTarget }}{{ end }}
backup-target-credential-secret: {{ .Values.defaultSettings.backupTargetCredentialSecret }} {{ if not (kindIs "invalid" .Values.defaultSettings.backupTargetCredentialSecret) }}backup-target-credential-secret: {{ .Values.defaultSettings.backupTargetCredentialSecret }}{{ end }}
allow-recurring-job-while-volume-detached: {{ .Values.defaultSettings.allowRecurringJobWhileVolumeDetached }} {{ if not (kindIs "invalid" .Values.defaultSettings.allowRecurringJobWhileVolumeDetached) }}allow-recurring-job-while-volume-detached: {{ .Values.defaultSettings.allowRecurringJobWhileVolumeDetached }}{{ end }}
create-default-disk-labeled-nodes: {{ .Values.defaultSettings.createDefaultDiskLabeledNodes }} {{ if not (kindIs "invalid" .Values.defaultSettings.createDefaultDiskLabeledNodes) }}create-default-disk-labeled-nodes: {{ .Values.defaultSettings.createDefaultDiskLabeledNodes }}{{ end }}
default-data-path: {{ .Values.defaultSettings.defaultDataPath }} {{ if not (kindIs "invalid" .Values.defaultSettings.defaultDataPath) }}default-data-path: {{ .Values.defaultSettings.defaultDataPath }}{{ end }}
replica-soft-anti-affinity: {{ .Values.defaultSettings.replicaSoftAntiAffinity }} {{ if not (kindIs "invalid" .Values.defaultSettings.replicaSoftAntiAffinity) }}replica-soft-anti-affinity: {{ .Values.defaultSettings.replicaSoftAntiAffinity }}{{ end }}
replica-auto-balance: {{ .Values.defaultSettings.replicaAutoBalance }} {{ if not (kindIs "invalid" .Values.defaultSettings.replicaAutoBalance) }}replica-auto-balance: {{ .Values.defaultSettings.replicaAutoBalance }}{{ end }}
storage-over-provisioning-percentage: {{ .Values.defaultSettings.storageOverProvisioningPercentage }} {{ if not (kindIs "invalid" .Values.defaultSettings.storageOverProvisioningPercentage) }}storage-over-provisioning-percentage: {{ .Values.defaultSettings.storageOverProvisioningPercentage }}{{ end }}
storage-minimal-available-percentage: {{ .Values.defaultSettings.storageMinimalAvailablePercentage }} {{ if not (kindIs "invalid" .Values.defaultSettings.storageMinimalAvailablePercentage) }}storage-minimal-available-percentage: {{ .Values.defaultSettings.storageMinimalAvailablePercentage }}{{ end }}
upgrade-checker: {{ .Values.defaultSettings.upgradeChecker }} {{ if not (kindIs "invalid" .Values.defaultSettings.upgradeChecker) }}upgrade-checker: {{ .Values.defaultSettings.upgradeChecker }}{{ end }}
default-replica-count: {{ .Values.defaultSettings.defaultReplicaCount }} {{ if not (kindIs "invalid" .Values.defaultSettings.defaultReplicaCount) }}default-replica-count: {{ .Values.defaultSettings.defaultReplicaCount }}{{ end }}
default-data-locality: {{ .Values.defaultSettings.defaultDataLocality }} {{ if not (kindIs "invalid" .Values.defaultSettings.defaultDataLocality) }}default-data-locality: {{ .Values.defaultSettings.defaultDataLocality }}{{ end }}
default-longhorn-static-storage-class: {{ .Values.defaultSettings.defaultLonghornStaticStorageClass }} {{ if not (kindIs "invalid" .Values.defaultSettings.defaultLonghornStaticStorageClass) }}default-longhorn-static-storage-class: {{ .Values.defaultSettings.defaultLonghornStaticStorageClass }}{{ end }}
backupstore-poll-interval: {{ .Values.defaultSettings.backupstorePollInterval }} {{ if not (kindIs "invalid" .Values.defaultSettings.backupstorePollInterval) }}backupstore-poll-interval: {{ .Values.defaultSettings.backupstorePollInterval }}{{ end }}
taint-toleration: {{ .Values.defaultSettings.taintToleration }} {{ if not (kindIs "invalid" .Values.defaultSettings.failedBackupTTL) }}failed-backup-ttl: {{ .Values.defaultSettings.failedBackupTTL }}{{ end }}
system-managed-components-node-selector: {{ .Values.defaultSettings.systemManagedComponentsNodeSelector }} {{- if or (not (kindIs "invalid" .Values.defaultSettings.taintToleration)) (.Values.global.cattle.windowsCluster.enabled) }}
priority-class: {{ .Values.defaultSettings.priorityClass }} taint-toleration: {{ $windowsDefaultSettingTaintToleration := list }}{{ $defaultSettingTaintToleration := list -}}
auto-salvage: {{ .Values.defaultSettings.autoSalvage }} {{- if and .Values.global.cattle.windowsCluster.enabled .Values.global.cattle.windowsCluster.defaultSetting.taintToleration -}}
auto-delete-pod-when-volume-detached-unexpectedly: {{ .Values.defaultSettings.autoDeletePodWhenVolumeDetachedUnexpectedly }} {{- $windowsDefaultSettingTaintToleration = .Values.global.cattle.windowsCluster.defaultSetting.taintToleration -}}
disable-scheduling-on-cordoned-node: {{ .Values.defaultSettings.disableSchedulingOnCordonedNode }} {{- end -}}
replica-zone-soft-anti-affinity: {{ .Values.defaultSettings.replicaZoneSoftAntiAffinity }} {{- if not (kindIs "invalid" .Values.defaultSettings.taintToleration) -}}
node-down-pod-deletion-policy: {{ .Values.defaultSettings.nodeDownPodDeletionPolicy }} {{- $defaultSettingTaintToleration = .Values.defaultSettings.taintToleration -}}
allow-node-drain-with-last-healthy-replica: {{ .Values.defaultSettings.allowNodeDrainWithLastHealthyReplica }} {{- end -}}
mkfs-ext4-parameters: {{ .Values.defaultSettings.mkfsExt4Parameters }} {{- $taintToleration := list $windowsDefaultSettingTaintToleration $defaultSettingTaintToleration }}{{ join ";" (compact $taintToleration) -}}
disable-replica-rebuild: {{ .Values.defaultSettings.disableReplicaRebuild }} {{- end }}
replica-replenishment-wait-interval: {{ .Values.defaultSettings.replicaReplenishmentWaitInterval }} {{- if or (not (kindIs "invalid" .Values.defaultSettings.systemManagedComponentsNodeSelector)) (.Values.global.cattle.windowsCluster.enabled) }}
concurrent-replica-rebuild-per-node-limit: {{ .Values.defaultSettings.concurrentReplicaRebuildPerNodeLimit }} system-managed-components-node-selector: {{ $windowsDefaultSettingNodeSelector := list }}{{ $defaultSettingNodeSelector := list -}}
disable-revision-counter: {{ .Values.defaultSettings.disableRevisionCounter }} {{- if and .Values.global.cattle.windowsCluster.enabled .Values.global.cattle.windowsCluster.defaultSetting.systemManagedComponentsNodeSelector -}}
system-managed-pods-image-pull-policy: {{ .Values.defaultSettings.systemManagedPodsImagePullPolicy }} {{ $windowsDefaultSettingNodeSelector = .Values.global.cattle.windowsCluster.defaultSetting.systemManagedComponentsNodeSelector -}}
allow-volume-creation-with-degraded-availability: {{ .Values.defaultSettings.allowVolumeCreationWithDegradedAvailability }} {{- end -}}
auto-cleanup-system-generated-snapshot: {{ .Values.defaultSettings.autoCleanupSystemGeneratedSnapshot }} {{- if not (kindIs "invalid" .Values.defaultSettings.systemManagedComponentsNodeSelector) -}}
concurrent-automatic-engine-upgrade-per-node-limit: {{ .Values.defaultSettings.concurrentAutomaticEngineUpgradePerNodeLimit }} {{- $defaultSettingNodeSelector = .Values.defaultSettings.systemManagedComponentsNodeSelector -}}
backing-image-cleanup-wait-interval: {{ .Values.defaultSettings.backingImageCleanupWaitInterval }} {{- end -}}
backing-image-recovery-wait-interval: {{ .Values.defaultSettings.backingImageRecoveryWaitInterval }} {{- $nodeSelector := list $windowsDefaultSettingNodeSelector $defaultSettingNodeSelector }}{{ join ";" (compact $nodeSelector) -}}
guaranteed-engine-manager-cpu: {{ .Values.defaultSettings.guaranteedEngineManagerCPU }} {{- end }}
guaranteed-replica-manager-cpu: {{ .Values.defaultSettings.guaranteedReplicaManagerCPU }} {{ 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 }}
{{ if not (kindIs "invalid" .Values.defaultSettings.disableSchedulingOnCordonedNode) }}disable-scheduling-on-cordoned-node: {{ .Values.defaultSettings.disableSchedulingOnCordonedNode }}{{ end }}
{{ if not (kindIs "invalid" .Values.defaultSettings.replicaZoneSoftAntiAffinity) }}replica-zone-soft-anti-affinity: {{ .Values.defaultSettings.replicaZoneSoftAntiAffinity }}{{ end }}
{{ if not (kindIs "invalid" .Values.defaultSettings.nodeDownPodDeletionPolicy) }}node-down-pod-deletion-policy: {{ .Values.defaultSettings.nodeDownPodDeletionPolicy }}{{ end }}
{{ if not (kindIs "invalid" .Values.defaultSettings.allowNodeDrainWithLastHealthyReplica) }}allow-node-drain-with-last-healthy-replica: {{ .Values.defaultSettings.allowNodeDrainWithLastHealthyReplica }}{{ end }}
{{ if not (kindIs "invalid" .Values.defaultSettings.mkfsExt4Parameters) }}mkfs-ext4-parameters: {{ .Values.defaultSettings.mkfsExt4Parameters }}{{ end }}
{{ if not (kindIs "invalid" .Values.defaultSettings.disableReplicaRebuild) }}disable-replica-rebuild: {{ .Values.defaultSettings.disableReplicaRebuild }}{{ end }}
{{ if not (kindIs "invalid" .Values.defaultSettings.replicaReplenishmentWaitInterval) }}replica-replenishment-wait-interval: {{ .Values.defaultSettings.replicaReplenishmentWaitInterval }}{{ end }}
{{ if not (kindIs "invalid" .Values.defaultSettings.concurrentReplicaRebuildPerNodeLimit) }}concurrent-replica-rebuild-per-node-limit: {{ .Values.defaultSettings.concurrentReplicaRebuildPerNodeLimit }}{{ end }}
{{ if not (kindIs "invalid" .Values.defaultSettings.disableRevisionCounter) }}disable-revision-counter: {{ .Values.defaultSettings.disableRevisionCounter }}{{ end }}
{{ if not (kindIs "invalid" .Values.defaultSettings.systemManagedPodsImagePullPolicy) }}system-managed-pods-image-pull-policy: {{ .Values.defaultSettings.systemManagedPodsImagePullPolicy }}{{ end }}
{{ if not (kindIs "invalid" .Values.defaultSettings.allowVolumeCreationWithDegradedAvailability) }}allow-volume-creation-with-degraded-availability: {{ .Values.defaultSettings.allowVolumeCreationWithDegradedAvailability }}{{ end }}
{{ if not (kindIs "invalid" .Values.defaultSettings.autoCleanupSystemGeneratedSnapshot) }}auto-cleanup-system-generated-snapshot: {{ .Values.defaultSettings.autoCleanupSystemGeneratedSnapshot }}{{ end }}
{{ if not (kindIs "invalid" .Values.defaultSettings.concurrentAutomaticEngineUpgradePerNodeLimit) }}concurrent-automatic-engine-upgrade-per-node-limit: {{ .Values.defaultSettings.concurrentAutomaticEngineUpgradePerNodeLimit }}{{ end }}
{{ if not (kindIs "invalid" .Values.defaultSettings.backingImageCleanupWaitInterval) }}backing-image-cleanup-wait-interval: {{ .Values.defaultSettings.backingImageCleanupWaitInterval }}{{ end }}
{{ if not (kindIs "invalid" .Values.defaultSettings.backingImageRecoveryWaitInterval) }}backing-image-recovery-wait-interval: {{ .Values.defaultSettings.backingImageRecoveryWaitInterval }}{{ end }}
{{ if not (kindIs "invalid" .Values.defaultSettings.guaranteedEngineManagerCPU) }}guaranteed-engine-manager-cpu: {{ .Values.defaultSettings.guaranteedEngineManagerCPU }}{{ end }}
{{ if not (kindIs "invalid" .Values.defaultSettings.guaranteedReplicaManagerCPU) }}guaranteed-replica-manager-cpu: {{ .Values.defaultSettings.guaranteedReplicaManagerCPU }}{{ end }}

View File

@ -91,14 +91,24 @@ spec:
{{- if .Values.longhornDriver.priorityClass }} {{- if .Values.longhornDriver.priorityClass }}
priorityClassName: {{ .Values.longhornDriver.priorityClass | quote }} priorityClassName: {{ .Values.longhornDriver.priorityClass | quote }}
{{- end }} {{- end }}
{{- if .Values.longhornDriver.tolerations }} {{- if or .Values.longhornDriver.tolerations .Values.global.cattle.windowsCluster.enabled }}
tolerations: 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 }} {{ toYaml .Values.longhornDriver.tolerations | indent 6 }}
{{- end }} {{- end }}
{{- if .Values.longhornDriver.nodeSelector }} {{- end }}
{{- if or .Values.longhornDriver.nodeSelector .Values.global.cattle.windowsCluster.enabled }}
nodeSelector: 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 }} {{ toYaml .Values.longhornDriver.nodeSelector | indent 8 }}
{{- end }} {{- end }}
{{- end }}
serviceAccountName: longhorn-service-account serviceAccountName: longhorn-service-account
securityContext: securityContext:
runAsUser: 0 runAsUser: 0

View File

@ -19,14 +19,26 @@ spec:
- name: longhorn-ui - name: longhorn-ui
image: {{ template "registry_url" . }}{{ .Values.image.longhorn.ui.repository }}:{{ .Values.image.longhorn.ui.tag }} image: {{ template "registry_url" . }}{{ .Values.image.longhorn.ui.repository }}:{{ .Values.image.longhorn.ui.tag }}
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
securityContext: volumeMounts:
runAsUser: 0 - name : nginx-cache
mountPath: /var/cache/nginx/
- name : nginx-config
mountPath: /var/config/nginx/
- name: var-run
mountPath: /var/run/
ports: ports:
- containerPort: 8000 - containerPort: 8000
name: http name: http
env: env:
- name: LONGHORN_MANAGER_IP - name: LONGHORN_MANAGER_IP
value: "http://longhorn-backend:9500" value: "http://longhorn-backend:9500"
volumes:
- emptyDir: {}
name: nginx-cache
- emptyDir: {}
name: nginx-config
- emptyDir: {}
name: var-run
{{- if .Values.privateRegistry.registrySecret }} {{- if .Values.privateRegistry.registrySecret }}
imagePullSecrets: imagePullSecrets:
- name: {{ .Values.privateRegistry.registrySecret }} - name: {{ .Values.privateRegistry.registrySecret }}
@ -34,14 +46,24 @@ spec:
{{- if .Values.longhornUI.priorityClass }} {{- if .Values.longhornUI.priorityClass }}
priorityClassName: {{ .Values.longhornUI.priorityClass | quote }} priorityClassName: {{ .Values.longhornUI.priorityClass | quote }}
{{- end }} {{- end }}
{{- if .Values.longhornUI.tolerations }} {{- if or .Values.longhornUI.tolerations .Values.global.cattle.windowsCluster.enabled }}
tolerations: 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 }} {{ toYaml .Values.longhornUI.tolerations | indent 6 }}
{{- end }} {{- end }}
{{- if .Values.longhornUI.nodeSelector }} {{- end }}
{{- if or .Values.longhornUI.nodeSelector .Values.global.cattle.windowsCluster.enabled }}
nodeSelector: 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 }} {{ toYaml .Values.longhornUI.nodeSelector | indent 8 }}
{{- end }} {{- end }}
{{- end }}
--- ---
kind: Service kind: Service
apiVersion: v1 apiVersion: v1

View File

@ -38,11 +38,21 @@ spec:
priorityClassName: {{ .Values.longhornManager.priorityClass | quote }} priorityClassName: {{ .Values.longhornManager.priorityClass | quote }}
{{- end }} {{- end }}
serviceAccountName: longhorn-service-account serviceAccountName: longhorn-service-account
{{- if .Values.longhornManager.tolerations }} {{- if or .Values.longhornManager.tolerations .Values.global.cattle.windowsCluster.enabled }}
tolerations: 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 }} {{ toYaml .Values.longhornManager.tolerations | indent 6 }}
{{- end }} {{- end }}
{{- if .Values.longhornManager.nodeSelector }} {{- end }}
{{- if or .Values.longhornManager.nodeSelector .Values.global.cattle.windowsCluster.enabled }}
nodeSelector: 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 }} {{ toYaml .Values.longhornManager.nodeSelector | indent 8 }}
{{- end }} {{- end }}
{{- end }}

View File

@ -4,3 +4,7 @@ metadata:
name: longhorn-service-account name: longhorn-service-account
namespace: {{ include "release_namespace" . }} namespace: {{ include "release_namespace" . }}
labels: {{- include "longhorn.labels" . | nindent 4 }} labels: {{- include "longhorn.labels" . | nindent 4 }}
{{- with .Values.serviceAccount.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}

View File

@ -4,7 +4,7 @@ kind: Service
metadata: metadata:
labels: {{- include "longhorn.labels" . | nindent 4 }} labels: {{- include "longhorn.labels" . | nindent 4 }}
name: longhorn-engine-manager name: longhorn-engine-manager
namespace: longhorn-system namespace: {{ include "release_namespace" . }}
spec: spec:
clusterIP: None clusterIP: None
selector: selector:
@ -16,7 +16,7 @@ kind: Service
metadata: metadata:
labels: {{- include "longhorn.labels" . | nindent 4 }} labels: {{- include "longhorn.labels" . | nindent 4 }}
name: longhorn-replica-manager name: longhorn-replica-manager
namespace: longhorn-system namespace: {{ include "release_namespace" . }}
spec: spec:
clusterIP: None clusterIP: None
selector: selector:

View File

@ -23,6 +23,9 @@ data:
{{- if .Values.persistence.defaultFsType }} {{- if .Values.persistence.defaultFsType }}
fsType: "{{ .Values.persistence.defaultFsType }}" fsType: "{{ .Values.persistence.defaultFsType }}"
{{- end }} {{- end }}
{{- if .Values.persistence.migratable }}
migratable: "{{ .Values.persistence.migratable }}"
{{- end }}
{{- if .Values.persistence.backingImage.enable }} {{- if .Values.persistence.backingImage.enable }}
backingImage: {{ .Values.persistence.backingImage.name }} backingImage: {{ .Values.persistence.backingImage.name }}
backingImageDataSourceType: {{ .Values.persistence.backingImage.dataSourceType }} backingImageDataSourceType: {{ .Values.persistence.backingImage.dataSourceType }}

View File

@ -39,11 +39,21 @@ spec:
priorityClassName: {{ .Values.longhornManager.priorityClass | quote }} priorityClassName: {{ .Values.longhornManager.priorityClass | quote }}
{{- end }} {{- end }}
serviceAccountName: longhorn-service-account serviceAccountName: longhorn-service-account
{{- if .Values.longhornManager.tolerations }} {{- if or .Values.longhornManager.tolerations .Values.global.cattle.windowsCluster.enabled }}
tolerations: 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 }} {{ toYaml .Values.longhornManager.tolerations | indent 6 }}
{{- end }} {{- end }}
{{- if .Values.longhornManager.nodeSelector }} {{- end }}
{{- if or .Values.longhornManager.nodeSelector .Values.global.cattle.windowsCluster.enabled }}
nodeSelector: 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 }} {{ toYaml .Values.longhornManager.nodeSelector | indent 8 }}
{{- end }} {{- end }}
{{- end }}

View File

@ -4,27 +4,43 @@
global: global:
cattle: cattle:
systemDefaultRegistry: "" 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: image:
longhorn: longhorn:
engine: engine:
repository: longhornio/longhorn-engine repository: longhornio/longhorn-engine
tag: v1.2.3 tag: v1.2.6
manager: manager:
repository: longhornio/longhorn-manager repository: longhornio/longhorn-manager
tag: v1.2.3 tag: v1.2.6
ui: ui:
repository: longhornio/longhorn-ui repository: longhornio/longhorn-ui
tag: v1.2.3 tag: v1.2.6
instanceManager: instanceManager:
repository: longhornio/longhorn-instance-manager repository: longhornio/longhorn-instance-manager
tag: v1_20211210 tag: v1_20220303_patch2
shareManager: shareManager:
repository: longhornio/longhorn-share-manager repository: longhornio/longhorn-share-manager
tag: v1_20211020 tag: v1_20211020_patch2
backingImageManager: backingImageManager:
repository: longhornio/backing-image-manager repository: longhornio/backing-image-manager
tag: v2_20210820 tag: v2_20221027
csi: csi:
attacher: attacher:
repository: longhornio/csi-attacher repository: longhornio/csi-attacher
@ -56,6 +72,7 @@ persistence:
defaultFsType: ext4 defaultFsType: ext4
defaultClassReplicaCount: 3 defaultClassReplicaCount: 3
reclaimPolicy: Delete reclaimPolicy: Delete
migratable: false
recurringJobSelector: recurringJobSelector:
enable: false enable: false
jobList: [] jobList: []
@ -88,6 +105,7 @@ defaultSettings:
defaultReplicaCount: ~ defaultReplicaCount: ~
defaultLonghornStaticStorageClass: ~ defaultLonghornStaticStorageClass: ~
backupstorePollInterval: ~ backupstorePollInterval: ~
failedBackupTTL: ~
taintToleration: ~ taintToleration: ~
systemManagedComponentsNodeSelector: ~ systemManagedComponentsNodeSelector: ~
priorityClass: ~ priorityClass: ~
@ -161,19 +179,6 @@ longhornUI:
# label-key1: "label-value1" # label-key1: "label-value1"
# label-key2: "label-value2" # label-key2: "label-value2"
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
#
ingress: ingress:
## Set to true to enable ingress record generation ## Set to true to enable ingress record generation
enabled: false enabled: false
@ -226,3 +231,7 @@ namespaceOverride: ""
# Annotations to add to the Longhorn Manager DaemonSet Pods. Optional. # Annotations to add to the Longhorn Manager DaemonSet Pods. Optional.
annotations: {} annotations: {}
serviceAccount:
# Annotations to add to the service account
annotations: {}

View File

@ -46,15 +46,15 @@ spec:
containers: containers:
- name: minio - name: minio
image: longhornio/minio:RELEASE.2020-10-18T21-54-12Z image: minio/minio:RELEASE.2022-02-01T18-00-14Z
command: ["sh", "-c", "mkdir -p /storage/backupbucket && mkdir -p /root/.minio/certs && ln -s /root/certs/private.key /root/.minio/certs/private.key && ln -s /root/certs/public.crt /root/.minio/certs/public.crt && exec /usr/bin/minio server /storage"] command: ["sh", "-c", "mkdir -p /storage/backupbucket && mkdir -p /root/.minio/certs && ln -s /root/certs/private.key /root/.minio/certs/private.key && ln -s /root/certs/public.crt /root/.minio/certs/public.crt && exec minio server /storage"]
env: env:
- name: MINIO_ACCESS_KEY - name: MINIO_ROOT_USER
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: minio-secret name: minio-secret
key: AWS_ACCESS_KEY_ID key: AWS_ACCESS_KEY_ID
- name: MINIO_SECRET_KEY - name: MINIO_ROOT_PASSWORD
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: minio-secret name: minio-secret

View File

@ -3,9 +3,9 @@ longhornio/csi-provisioner:v2.1.2
longhornio/csi-resizer:v1.2.0 longhornio/csi-resizer:v1.2.0
longhornio/csi-snapshotter:v3.0.3 longhornio/csi-snapshotter:v3.0.3
longhornio/csi-node-driver-registrar:v2.3.0 longhornio/csi-node-driver-registrar:v2.3.0
longhornio/backing-image-manager:v2_20210820 longhornio/backing-image-manager:v2_20221027
longhornio/longhorn-engine:v1.2.3 longhornio/longhorn-engine:v1.2.6
longhornio/longhorn-instance-manager:v1_20211210 longhornio/longhorn-instance-manager:v1_20220303_patch2
longhornio/longhorn-manager:v1.2.3 longhornio/longhorn-manager:v1.2.6
longhornio/longhorn-share-manager:v1_20211020 longhornio/longhorn-share-manager:v1_20211020_patch2
longhornio/longhorn-ui:v1.2.3 longhornio/longhorn-ui:v1.2.6

View File

@ -306,7 +306,7 @@ spec:
jsonPath: .spec.image jsonPath: .spec.image
- name: RefCount - name: RefCount
type: integer type: integer
description: Number of volumes are using the engine image description: Number of resources are using the engine image
jsonPath: .status.refCount jsonPath: .status.refCount
- name: BuildDate - name: BuildDate
type: date type: date
@ -838,42 +838,43 @@ metadata:
namespace: longhorn-system namespace: longhorn-system
data: data:
default-setting.yaml: |- default-setting.yaml: |-
backup-target: #backup-target:
backup-target-credential-secret: #backup-target-credential-secret:
allow-recurring-job-while-volume-detached: #allow-recurring-job-while-volume-detached:
create-default-disk-labeled-nodes: #create-default-disk-labeled-nodes:
default-data-path: #default-data-path:
replica-soft-anti-affinity: #replica-soft-anti-affinity:
replica-auto-balance: #replica-auto-balance:
storage-over-provisioning-percentage: #storage-over-provisioning-percentage:
storage-minimal-available-percentage: #storage-minimal-available-percentage:
upgrade-checker: #upgrade-checker:
default-replica-count: #default-replica-count:
default-data-locality: #default-data-locality:
default-longhorn-static-storage-class: #default-longhorn-static-storage-class:
backupstore-poll-interval: #backupstore-poll-interval:
taint-toleration: #taint-toleration:
system-managed-components-node-selector: #system-managed-components-node-selector:
priority-class: #priority-class:
auto-salvage: #auto-salvage:
auto-delete-pod-when-volume-detached-unexpectedly: #auto-delete-pod-when-volume-detached-unexpectedly:
disable-scheduling-on-cordoned-node: #disable-scheduling-on-cordoned-node:
replica-zone-soft-anti-affinity: #replica-zone-soft-anti-affinity:
node-down-pod-deletion-policy: #node-down-pod-deletion-policy:
allow-node-drain-with-last-healthy-replica: #allow-node-drain-with-last-healthy-replica:
mkfs-ext4-parameters: #mkfs-ext4-parameters:
disable-replica-rebuild: #disable-replica-rebuild:
replica-replenishment-wait-interval: #replica-replenishment-wait-interval:
concurrent-replica-rebuild-per-node-limit: #concurrent-replica-rebuild-per-node-limit:
disable-revision-counter: #disable-revision-counter:
system-managed-pods-image-pull-policy: #system-managed-pods-image-pull-policy:
allow-volume-creation-with-degraded-availability: #allow-volume-creation-with-degraded-availability:
auto-cleanup-system-generated-snapshot: #auto-cleanup-system-generated-snapshot:
concurrent-automatic-engine-upgrade-per-node-limit: #concurrent-automatic-engine-upgrade-per-node-limit:
backing-image-cleanup-wait-interval: #backing-image-cleanup-wait-interval:
backing-image-recovery-wait-interval: #backing-image-recovery-wait-interval:
guaranteed-engine-manager-cpu: #guaranteed-engine-manager-cpu:
guaranteed-replica-manager-cpu: #guaranteed-replica-manager-cpu:
#failed-backup-ttl:
--- ---
apiVersion: policy/v1beta1 apiVersion: policy/v1beta1
kind: PodSecurityPolicy kind: PodSecurityPolicy
@ -984,7 +985,7 @@ spec:
spec: spec:
containers: containers:
- name: longhorn-manager - name: longhorn-manager
image: longhornio/longhorn-manager:v1.2.3 image: longhornio/longhorn-manager:v1.2.6
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
securityContext: securityContext:
privileged: true privileged: true
@ -993,15 +994,15 @@ spec:
- -d - -d
- daemon - daemon
- --engine-image - --engine-image
- longhornio/longhorn-engine:v1.2.3 - longhornio/longhorn-engine:v1.2.6
- --instance-manager-image - --instance-manager-image
- longhornio/longhorn-instance-manager:v1_20211210 - longhornio/longhorn-instance-manager:v1_20220303_patch2
- --share-manager-image - --share-manager-image
- longhornio/longhorn-share-manager:v1_20211020 - longhornio/longhorn-share-manager:v1_20211020_patch2
- --backing-image-manager-image - --backing-image-manager-image
- longhornio/backing-image-manager:v2_20210820 - longhornio/backing-image-manager:v2_20221027
- --manager-image - --manager-image
- longhornio/longhorn-manager:v1.2.3 - longhornio/longhorn-manager:v1.2.6
- --service-account - --service-account
- longhorn-service-account - longhorn-service-account
ports: ports:
@ -1018,8 +1019,6 @@ spec:
- name: longhorn - name: longhorn
mountPath: /var/lib/longhorn/ mountPath: /var/lib/longhorn/
mountPropagation: Bidirectional mountPropagation: Bidirectional
- name: longhorn-default-setting
mountPath: /var/lib/longhorn-setting/
env: env:
- name: POD_NAMESPACE - name: POD_NAMESPACE
valueFrom: valueFrom:
@ -1033,9 +1032,6 @@ spec:
valueFrom: valueFrom:
fieldRef: fieldRef:
fieldPath: spec.nodeName fieldPath: spec.nodeName
# Should be: mount path of the volume longhorn-default-setting + the key of the configmap data in 04-default-setting.yaml
- name: DEFAULT_SETTING_PATH
value: /var/lib/longhorn-setting/default-setting.yaml
volumes: volumes:
- name: dev - name: dev
hostPath: hostPath:
@ -1046,9 +1042,6 @@ spec:
- name: longhorn - name: longhorn
hostPath: hostPath:
path: /var/lib/longhorn/ path: /var/lib/longhorn/
- name: longhorn-default-setting
configMap:
name: longhorn-default-setting
# imagePullSecrets: # imagePullSecrets:
# - name: "" # - name: ""
# priorityClassName: # priorityClassName:
@ -1123,16 +1116,28 @@ spec:
spec: spec:
containers: containers:
- name: longhorn-ui - name: longhorn-ui
image: longhornio/longhorn-ui:v1.2.3 image: longhornio/longhorn-ui:v1.2.6
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
securityContext: volumeMounts:
runAsUser: 0 - name : nginx-cache
mountPath: /var/cache/nginx/
- name : nginx-config
mountPath: /var/config/nginx/
- name: var-run
mountPath: /var/run/
ports: ports:
- containerPort: 8000 - containerPort: 8000
name: http name: http
env: env:
- name: LONGHORN_MANAGER_IP - name: LONGHORN_MANAGER_IP
value: "http://longhorn-backend:9500" value: "http://longhorn-backend:9500"
volumes:
- emptyDir: {}
name: nginx-cache
- emptyDir: {}
name: nginx-config
- emptyDir: {}
name: var-run
# imagePullSecrets: # imagePullSecrets:
# - name: "" # - name: ""
# priorityClassName: # priorityClassName:
@ -1179,18 +1184,18 @@ spec:
spec: spec:
initContainers: initContainers:
- name: wait-longhorn-manager - name: wait-longhorn-manager
image: longhornio/longhorn-manager:v1.2.3 image: longhornio/longhorn-manager:v1.2.6
command: ['sh', '-c', 'while [ $(curl -m 1 -s -o /dev/null -w "%{http_code}" http://longhorn-backend:9500/v1) != "200" ]; do echo waiting; sleep 2; done'] command: ['sh', '-c', 'while [ $(curl -m 1 -s -o /dev/null -w "%{http_code}" http://longhorn-backend:9500/v1) != "200" ]; do echo waiting; sleep 2; done']
containers: containers:
- name: longhorn-driver-deployer - name: longhorn-driver-deployer
image: longhornio/longhorn-manager:v1.2.3 image: longhornio/longhorn-manager:v1.2.6
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
command: command:
- longhorn-manager - longhorn-manager
- -d - -d
- deploy-driver - deploy-driver
- --manager-image - --manager-image
- longhornio/longhorn-manager:v1.2.3 - longhornio/longhorn-manager:v1.2.6
- --manager-url - --manager-url
- http://longhorn-backend:9500/v1 - http://longhorn-backend:9500/v1
env: env:

View File

@ -0,0 +1,110 @@
# Failed Backup Clean Up
## Summary
Longhorn will leave the failed backups behind and will not delete the backups automatically either until the backup target is removed. Failed backup cleanup will be occurred when making a backup to remote backup target failed. This LEP will trigger the deletion of failed backups automatically.
### Related Issues
[[IMPROVEMENT] Support failed/obsolete orphaned backup cleanup](https://github.com/longhorn/longhorn/issues/3898)
## Motivation
### Goals
- Support the auto-deletion of failed backups that exceeded the TTL.
- Support the global auto-deletion option of failed backups cleanup for users.
- The process should not be stuck in the reconciliation of the controllers.
### Non-goals [optional]
- Clean up unknown files or directories on the remote backup target.
## Proposal
1. The `backup_volume_controller` will be responsible for deleting Backup CR when there is a backup which state is in `Error` or `Unknown`.
The reconciliation procedure of the `backup_volume_controller` gets the latest failed backups from the datastore and delete the failed backups.
```text
queue ┌───────────────┐
┌┐ ┌┐ ┌┐ │ │
... ││ ││ ││ ──────► │ syncHandler() |
└┘ └┘ └┘ │ │
└───────┬───────┘
┌──────────▼───────────┐
│ │
│ reconcile() |
│ │
└──────────┬───────────┘
┌──────────▼───────────┐
│ │
│ get failed backups │
│ |
| then delete them │
│ │
└──────────────────────┘
```
### User Stories
When a user or recurring job tries to make a backup and store it in the remote backup target, many situations will cause the backup procedure failed. In some cases, there will be some failed backups still staying in the Longhorn system and this kind of backups are not handled by the Longhorn system until user removes the backup target. Or users can manage the failed backups via Longhorn GUI or command line tools manually.
After the enhancement, Longhorn can delete the failed backups automatically after enabling auto-deletion.
### User Experience In Detail
- Via Longhorn GUI
- Users can be aware of that backup was failed if auto-deletion is disabled.
- Users can check the event log to understand why the backup failed and deleted.
- Via `kubectl`
- Users can list the failed backups by `kubectl -n longhorn-system get backups` if auto-deletion is disabled.
## Design
### Implementation Overview
**Settings**
- Add setting `failed-backup-ttl`. Default value is `1440` minutes and set to `0` to disable the auto-deletion.
**Failed Backup**
- Backups in the state `longhorn.BackupStateError` or `longhorn.BackupStateUnknown`.
**Backup Controller**
- Start the monitor and sync the backup status with the monitor in each reconcile loop.
- Update the backup status.
- Trigger `backup_volume_controller` to delete the failed backups.
**Backup Volume controller**
- Reconcile loop usually is triggered after backupstore polling which is controlled by **Backupstore Poll Interval** setting.
- Start to get all backups in each reconcile loop
- Tell failed backups from all backups and try to delete failed backups by default.
- Update the backup volume CR status.
### Test plan
**Integration tests**
- `backups` CRs with `Error` or `Unknown` state will be removed by `backup_volume_controller` triggered by backupstore polling when the `backup_monitor` detects the backup failed.
- `backups` CRs with `Error` or `Unknown` state will not be handled if the auto-deletion is disabled.
## Note [optional]
### Why not leverage the current orphan framework
1. We already have the backup CR to handle the backup resources and failed backup is not like orphaned replica which is not owned by any volume at the beginning.
2. Cascading deletion of orphaned CR and backup CR would be more complicated than we just handle the failed backups immediately when backup procedure failed. Both in this LEP or orphan framework we would delete the failed backups by `backup_volume_controller`.
3. Listing orphaned backups and failed backups on both two UI pages `Orphaned Data` and `Backup` might be a bit confusing for users. Deleting items manually on either of two pages would be involved in what it mentioned at statement 2.

View File

@ -16,7 +16,7 @@ spec:
--output-file '/tmp/restore/<OUTPUT_FILE>' --output-file '/tmp/restore/<OUTPUT_FILE>'
--output-format <OUTPUT_FORMAT> --output-format <OUTPUT_FORMAT>
# the version of longhorn engine should be v0.4.1 or higher # the version of longhorn engine should be v0.4.1 or higher
image: rancher/longhorn-engine:v0.4.1 image: longhornio/longhorn-engine:<LONGHORN_VERSION>
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
securityContext: securityContext:
privileged: true privileged: true

View File

@ -1,18 +1,131 @@
#!/bin/bash #!/bin/bash
dependencies() { export RED='\x1b[0;31m'
export GREEN='\x1b[38;5;22m'
export CYAN='\x1b[36m'
export YELLOW='\x1b[33m'
export NO_COLOR='\x1b[0m'
if [ -z "${LOG_TITLE}" ]; then
LOG_TITLE=''
fi
if [ -z "${LOG_LEVEL}" ]; then
LOG_LEVEL="INFO"
fi
debug() {
if [[ "${LOG_LEVEL}" == "DEBUG" ]]; then
local log_title
if [ -n "${LOG_TITLE}" ]; then
log_title="(${LOG_TITLE})"
else
log_title=''
fi
echo -e "${GREEN}[DEBUG]${log_title} ${NO_COLOR}$1"
fi
}
info() {
if [[ "${LOG_LEVEL}" == "DEBUG" ]] ||\
[[ "${LOG_LEVEL}" == "INFO" ]]; then
local log_title
if [ -n "${LOG_TITLE}" ]; then
log_title="(${LOG_TITLE})"
else
log_title=''
fi
echo -e "${CYAN}[INFO] ${log_title} ${NO_COLOR}$1"
fi
}
warn() {
if [[ "${LOG_LEVEL}" == "DEBUG" ]] ||\
[[ "${LOG_LEVEL}" == "INFO" ]] ||\
[[ "${LOG_LEVEL}" == "WARN" ]]; then
local log_title
if [ -n "${LOG_TITLE}" ]; then
log_title="(${LOG_TITLE})"
else
log_title=''
fi
echo -e "${YELLOW}[WARN] ${log_title} ${NO_COLOR}$1"
fi
}
error() {
if [[ "${LOG_LEVEL}" == "DEBUG" ]] ||\
[[ "${LOG_LEVEL}" == "INFO" ]] ||\
[[ "${LOG_LEVEL}" == "WARN" ]] ||\
[[ "${LOG_LEVEL}" == "ERROR" ]]; then
local log_title
if [ -n "${LOG_TITLE}" ]; then
log_title="(${LOG_TITLE})"
else
log_title=''
fi
echo -e "${RED}[ERROR]${log_title} ${NO_COLOR}$1"
fi
}
detect_node_os()
{
local pod="$1"
OS=`kubectl exec -i $pod -- nsenter --mount=/proc/1/ns/mnt -- bash -c 'grep -E "^ID_LIKE=" /etc/os-release | cut -d= -f2'`
if [[ -z "${OS}" ]]; then
OS=`kubectl exec -i $pod -- nsenter --mount=/proc/1/ns/mnt -- bash -c 'grep -E "^ID=" /etc/os-release | cut -d= -f2'`
fi
echo "$OS"
}
set_packages_and_check_cmd()
{
case $OS in
*"debian"* | *"ubuntu"* )
CHECK_CMD='dpkg -l | grep -w'
PACKAGES=(nfs-common open-iscsi)
;;
*"centos"* | *"fedora"* | *"rocky"* | *"ol"* )
CHECK_CMD='rpm -q'
PACKAGES=(nfs-utils iscsi-initiator-utils)
;;
*"suse"* )
CHECK_CMD='rpm -q'
PACKAGES=(nfs-client open-iscsi)
;;
*"arch"* )
CHECK_CMD='pacman -Q'
PACKAGES=(nfs-utils open-iscsi)
;;
*"gentoo"* )
CHECK_CMD='qlist -I'
PACKAGES=(net-fs/nfs-utils sys-block/open-iscsi)
;;
*)
CHECK_CMD=''
PACKAGES=()
warn "Stop the environment check because '$OS' is not supported in the environment check script."
exit 1
;;
esac
}
check_dependencies() {
local targets=($@) local targets=($@)
local allFound=true local allFound=true
for ((i=0; i<${#targets[@]}; i++)); do for ((i=0; i<${#targets[@]}; i++)); do
local target=${targets[$i]} local target=${targets[$i]}
if [ "$(which $target)" == "" ]; then if [ "$(which $target)" == "" ]; then
allFound=false allFound=false
echo Not found: $target error "Not found: $target"
fi fi
done done
if [ "$allFound" == "false" ]; then if [ "$allFound" == "false" ]; then
echo "Please install missing dependencies." error "Please install missing dependencies."
exit 2 exit 2
else
info "Required dependencies are installed."
fi fi
} }
@ -33,9 +146,10 @@ spec:
labels: labels:
app: longhorn-environment-check app: longhorn-environment-check
spec: spec:
hostPID: true
containers: containers:
- name: longhorn-environment-check - name: longhorn-environment-check
image: busybox image: alpine:3.12
args: ["/bin/sh", "-c", "sleep 1000000000"] args: ["/bin/sh", "-c", "sleep 1000000000"]
volumeMounts: volumeMounts:
- name: mountpoint - name: mountpoint
@ -48,14 +162,14 @@ spec:
hostPath: hostPath:
path: /tmp/longhorn-environment-check path: /tmp/longhorn-environment-check
EOF EOF
kubectl create -f $TEMP_DIR/environment_check.yaml kubectl create -f $TEMP_DIR/environment_check.yaml > /dev/null
} }
cleanup() { cleanup() {
echo "cleaning up..." info "Cleaning up longhorn-environment-check pods..."
kubectl delete -f $TEMP_DIR/environment_check.yaml kubectl delete -f $TEMP_DIR/environment_check.yaml > /dev/null
rm -rf $TEMP_DIR rm -rf $TEMP_DIR
echo "clean up complete" info "Cleanup completed."
} }
wait_ds_ready() { wait_ds_ready() {
@ -65,16 +179,16 @@ wait_ds_ready() {
local desiredNumberScheduled=$(echo $ds | jq .status.desiredNumberScheduled) local desiredNumberScheduled=$(echo $ds | jq .status.desiredNumberScheduled)
if [ "$desiredNumberScheduled" == "$numberReady" ] && [ "$desiredNumberScheduled" != "0" ]; then if [ "$desiredNumberScheduled" == "$numberReady" ] && [ "$desiredNumberScheduled" != "0" ]; then
echo "all pods ready ($numberReady/$desiredNumberScheduled)" info "All longhorn-environment-check pods are ready ($numberReady/$desiredNumberScheduled)."
return return
fi fi
echo "waiting for pods to become ready ($numberReady/$desiredNumberScheduled)" info "Waiting for longhorn-environment-check pods to become ready ($numberReady/$desiredNumberScheduled)..."
sleep 3 sleep 3
done done
} }
validate_ds() { check_mount_propagation() {
local allSupported=true local allSupported=true
local pods=$(kubectl -l app=longhorn-environment-check get po -o json) local pods=$(kubectl -l app=longhorn-environment-check get po -o json)
@ -88,25 +202,101 @@ validate_ds() {
if [ "$mountPropagation" != "Bidirectional" ]; then if [ "$mountPropagation" != "Bidirectional" ]; then
allSupported=false allSupported=false
echo "node $nodeName: MountPropagation DISABLED" error "node $nodeName: MountPropagation is disabled"
fi fi
done done
if [ "$allSupported" != "true" ]; then if [ "$allSupported" != "true" ]; then
echo error "MountPropagation is disabled on at least one node. As a result, CSI driver and Base image cannot be supported."
echo " MountPropagation is disabled on at least one node."
echo " As a result, CSI driver and Base image cannot be supported."
echo
exit 1 exit 1
else else
echo -e "\n MountPropagation is enabled!\n" info "MountPropagation is enabled."
fi fi
} }
dependencies kubectl jq mktemp check_package_installed() {
local pods=$(kubectl get pods -o name | grep longhorn-environment-check)
local allFound=true
for pod in ${pods}; do
OS=`detect_node_os $pod`
if [ x"$OS" == x"" ]; then
error "Unable to detect OS on node $node."
exit 2
fi
set_packages_and_check_cmd "$OS"
for ((i=0; i<${#PACKAGES[@]}; i++)); do
local package=${PACKAGES[$i]}
kubectl exec -i $pod -- nsenter --mount=/proc/1/ns/mnt -- timeout 30 bash -c "$CHECK_CMD $package" > /dev/null 2>&1
if [ $? != 0 ]; then
allFound=false
node=`kubectl get ${pod} --no-headers -o=custom-columns=:.spec.nodeName`
error "$package is not found in $node."
fi
done
done
if [ "$allFound" == "false" ]; then
error "Please install missing packages."
exit 2
else
info "Required packages are installed."
fi
}
check_multipathd() {
local pods=$(kubectl get pods -o name | grep longhorn-environment-check)
local allNotFound=true
for pod in ${pods}; do
kubectl exec -t $pod -- nsenter --mount=/proc/1/ns/mnt -- bash -c "systemctl status --no-pager multipathd.service" > /dev/null 2>&1
if [ $? = 0 ]; then
allNotFound=false
node=`kubectl get ${pod} --no-headers -o=custom-columns=:.spec.nodeName`
warn "multipathd is running on $node."
fi
done
if [ "$allNotFound" == "false" ]; then
warn "multipathd would probably result in the Longhorn volume mount failure. Please refer to https://longhorn.io/kb/troubleshooting-volume-with-multipath for more information."
fi
}
check_iscsid() {
local pods=$(kubectl get pods -o name | grep longhorn-environment-check)
local allFound=true
for pod in ${pods}; do
kubectl exec -t $pod -- nsenter --mount=/proc/1/ns/mnt -- bash -c "systemctl status --no-pager iscsid.service" > /dev/null 2>&1
if [ $? != 0 ]; then
allFound=false
node=`kubectl get ${pod} --no-headers -o=custom-columns=:.spec.nodeName`
error "iscsid is not running on $node."
fi
done
if [ "$allFound" == "false" ]; then
exit 2
fi
}
DEPENDENCIES=(kubectl jq mktemp)
check_dependencies ${DEPENDENCIES[@]}
TEMP_DIR=$(mktemp -d) TEMP_DIR=$(mktemp -d)
trap cleanup EXIT trap cleanup EXIT
create_ds create_ds
wait_ds_ready wait_ds_ready
validate_ds check_package_installed
check_iscsid
check_multipathd
check_mount_propagation
exit 0 exit 0

104
scripts/restore-backup-to-file.sh Executable file
View File

@ -0,0 +1,104 @@
#!/bin/bash
export RED='\x1b[0;31m'
export NO_COLOR='\x1b[0m'
usage () {
echo "USAGE: $0 --aws-access-key <your_aws_access_key> \ "
echo " --aws-secret-access-key <your_aws_secret_access_key> \ "
echo " --backup-url s3://backupbucket@ap-northeast-1/backupstore?backup=<backup_name>&volume=<volume_name> \ "
echo " --output-file volume.raw \ "
echo " --output-format raw \ "
echo " --version <longhorn_version>"
echo " --backing-file <backing_file_path>"
echo "Restore a Longhorn backup to a raw image or a qcow2 image."
echo ""
echo " -u, --backup-url (Required) Backups S3/NFS URL. e.g., s3://backupbucket@us-east-1/backupstore?backup=backup-bd326da2c4414b02&volume=volumeexamplename"
echo " -o, --output-file (Required) Output file, e.g., /tmp/restore/volume.raw"
echo " -f, --output-format (Required) Output file format, e.g., raw or qcow2"
echo " -v, --version (Required) Longhorn version, e.g., v1.3.2"
echo " --aws-access-key (Optional) AWS credentials access key"
echo " --aws-secret-access-key (Optional) AWS credentials access secret key"
echo " -b, --backing-file (Optional) backing image. e.g., /tmp/backingfile.qcow2"
echo " -h, --help Usage message"
}
error_invalid_params() {
echo -e "${RED}[ERROR]Invalid params. Check the required params.${NO_COLOR}"
usage
exit 1
}
while [[ "$#" -gt 0 ]]; do
key="$1"
case $key in
--aws-access-key)
aws_access_key="$2"
shift # past argument
shift # past value
;;
--aws-secret-access-key)
aws_secret_access_key="$2"
shift # past argument
shift # past value
;;
-u|--backup-url)
backup_url="$2"
shift # past argument
shift # past value
;;
-o|--output-file)
output_file="$2"
shift # past argument
shift # past value
;;
-f|--output-format)
output_format="$2"
shift # past argument
shift # past value
;;
-b|--backing-file)
backing_file="$2"
shift # past argument
shift # past value
;;
-v|--version)
version="$2"
shift # past argument
shift # past value
;;
-h|--help)
usage
exit 0
shift
;;
*)
error_invalid_params
;;
esac
done
# Check the required parameters exits
if [ -z "${backup_url}" ] || [ -z "${output_file}" ] || [ -z "${output_format}" ] || [ -z "${version}" ]; then
error_invalid_params
fi
if [[ "${backup_url}" =~ ^[Ss]3 ]]; then
if [ -z "${aws_access_key}" ] || [ -z "${aws_secret_access_key}" ]; then
error_invalid_params
fi
fi
# Compose the docker arguments
if [[ "${backup_url}" =~ ^[Ss]3 ]]; then
CUSTOMIZED_ARGS="-e AWS_ACCESS_KEY_ID="${aws_access_key}" -e AWS_SECRET_ACCESS_KEY="${aws_secret_access_key}" "
else
CUSTOMIZED_ARGS="--cap-add SYS_ADMIN --security-opt apparmor:unconfined"
fi
# Start restoring a backup to an image file.
docker run ${CUSTOMIZED_ARGS} -v /tmp/restore:/tmp/restore \
longhornio/longhorn-engine:"${version}" longhorn backup \
restore-to-file ""${backup_url}"" \
--output-file "/tmp/restore/${output_file}" \
--output-format "${output_format}" \
--backing-file "${backing_file}"

View File

@ -61,7 +61,7 @@ rules:
resources: ["priorityclasses"] resources: ["priorityclasses"]
verbs: ["watch", "list"] verbs: ["watch", "list"]
- apiGroups: ["storage.k8s.io"] - apiGroups: ["storage.k8s.io"]
resources: ["csidrivers", "storageclasses"] resources: ["csidrivers", "storageclasses", "volumeattachments"]
verbs: ["*"] verbs: ["*"]
- apiGroups: ["longhorn.io"] - apiGroups: ["longhorn.io"]
resources: ["volumes", "engines", "replicas", "settings", "engineimages", "nodes", "instancemanagers", "sharemanagers", "backingimages", "backingimagemanagers", "backingimagedatasources", "backuptargets", "backupvolumes", "backups", "recurringjobs"] resources: ["volumes", "engines", "replicas", "settings", "engineimages", "nodes", "instancemanagers", "sharemanagers", "backingimages", "backingimagemanagers", "backingimagedatasources", "backuptargets", "backupvolumes", "backups", "recurringjobs"]
@ -101,7 +101,7 @@ spec:
spec: spec:
containers: containers:
- name: longhorn-uninstall - name: longhorn-uninstall
image: longhornio/longhorn-manager:v1.2.3 image: longhornio/longhorn-manager:v1.2.6
imagePullPolicy: Always imagePullPolicy: Always
securityContext: securityContext:
privileged: true privileged: true