From 0f286ee7ba570abe77b66f3fdfd17724d88a2527 Mon Sep 17 00:00:00 2001 From: IvanHunters Date: Tue, 28 Oct 2025 01:42:06 +0300 Subject: [PATCH] [mariadb-operator] Add post-delete job to remove PVCs This patch adds a Helm post-delete hook job that removes PersistentVolumeClaims left behind after Helm release deletion. The MariaDB Operator currently does not handle PVC cleanup, so this job ensures proper resource removal. ```release-note [mariadb-operator] Add a post-delete hook job to clean up PVCs left after Helm release deletion. ``` Signed-off-by: IvanHunters --- .../mysql/templates/hooks/cleanup-pvc.yaml | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 packages/apps/mysql/templates/hooks/cleanup-pvc.yaml diff --git a/packages/apps/mysql/templates/hooks/cleanup-pvc.yaml b/packages/apps/mysql/templates/hooks/cleanup-pvc.yaml new file mode 100644 index 00000000..e3fd5c32 --- /dev/null +++ b/packages/apps/mysql/templates/hooks/cleanup-pvc.yaml @@ -0,0 +1,74 @@ +--- +apiVersion: batch/v1 +kind: Job +metadata: + name: {{ .Release.Name }}-cleanup + labels: + app.kubernetes.io/instance: {{ .Release.Name }} + annotations: + "helm.sh/hook": post-delete + "helm.sh/hook-weight": "10" + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded +spec: + template: + metadata: + labels: + app.kubernetes.io/instance: {{ .Release.Name }} + policy.cozystack.io/allow-to-apiserver: "true" + spec: + serviceAccountName: {{ .Release.Name }}-cleanup + restartPolicy: Never + containers: + - name: cleanup + image: docker.io/clastix/kubectl:v1.32 + command: + - /bin/sh + - -c + - | + echo "Deleting orphaned PVCs for {{ .Release.Name }}..." + kubectl delete pvc -n {{ .Release.Namespace }} -l app.kubernetes.io/instance={{ .Release.Name }} || true + echo "PVC cleanup complete." +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ .Release.Name }}-cleanup + labels: + app.kubernetes.io/instance: {{ .Release.Name }} + annotations: + "helm.sh/hook": post-delete + helm.sh/hook-weight: "0" + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: {{ .Release.Name }}-cleanup + labels: + app.kubernetes.io/instance: {{ .Release.Name }} + annotations: + "helm.sh/hook": post-delete + "helm.sh/hook-weight": "5" + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded +rules: + - apiGroups: [""] + resources: ["persistentvolumeclaims"] + verbs: ["get", "list", "delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: {{ .Release.Name }}-cleanup + labels: + app.kubernetes.io/instance: {{ .Release.Name }} + annotations: + "helm.sh/hook": post-delete + helm.sh/hook-weight: "5" + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: {{ .Release.Name }}-cleanup +subjects: + - kind: ServiceAccount + name: {{ .Release.Name }}-cleanup