From 11f65da54d4c3c394dc8a18b304e51ec8850b212 Mon Sep 17 00:00:00 2001
From: Jonathan Leech-Pepin <jonathan@leechpepin.com>
Date: Wed, 26 Feb 2025 17:02:56 -0500
Subject: [PATCH] Cleanup kustomize templates and add batch

---
 kustomize/backups/batch.yaml             | 48 ++++++++++++++++++++++++
 kustomize/backups/kustomization.yaml     |  9 +++++
 kustomize/deployment/configmap.yaml      |  5 ---
 kustomize/deployment/kustomization.yaml  |  1 -
 kustomize/noservice/configmap.yaml       |  5 ---
 kustomize/noservice/httproute-http.yaml  | 20 ----------
 kustomize/noservice/httproute-https.yaml | 20 ----------
 kustomize/noservice/kustomization.yaml   |  1 -
 kustomize/noservice/service.yaml         | 11 ------
 9 files changed, 57 insertions(+), 63 deletions(-)
 create mode 100644 kustomize/backups/batch.yaml
 create mode 100644 kustomize/backups/kustomization.yaml
 delete mode 100644 kustomize/deployment/configmap.yaml
 delete mode 100644 kustomize/noservice/configmap.yaml
 delete mode 100644 kustomize/noservice/httproute-http.yaml
 delete mode 100644 kustomize/noservice/httproute-https.yaml
 delete mode 100644 kustomize/noservice/service.yaml

diff --git a/kustomize/backups/batch.yaml b/kustomize/backups/batch.yaml
new file mode 100644
index 0000000..da67728
--- /dev/null
+++ b/kustomize/backups/batch.yaml
@@ -0,0 +1,48 @@
+apiVersion: batch/v1
+kind: CronJob
+metadata:
+  name: backup
+spec:
+  schedule: "0 3 * * *"
+  jobTemplate:
+    spec:
+      template:
+        spec:
+          restartPolicy: OnFailure
+          containers:
+            - name: backup
+              image: busybox
+              command:
+                - /bin/bash
+                - -c
+                - |
+                  echo $HEALTHCHECK_BASE_URL/${HEALTHCHECK_ID}
+                  # Start signal
+                  curl -fsS -m 10 --retry 5 ${HEALTHCHECK_BASE_URL}/${HEALTHCHECK_ID}/start
+
+                  # Perform backup
+                  if ! ${BACKUP_COMMAND} | gzip > /backup/${ROTATE_PREFIX}-$(date +%Y%m%d).sql.gz; then
+                    curl -fsS -m 10 --retry 5 ${HEALTHCHECK_BASE_URL}/${HEALTHCHECK_ID}/fail
+                    exit 1
+                  fi
+
+                  # list backups
+                  ls /backup
+                  # Rotate old backups
+                  find /backup -name "${ROTATE_PREFIX}-*.sql.gz" -mtime +7 -delete
+
+                  # Success signal
+                  curl -fsS -m 10 --retry 5 ${HEALTHCHECK_BASE_URL}/${HEALTHCHECK_ID}
+              envFrom:
+                - configMapRef:
+                    name: backup-config
+                - secretRef:
+                    name: core-secrets
+              volumeMounts:
+                - mountPath: /backup
+                  name: backup
+                  subPath: "data"
+          volumes:
+            - name: backup
+              persistentVolumeClaim:
+                claimName: backup-pvc
diff --git a/kustomize/backups/kustomization.yaml b/kustomize/backups/kustomization.yaml
new file mode 100644
index 0000000..a6c43e8
--- /dev/null
+++ b/kustomize/backups/kustomization.yaml
@@ -0,0 +1,9 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+  - batch.yaml
+
+labels:
+  - includeSelectors: true
+    pairs:
+      app.kubernetes.io/managed-by: kustomize
diff --git a/kustomize/deployment/configmap.yaml b/kustomize/deployment/configmap.yaml
deleted file mode 100644
index d8641b6..0000000
--- a/kustomize/deployment/configmap.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-apiVersion: v1
-kind: ConfigMap
-metadata:
-  name: config
-data:
diff --git a/kustomize/deployment/kustomization.yaml b/kustomize/deployment/kustomization.yaml
index 133e22f..2c541e2 100644
--- a/kustomize/deployment/kustomization.yaml
+++ b/kustomize/deployment/kustomization.yaml
@@ -9,7 +9,6 @@ resources:
   - secret.yaml
   - httproute-http.yaml
   - httproute-https.yaml
-  # - configmap.yaml
 
 labels:
   - includeSelectors: true
diff --git a/kustomize/noservice/configmap.yaml b/kustomize/noservice/configmap.yaml
deleted file mode 100644
index d8641b6..0000000
--- a/kustomize/noservice/configmap.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-apiVersion: v1
-kind: ConfigMap
-metadata:
-  name: config
-data:
diff --git a/kustomize/noservice/httproute-http.yaml b/kustomize/noservice/httproute-http.yaml
deleted file mode 100644
index 43f5c01..0000000
--- a/kustomize/noservice/httproute-http.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-apiVersion: gateway.networking.k8s.io/v1
-kind: HTTPRoute
-metadata:
-  name: http
-spec:
-  parentRefs:
-    - name: homelab-gateway
-      sectionName: web
-      kind: Gateway
-      namespace: homelab
-  hostnames:
-    - web.leechpepin.com
-  rules:
-    - matches:
-        - path:
-            type: PathPrefix
-            value: /
-      backendRefs:
-        - name: web
-          port: 80
diff --git a/kustomize/noservice/httproute-https.yaml b/kustomize/noservice/httproute-https.yaml
deleted file mode 100644
index b38ea13..0000000
--- a/kustomize/noservice/httproute-https.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-apiVersion: gateway.networking.k8s.io/v1
-kind: HTTPRoute
-metadata:
-  name: https
-spec:
-  parentRefs:
-    - name: homelab-gateway
-      sectionName: websecure
-      kind: Gateway
-      namespace: homelab
-  hostnames:
-    - web.leechpepin.com
-  rules:
-    - matches:
-        - path:
-            type: PathPrefix
-            value: /
-      backendRefs:
-        - name: web
-          port: 80
diff --git a/kustomize/noservice/kustomization.yaml b/kustomize/noservice/kustomization.yaml
index 19265b6..96a450f 100644
--- a/kustomize/noservice/kustomization.yaml
+++ b/kustomize/noservice/kustomization.yaml
@@ -6,7 +6,6 @@ resources:
   - deployment.yaml
   - pvc.yaml
   - secret.yaml
-  # - configmap.yaml
 
 labels:
   - includeSelectors: true
diff --git a/kustomize/noservice/service.yaml b/kustomize/noservice/service.yaml
deleted file mode 100644
index 2d0c61a..0000000
--- a/kustomize/noservice/service.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-apiVersion: v1
-kind: Service
-metadata:
-  name: svc
-spec:
-  type: ClusterIP
-  ports:
-    - port: 80
-      name: test
-      targetPort: test
-      protocol: TCP