- 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>
48 lines
1.4 KiB
YAML
48 lines
1.4 KiB
YAML
apiVersion: batch/v1
|
|
kind: CronJob
|
|
metadata:
|
|
name: backup-verify
|
|
namespace: backup-system
|
|
spec:
|
|
schedule: "0 4 * * 1"
|
|
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:
|
|
- name: rclone-conf
|
|
secret:
|
|
secretName: rclone-conf-infisical
|
|
items:
|
|
- key: RCLONE_CONF
|
|
path: rclone.conf
|
|
- name: scripts
|
|
configMap:
|
|
name: backup-scripts
|
|
defaultMode: 0755
|