mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2025-08-20 04:46:42 +08:00

* refactor: move helm templates into respective service folders * fix: update template path reference in filer-statefulset for s3-secret
118 lines
4.1 KiB
YAML
118 lines
4.1 KiB
YAML
{{- $seaweedfsName := include "seaweedfs.name" $ }}
|
|
{{- $volumes := deepCopy .Values.volumes | mergeOverwrite (dict "" .Values.volume) }}
|
|
|
|
|
|
{{- if .Values.volume.resizeHook.enabled }}
|
|
{{- $commands := list }}
|
|
{{- range $vname, $volume := $volumes }}
|
|
{{- $volumeName := trimSuffix "-" (printf "volume-%s" $vname) }}
|
|
{{- $volume := mergeOverwrite (deepCopy $.Values.volume) (dict "enabled" true) $volume }}
|
|
|
|
{{- if $volume.enabled }}
|
|
{{- $replicas := int $volume.replicas -}}
|
|
{{- $statefulsetName := printf "%s-%s" $seaweedfsName $volumeName -}}
|
|
{{- $statefulset := (lookup "apps/v1" "StatefulSet" $.Release.Namespace $statefulsetName) -}}
|
|
|
|
{{/* Check for changes in volumeClaimTemplates */}}
|
|
{{- if $statefulset }}
|
|
{{- range $dir := $volume.dataDirs }}
|
|
{{- if eq .type "persistentVolumeClaim" }}
|
|
{{- $desiredSize := .size }}
|
|
{{- range $statefulset.spec.volumeClaimTemplates }}
|
|
{{- if and (eq .metadata.name $dir.name) (ne .spec.resources.requests.storage $desiredSize) }}
|
|
{{- $commands = append $commands (printf "kubectl delete statefulset %s --cascade=orphan" $statefulsetName) }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- end }}
|
|
|
|
{{/* Check for the need for patching existing PVCs */}}
|
|
{{- range $dir := $volume.dataDirs }}
|
|
{{- if eq .type "persistentVolumeClaim" }}
|
|
{{- $desiredSize := .size }}
|
|
{{- range $i, $e := until $replicas }}
|
|
{{- $pvcName := printf "%s-%s-%s-%d" $dir.name $seaweedfsName $volumeName $e }}
|
|
{{- $currentPVC := (lookup "v1" "PersistentVolumeClaim" $.Release.Namespace $pvcName) }}
|
|
{{- if and $currentPVC }}
|
|
{{- $oldSize := include "common.resource-quantity" $currentPVC.spec.resources.requests.storage }}
|
|
{{- $newSize := include "common.resource-quantity" $desiredSize }}
|
|
{{- if gt $newSize $oldSize }}
|
|
{{- $commands = append $commands (printf "kubectl patch pvc %s-%s-%s-%d -p '{\"spec\":{\"resources\":{\"requests\":{\"storage\":\"%s\"}}}}'" $dir.name $seaweedfsName $volumeName $e $desiredSize) }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- end }}
|
|
|
|
{{- end }}
|
|
{{- end }}
|
|
|
|
{{- if $commands }}
|
|
apiVersion: batch/v1
|
|
kind: Job
|
|
metadata:
|
|
name: "{{ $seaweedfsName }}-volume-resize-hook"
|
|
annotations:
|
|
helm.sh/hook: pre-install,pre-upgrade
|
|
helm.sh/hook-weight: "0"
|
|
helm.sh/hook-delete-policy: hook-succeeded,before-hook-creation
|
|
spec:
|
|
template:
|
|
spec:
|
|
serviceAccountName: {{ $seaweedfsName }}-volume-resize-hook
|
|
restartPolicy: Never
|
|
backoffLimit: 1
|
|
containers:
|
|
- name: resize
|
|
image: {{ .Values.volume.resizeHook.image }}
|
|
command: ["sh", "-xec"]
|
|
args:
|
|
- |
|
|
{{- range $commands }}
|
|
{{ . }}
|
|
{{- end }}
|
|
---
|
|
apiVersion: v1
|
|
kind: ServiceAccount
|
|
metadata:
|
|
name: {{ $seaweedfsName }}-volume-resize-hook
|
|
annotations:
|
|
helm.sh/hook: pre-install,pre-upgrade
|
|
helm.sh/hook-weight: "-5"
|
|
helm.sh/hook-delete-policy: before-hook-creation
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: Role
|
|
metadata:
|
|
name: {{ $seaweedfsName }}-volume-resize-hook
|
|
annotations:
|
|
helm.sh/hook: pre-install,pre-upgrade
|
|
helm.sh/hook-weight: "-5"
|
|
helm.sh/hook-delete-policy: before-hook-creation
|
|
rules:
|
|
- apiGroups: ["apps"]
|
|
resources: ["statefulsets"]
|
|
verbs: ["delete", "get", "list", "watch"]
|
|
- apiGroups: [""]
|
|
resources: ["persistentvolumeclaims"]
|
|
verbs: ["patch", "get", "list", "watch"]
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: RoleBinding
|
|
metadata:
|
|
name: {{ $seaweedfsName }}-volume-resize-hook
|
|
annotations:
|
|
helm.sh/hook: pre-install,pre-upgrade
|
|
helm.sh/hook-weight: "-5"
|
|
helm.sh/hook-delete-policy: before-hook-creation
|
|
subjects:
|
|
- kind: ServiceAccount
|
|
name: {{ $seaweedfsName }}-volume-resize-hook
|
|
roleRef:
|
|
kind: Role
|
|
name: {{ $seaweedfsName }}-volume-resize-hook
|
|
apiGroup: rbac.authorization.k8s.io
|
|
{{- end }}
|
|
{{- end }}
|