k8s nfs backup: exclude namespaces from scaling, isolate per-run state, harden failure handling
All checks were successful
Check scripts syntax / check-scripts-syntax (push) Successful in 7s
Test automated-nfs-backup / test-automated-nfs-backup (push) Successful in 7s

- Add EXCLUDED_NAMESPACES (default kube-system,kube-public,kube-node-lease,default); excluded folders are backed up but never scaled
- Use a per-run state dir via mktemp -d so stale .state files from an earlier run can't leak into restores
- Partial folder-backup failure now exits 0 (only zero successes fails); retention runs even on partial failure
- Remove dead SCALE_TIMEOUT_SECONDS config; document SCALE_WAIT_SECONDS
- Add .gitattributes to keep *.sh at LF
- Extend test harness to 44 passing assertions covering exclusions, per-run state, partial/all-failed/empty scenarios
This commit is contained in:
2026-07-14 09:02:06 -03:00
parent 91572e4819
commit 2bd9e90f00
5 changed files with 208 additions and 45 deletions

View File

@@ -4,15 +4,16 @@ BACKUP_PASSWORD=
KUBECTL_BIN=kubectl
KUBE_CONTEXT=
WORKLOAD_KINDS=deployment,statefulset,replicaset,replicationcontroller
EXCLUDED_NAMESPACES=kube-system,kube-public,kube-node-lease,default
ARCHIVE_PREFIX=nfs-backup
ARCHIVE_TS_FORMAT=%Y%m%d_%H%M%S
SEVENZ_METHOD=lzma2
SEVENZ_LEVEL=9
SEVENZ_HEADER_ENCRYPT=on
SEVENZ_THREADS=on
SCALE_TIMEOUT_SECONDS=600
SCALE_RETRY_COUNT=3
SCALE_RETRY_DELAY_SECONDS=5
SCALE_WAIT_SECONDS=30
LOG_LEVEL=info
TMP_STATE_DIR=/tmp/k8s-nfs-backup
NOTIFY_SUCCESS_URL=