Files
k8s-manifests/backup-system/cronjob-backup-verify.yaml
T
chemavxandClaude Fable 5 c364d46ac6 feat(backup-system): segundo offsite Backblaze B2 (crown jewels)
- b2-crown-jewels.sh: sync diario 04:00 de las 2 copias mas recientes de
  cada servicio irremplazable (todo menos uptime-kuma) a
  b2:chemavx-k3s-backups/crown-jewels/ (~2GB, tier gratuito).
- reddit-intel.sh sube tambien a B2 (retencion 3d).
- verify.sh comprueba Mega (completo) + B2 (crown jewels).
- Config via Secret out-of-band rclone-conf-b2 (mega+b2, kubectl, NO git);
  consolidar en Infisical RCLONE_CONF cuando se anada [b2] por UI (la
  identity del operator es read-only por API).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 17:24:02 +00:00

50 lines
1.5 KiB
YAML

apiVersion: batch/v1
kind: CronJob
metadata:
name: backup-verify
namespace: backup-system
spec:
# Diario desde 2026-07-15 (el sync a Mega ya es diario; ventana de frescura 3 días)
schedule: "0 5 * * *"
concurrencyPolicy: Forbid
failedJobsHistoryLimit: 3
successfulJobsHistoryLimit: 3
jobTemplate:
spec:
template:
spec:
nodeSelector:
kubernetes.io/hostname: chemavx-k8
restartPolicy: OnFailure
securityContext:
runAsUser: 0
containers:
- name: verify
# OJO: imagen BusyBox — verify.sh debe evitar GNU-ismos (date -d 'yesterday')
image: docker.io/rclone/rclone:1.74.3
command: ["/bin/sh", "/scripts/verify.sh"]
resources:
limits:
cpu: 200m
memory: 256Mi
requests:
cpu: 50m
memory: 64Mi
volumeMounts:
- mountPath: /rclone
name: rclone-conf
- mountPath: /scripts
name: scripts
volumes:
# rclone-conf-b2: secret out-of-band con mega+b2 (verify comprueba ambos)
- name: rclone-conf
secret:
secretName: rclone-conf-b2
items:
- key: RCLONE_CONF
path: rclone.conf
- name: scripts
configMap:
name: backup-scripts
defaultMode: 0755