Files
k8s-manifests/backup-system/cronjob-backup.yaml
T
chemavxandClaude Fable 5 d1d2fac287 feat(backup-system): migración completa a GitOps
- CronJob rclone-mega-backup entra en git (solo existía imperativo)
- Scripts backup.sh/verify.sh/rclone-mega.sh como ConfigMap backup-scripts
  (antes hostPath /data/backups/scripts — cambios ahora pasan por git+ArgoCD)
- rclone.conf vía InfisicalStaticSecret (homelab/prod//backup-system → RCLONE_CONF),
  sustituye al hostPath de ~/.config/rclone/rclone.conf
- Imágenes pinneadas: rclone 1.74.3, bitnami/kubectl por digest (v1.36.2)
- ClusterRole/CRB de backup-sa entran en git
- Application ArgoCD backup-system (auto-sync + prune + selfHeal)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 09:33:35 +00:00

82 lines
2.5 KiB
YAML

apiVersion: batch/v1
kind: CronJob
metadata:
name: backup
namespace: backup-system
spec:
schedule: "0 2 * * *"
concurrencyPolicy: Forbid
successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 1
jobTemplate:
spec:
template:
spec:
restartPolicy: OnFailure
serviceAccountName: backup-sa
securityContext:
runAsUser: 0
nodeSelector:
kubernetes.io/hostname: chemavx-k8
containers:
- name: backup
# bitnami/kubectl v1.36.2 — pinneado por digest: los tags de bitnami
# en Docker Hub ya no son fiables (migración Broadcom/bitnamilegacy)
image: docker.io/bitnami/kubectl@sha256:558420daf32bbc382e3e9af4537f4073085b336ddd47399a3b70e70087115978
command: ["/bin/bash", "/scripts/backup.sh"]
env:
- name: KUBECONFIG
value: /kubeconfig/k3s.yaml
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi
volumeMounts:
- name: backup-dir
mountPath: /data/backups/backups
- name: n8n-data
mountPath: /data/n8n
- name: openclaw-data
mountPath: /data/openclaw
- name: scripts
mountPath: /scripts
- name: k3s-storage
mountPath: /var/lib/rancher/k3s/storage
- name: kubeconfig
mountPath: /kubeconfig/k3s.yaml
- name: k3s-db
mountPath: /data/k3s-db
readOnly: true
volumes:
- name: backup-dir
hostPath:
path: /data/backups/backups
type: DirectoryOrCreate
- name: n8n-data
hostPath:
path: /data/n8n
type: DirectoryOrCreate
- name: openclaw-data
hostPath:
path: /data/openclaw
type: DirectoryOrCreate
- name: scripts
configMap:
name: backup-scripts
defaultMode: 0755
- name: k3s-storage
hostPath:
path: /var/lib/rancher/k3s/storage
type: Directory
- name: kubeconfig
hostPath:
path: /etc/rancher/k3s/k3s.yaml
type: File
- name: k3s-db
hostPath:
path: /var/lib/rancher/k3s/server/db
type: Directory