aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chrislusf@users.noreply.github.com>2020-10-25 09:52:42 -0700
committerGitHub <noreply@github.com>2020-10-25 09:52:42 -0700
commitbc11d91892dd9fb375d55895547aea1c13adb506 (patch)
treebc47dce70476a8110684623c647e10db790012e1
parent10a4a628e9305c49eb14c45fcc6b414b47b6a8e5 (diff)
parent186e42345e210bc36f07ca51cdadcdaff2fc672c (diff)
downloadseaweedfs-bc11d91892dd9fb375d55895547aea1c13adb506.tar.xz
seaweedfs-bc11d91892dd9fb375d55895547aea1c13adb506.zip
Merge pull request #1561 from kmlebedev/k8s_cronjob
K8s cronjob
-rw-r--r--k8s/seaweedfs/templates/_helpers.tpl14
-rw-r--r--k8s/seaweedfs/templates/cronjob.yaml54
-rw-r--r--k8s/seaweedfs/values.yaml13
3 files changed, 81 insertions, 0 deletions
diff --git a/k8s/seaweedfs/templates/_helpers.tpl b/k8s/seaweedfs/templates/_helpers.tpl
index 04a782f8b..44d480e66 100644
--- a/k8s/seaweedfs/templates/_helpers.tpl
+++ b/k8s/seaweedfs/templates/_helpers.tpl
@@ -111,4 +111,18 @@ Inject extra environment vars in the format key:value, if populated
{{- $tag := .Values.global.imageTag | toString -}}
{{- printf "%s%s%s:%s" $registryName $repositoryName $name $tag -}}
{{- end -}}
+{{- end -}}
+
+{{/* Return the proper cronjob image */}}
+{{- define "cronjob.image" -}}
+{{- if .Values.cronjob.imageOverride -}}
+{{- $imageOverride := .Values.cronjob.imageOverride -}}
+{{- printf "%s" $imageOverride -}}
+{{- else -}}
+{{- $registryName := default .Values.image.registry .Values.global.localRegistry | toString -}}
+{{- $repositoryName := .Values.image.repository | toString -}}
+{{- $name := .Values.global.imageName | toString -}}
+{{- $tag := .Values.global.imageTag | toString -}}
+{{- printf "%s%s%s:%s" $registryName $repositoryName $name $tag -}}
+{{- end -}}
{{- end -}} \ No newline at end of file
diff --git a/k8s/seaweedfs/templates/cronjob.yaml b/k8s/seaweedfs/templates/cronjob.yaml
new file mode 100644
index 000000000..ad4406d4f
--- /dev/null
+++ b/k8s/seaweedfs/templates/cronjob.yaml
@@ -0,0 +1,54 @@
+{{- if .Values.cronjob }}
+{{- if .Values.cronjob.enabled }}
+apiVersion: batch/v1beta1
+kind: CronJob
+metadata:
+ name: {{ include "seaweedfs.fullname" . }}-cronjob
+spec:
+ schedule: "{{ .Values.cronjob.schedule }}"
+ concurrencyPolicy: Forbid
+ failedJobsHistoryLimit: 2
+ successfulJobsHistoryLimit: 2
+ jobTemplate:
+ spec:
+ backoffLimit: 2
+ template:
+ spec:
+ {{- with .Values.cronjob.nodeSelector }}
+ nodeSelector:
+ {{- toYaml . | nindent 12 }}
+ {{- end }}
+ {{- with .Values.cronjob.tolerations }}
+ tolerations:
+ {{- toYaml . | nindent 12 }}
+ {{- end }}
+ restartPolicy: OnFailure
+ containers:
+ - name: shell
+ image: {{ template "cronjob.image" . }}
+ imagePullPolicy: {{ default "IfNotPresent" .Values.global.imagePullPolicy }}
+ resources:
+ {{- toYaml .Values.cronjob.resources| nindent 16 }}
+ command:
+ - sh
+ - -c
+ - |
+ set -ex
+ echo -e "lock\n\
+ volume.balance -force\
+ {{ if .Values.volume.dataCenter }} -dataCenter {{ .Values.volume.dataCenter }}{{ end }}\
+ {{ if .Values.cronjob.collection }} -collection {{ .Values.cronjob.collection }}{{ end }}\n\
+ volume.fix.replication\nunlock\n" | \
+ /usr/bin/weed shell \
+ {{- if .Values.cronjob.master }}
+ -master {{ .Values.cronjob.master }} \
+ {{- else }}
+ -master {{ template "seaweedfs.name" . }}-master.{{ .Release.Namespace }}.svc:{{ .Values.master.port }} \
+ {{- end }}
+ {{- if .Values.cronjob.filer }}
+ -filer {{ .Values.cronjob.filer }}
+ {{- else }}
+ -filer {{ template "seaweedfs.name" . }}-filer.{{ .Release.Namespace }}.svc:{{ .Values.filer.port }}
+ {{- end }}
+{{- end }}
+{{- end }} \ No newline at end of file
diff --git a/k8s/seaweedfs/values.yaml b/k8s/seaweedfs/values.yaml
index 35ce49f2e..bf814ad14 100644
--- a/k8s/seaweedfs/values.yaml
+++ b/k8s/seaweedfs/values.yaml
@@ -347,6 +347,19 @@ s3:
# ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
priorityClassName: ""
+cronjob:
+ enabled: false
+ schedule: "*/7 * * * *"
+ resources: null
+ # balance all volumes among volume servers
+ # ALL|EACH_COLLECTION|<collection_name>
+ collection: ""
+ master: ""
+ filer: ""
+ tolerations: ""
+ nodeSelector: |
+ sw-backend: "true"
+
certificates:
commonName: "SeaweedFS CA"
ipAddresses: []