- 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>
82 lines
2.5 KiB
YAML
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
|