committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 119 additions and 0 deletions
@ -0,0 +1,114 @@ |
|||||
|
{{- if and .Values.volume.enabled .Values.volume.resizeHook.enabled }} |
||||
|
{{- $seaweedfsName := include "seaweedfs.name" $ }} |
||||
|
{{- $replicas := int .Values.volume.replicas -}} |
||||
|
{{- $statefulsetName := printf "%s-volume" $seaweedfsName -}} |
||||
|
{{- $statefulset := (lookup "apps/v1" "StatefulSet" .Release.Namespace $statefulsetName) -}} |
||||
|
|
||||
|
{{/* Check for changes in volumeClaimTemplates */}} |
||||
|
{{- $templateChangesRequired := false -}} |
||||
|
{{- if $statefulset -}} |
||||
|
{{- range $dir := .Values.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) -}} |
||||
|
{{- $templateChangesRequired = true -}} |
||||
|
{{- end -}} |
||||
|
{{- end -}} |
||||
|
{{- end -}} |
||||
|
{{- end -}} |
||||
|
{{- end -}} |
||||
|
|
||||
|
{{/* Check for the need for patching existing PVCs */}} |
||||
|
{{- $pvcChangesRequired := false -}} |
||||
|
{{- range $dir := .Values.volume.dataDirs -}} |
||||
|
{{- if eq .type "persistentVolumeClaim" -}} |
||||
|
{{- $desiredSize := .size -}} |
||||
|
{{- range $i, $e := until $replicas }} |
||||
|
{{- $pvcName := printf "%s-%s-volume-%d" $dir.name $seaweedfsName $e -}} |
||||
|
{{- $currentPVC := (lookup "v1" "PersistentVolumeClaim" $.Release.Namespace $pvcName) -}} |
||||
|
{{- if and $currentPVC (ne ($currentPVC.spec.resources.requests.storage | toString) $desiredSize) -}} |
||||
|
{{- $pvcChangesRequired = true -}} |
||||
|
{{- end -}} |
||||
|
{{- end -}} |
||||
|
{{- end -}} |
||||
|
{{- end -}} |
||||
|
|
||||
|
{{- if or $templateChangesRequired $pvcChangesRequired }} |
||||
|
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: |
||||
|
- | |
||||
|
{{- if $pvcChangesRequired -}} |
||||
|
{{- range $dir := .Values.volume.dataDirs -}} |
||||
|
{{- if eq .type "persistentVolumeClaim" -}} |
||||
|
{{- $desiredSize := .size -}} |
||||
|
{{- range $i, $e := until $replicas }} |
||||
|
kubectl patch pvc {{ printf "%s-%s-volume-%d" $dir.name $seaweedfsName $e }} -p '{"spec":{"resources":{"requests":{"storage":"{{ $desiredSize }}"}}}}' |
||||
|
{{- end }} |
||||
|
{{- end }} |
||||
|
{{- end }} |
||||
|
{{- end -}} |
||||
|
|
||||
|
{{- if $templateChangesRequired }} |
||||
|
kubectl delete statefulset {{ $statefulsetName }} --cascade=orphan |
||||
|
{{- end }} |
||||
|
{{- 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 }} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue