# Velero Helm values — the AUTHORITATIVE values live inline in helmrelease.yaml (this file is a # doc pointer, kept for parity with the other components' layout). # # LIVE wiring (see helmrelease.yaml): # - provider aws + velero-plugin-for-aws (init container) → S3 ${S3_BACKUP_ENDPOINT}, path-style, # at s3://${VELERO_BACKUP_BUCKET}/${VELERO_BACKUP_PREFIX} in region ${S3_BACKUP_REGION}. Four # cluster-vars knobs: dev = the on-Proxmox MinIO (http://192.168.1.9:9000, bucket `velero`, no # prefix, us-east-1); prod = Cloudflare R2 (bucket `k3s-prod-backup`, prefix `velero`, `auto`), # sharing one bucket with CNPG/barman under a disjoint prefix. # - config.checksumAlgorithm: "" — MANDATORY for R2, which rejects the AWS SDK's # x-amz-checksum-* headers with HTTP 400 InvalidArgument. Harmless against MinIO. # - velero-plugin-for-aws PINNED TO v1.14.3-rc.2 — also MANDATORY for R2. v1.14.2 sends an empty # `x-amz-tagging` header on every PutObject, which R2 answers with HTTP 501 NotImplemented, so # every Backup lands its kopia volume data and then FAILS writing velero-backup.json. Upstream # PR #309 makes the field conditional; rc.2 is the earliest build carrying it. Move to v1.14.3 # when it ships GA. Measured on prod 2026-09-12. # - resourcePolicy on the FSB schedule -> ConfigMap velero-volume-policies (volume-policies.yaml): # skips volumes whose source is NFS, so the 8.6 TiB external bulk tier is not uploaded nightly # while the same namespaces' real Longhorn PVCs still are. Proven on prod 2026-09-12. # - deployNodeAgent:true + uploaderType:kopia → File System Backup of PVC data (no CSI data-mover). # - snapshotsEnabled:false → no VolumeSnapshotLocation. # - credentials.existingSecret: velero-cloud-credentials (SOPS `cloud` INI key, ns velero). # - two daily Schedules (${VELERO_BACKUP_SCHEDULE} / ttl ${VELERO_RETENTION}): the whole cluster # via FSB, with monitoring+unifi backed up RESOURCES-ONLY (their volume data is reconstructable). # DR drill (tested restore) remains a Phase-4 acceptance gate (R-STATE-03) — the PM runs it post-deploy.