From ec3e9624b31de382439d5e21fa00651c66d3e49e Mon Sep 17 00:00:00 2001 From: "CTO (Paperclip Agent)" Date: Sat, 12 Sep 2026 17:35:49 +0000 Subject: [PATCH] feat(velero): schedules + PVC exclude annotations (DEV-573) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - velero/schedules/: cluster-all @ 03:00 (30d TTL, manifests only), per-namespace -manifests @ 03:15+n min (30 in-scope namespaces, 30d TTL, no fs backup), and per-namespace -data @ 03:45+n min for the whitelist (pocket-id, vaultwarden, vikunja, passbolt; 14d TTL, defaultVolumesToFsBackup=true). - All schedules exclude velero, kube-system, kube-node-lease, kube-public so the Kopia password Secret never lands in S3. - apps/app-velero-schedules.yaml: sibling Argo app syncing that directory into namespace velero with prune+selfHeal. - opencloud, harbor(registry+trivy): pod-template annotation backup.velero.io/backup-volumes-excludes as a safety net so blob- heavy PVCs are never fs-backed-up even under a manual defaultVolumes run. nextcloud/monitoring workloads are not Argo-tracked yet — they were patched live in the same commit but need a follow-up to source- control them. Co-Authored-By: Paperclip --- apps/app-velero-schedules.yaml | 23 + apps/harbor/values.yaml | 6 + apps/opencloud/opencloud-deployment.yaml | 6 + velero/schedules/00-cluster-all.yaml | 24 + velero/schedules/10-namespace-manifests.yaml | 780 +++++++++++++++++++ velero/schedules/20-namespace-data.yaml | 104 +++ 6 files changed, 943 insertions(+) create mode 100644 apps/app-velero-schedules.yaml create mode 100644 velero/schedules/00-cluster-all.yaml create mode 100644 velero/schedules/10-namespace-manifests.yaml create mode 100644 velero/schedules/20-namespace-data.yaml diff --git a/apps/app-velero-schedules.yaml b/apps/app-velero-schedules.yaml new file mode 100644 index 0000000..dce1c07 --- /dev/null +++ b/apps/app-velero-schedules.yaml @@ -0,0 +1,23 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: velero-schedules + namespace: argocd +spec: + project: default + source: + repoURL: git@forgejo.forgejo.svc.cluster.local:basicstack/stack.basicstack.de.git + targetRevision: main + path: velero/schedules + directory: + recurse: false + include: '*.yaml' + destination: + server: https://kubernetes.default.svc + namespace: velero + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - ServerSideApply=true diff --git a/apps/harbor/values.yaml b/apps/harbor/values.yaml index e8c136f..80c149d 100644 --- a/apps/harbor/values.yaml +++ b/apps/harbor/values.yaml @@ -95,6 +95,9 @@ harbor: cpu: 500m registry: + # Skip Kopia fs-backup of the registry blob PVC (DEV-573 safety net). + podAnnotations: + backup.velero.io/backup-volumes-excludes: registry-data registry: resources: requests: @@ -106,6 +109,9 @@ harbor: trivy: enabled: true + # Skip Kopia fs-backup of the trivy scan cache PVC (DEV-573 safety net). + podAnnotations: + backup.velero.io/backup-volumes-excludes: data resources: requests: memory: 512Mi diff --git a/apps/opencloud/opencloud-deployment.yaml b/apps/opencloud/opencloud-deployment.yaml index a90fac9..3f1f012 100644 --- a/apps/opencloud/opencloud-deployment.yaml +++ b/apps/opencloud/opencloud-deployment.yaml @@ -51,6 +51,12 @@ spec: metadata: labels: app: opencloud + annotations: + # Skip Kopia fs-backup of the 100 GiB opencloud object-store PVC — this + # blob store is out of scope for the DEV-573 data schedules; the + # exclusion is a safety net so an accidental defaultVolumesToFsBackup + # run never streams it into the Kopia repo. + backup.velero.io/backup-volumes-excludes: opencloud-data spec: securityContext: fsGroup: 1000 diff --git a/velero/schedules/00-cluster-all.yaml b/velero/schedules/00-cluster-all.yaml new file mode 100644 index 0000000..4d061be --- /dev/null +++ b/velero/schedules/00-cluster-all.yaml @@ -0,0 +1,24 @@ +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: cluster-all + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: cluster +spec: + schedule: "0 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - '*' + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: true + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default diff --git a/velero/schedules/10-namespace-manifests.yaml b/velero/schedules/10-namespace-manifests.yaml new file mode 100644 index 0000000..5e7c947 --- /dev/null +++ b/velero/schedules/10-namespace-manifests.yaml @@ -0,0 +1,780 @@ +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: argocd-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: argocd +spec: + schedule: "15 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - argocd + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: basicstack-web-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: basicstack-web +spec: + schedule: "16 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - basicstack-web + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: bookstack-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: bookstack +spec: + schedule: "17 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - bookstack + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: cert-manager-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: cert-manager +spec: + schedule: "18 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - cert-manager + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: container-registry-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: container-registry +spec: + schedule: "19 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - container-registry + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: directus-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: directus +spec: + schedule: "20 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - directus + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: dozzle-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: dozzle +spec: + schedule: "21 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - dozzle + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: forgejo-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: forgejo +spec: + schedule: "22 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - forgejo + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: grist-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: grist +spec: + schedule: "23 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - grist + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: harbor-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: harbor +spec: + schedule: "24 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - harbor + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: headlamp-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: headlamp +spec: + schedule: "25 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - headlamp + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: kaneo-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: kaneo +spec: + schedule: "26 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - kaneo + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: keycloak-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: keycloak +spec: + schedule: "27 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - keycloak + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: monitoring-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: monitoring +spec: + schedule: "28 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - monitoring + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: nextcloud-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: nextcloud +spec: + schedule: "29 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - nextcloud + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: observability-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: observability +spec: + schedule: "30 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - observability + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: opencloud-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: opencloud +spec: + schedule: "31 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - opencloud + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: openwebui-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: openwebui +spec: + schedule: "32 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - openwebui + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: outline-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: outline +spec: + schedule: "33 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - outline + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: pangolin-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: pangolin +spec: + schedule: "34 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - pangolin + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: paperclip-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: paperclip +spec: + schedule: "35 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - paperclip + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: paperclip-system-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: paperclip-system +spec: + schedule: "36 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - paperclip-system + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: passbolt-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: passbolt +spec: + schedule: "37 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - passbolt + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: planka-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: planka +spec: + schedule: "38 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - planka + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: platform-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: platform +spec: + schedule: "39 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - platform + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: pocket-id-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: pocket-id +spec: + schedule: "40 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - pocket-id + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: reloader-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: reloader +spec: + schedule: "41 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - reloader + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: stalwart-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: stalwart +spec: + schedule: "42 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - stalwart + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: vaultwarden-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: vaultwarden +spec: + schedule: "43 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - vaultwarden + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: vikunja-manifests + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-manifests + velero.basicstack.de/namespace: vikunja +spec: + schedule: "44 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 720h0m0s + includedNamespaces: + - vikunja + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: false + storageLocation: default diff --git a/velero/schedules/20-namespace-data.yaml b/velero/schedules/20-namespace-data.yaml new file mode 100644 index 0000000..07570c5 --- /dev/null +++ b/velero/schedules/20-namespace-data.yaml @@ -0,0 +1,104 @@ +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: pocket-id-data + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-data + velero.basicstack.de/namespace: pocket-id +spec: + schedule: "45 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 336h0m0s + includedNamespaces: + - pocket-id + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: true + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: vaultwarden-data + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-data + velero.basicstack.de/namespace: vaultwarden +spec: + schedule: "47 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 336h0m0s + includedNamespaces: + - vaultwarden + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: true + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: vikunja-data + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-data + velero.basicstack.de/namespace: vikunja +spec: + schedule: "49 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 336h0m0s + includedNamespaces: + - vikunja + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: true + storageLocation: default +--- +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: passbolt-data + namespace: velero + labels: + app.kubernetes.io/part-of: velero-schedules + tier: namespace-data + velero.basicstack.de/namespace: passbolt +spec: + schedule: "51 3 * * *" + useOwnerReferencesInBackup: false + template: + ttl: 336h0m0s + includedNamespaces: + - passbolt + excludedNamespaces: + - velero + - kube-system + - kube-node-lease + - kube-public + includeClusterResources: false + snapshotVolumes: false + defaultVolumesToFsBackup: true + storageLocation: default