You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Stand up Velero as a first-class flux app, deploy it to the platform-sthings cluster against in-cluster MinIO, and unblock the restore-hook work in #115 (which depends on #111).
stuttgart-things/stuttgart-things#2200 — feat(platform-sthings): deploy velero to MinIO velero-test bucket
stuttgart-things/stuttgart-things#2202 — fix(platform-sthings): retarget velero cred patch to plain Secret
stuttgart-things/stuttgart-things#2203 — chore(platform-sthings): bump flux-infra to v1.6.0, pin velero to it (overlay now references the stable tag instead of apps-upstream/main)
stuttgart-things/stuttgart-things#2205 — chore(platform-sthings): velero on v1.7.0 base, drop redundant trust-bundle patches, add nightly Schedule (bumped flux-infra v1.6.0 → v1.7.0; replaced inline patches with single VELERO_SSL_CERT_DIR: /etc/ssl/custom; added daily-all Schedule)
Verified live: BackupStorageLocation/default is Available; smoke backup smoke-test-1779023397 (23 items) completed against velero-test bucket
TLS via trust-manager cluster-trust-bundle ConfigMap + AWS_CA_BUNDLE verified
End-to-end restore test — backup restore-test-1779027554 of throwaway velero-restore-test namespace (21 items) → ns deleted → restore (14 user-restorable items) → ConfigMap data, Secret api-key, and Deployment all came back identical. Two benign warnings (cluster-scoped ciliumendpoints.cilium.io CRD + auto-generated kube-root-ca.crt skipped) — expected Velero behavior. Test artefacts cleaned up.
Daily Schedule live — Schedule/daily-all (Enabled, cron 0 2 * * *, 30-day TTL, full cluster minus kube-{system,public,node-lease}). Manually triggered daily-all-20260517145502 for verification → Completed, 1713 items backed up.
Outstanding
Followups in platform-sthings overlay
Re-enable ServiceMonitor once kube-prometheus-stack (or the prometheus-operator CRDs) is on platform-sthings.
Pod-restart-after-Secret-update wrinkle: AWS SDK reads creds at startup. Won't recur on fresh deploys but matters for rotation — consider stakater/Reloader.
Backup hygiene / next features
Node-agent for filesystem PV backup (VELERO_DEPLOY_NODE_AGENT=true) if PV data needs to be in scope; default is off.
Volume snapshots — currently VELERO_SNAPSHOTS_ENABLED=false; decide CSI snapshot strategy.
Goal
Stand up Velero as a first-class flux app, deploy it to the platform-sthings cluster against in-cluster MinIO, and unblock the restore-hook work in #115 (which depends on #111).
Done
Base in this repo (
infra/velero/)feat(velero): add infra/velero base with S3/MinIO + optional ESOfeat(velero): add trust-bundle component for self-signed S3 endpointsfix(velero): use plain Secret manifest instead of sthings-cluster helper(the helper wraps customresources inspec:, invalid for coreSecret)fix(velero): override CRD-install hook kubectl image to bitnamilegacy(bitnami sunsetdocker.io/bitnami/kubectl:1.35late 2025)fix(velero): use literal cloud-credentials Secret name(placeholder in metadata.name broke consumer kustomize patch targets)docs(velero): document MinIO bucket-scoped user provisioning(MinIO Console + Terraform paths)feat(velero): bake trust-bundle mount into base, gate via SSL_CERT_DIR(eliminates the inline-patches footgun; pattern-matchesapps/clusterbook-operator)docs(velero): document ServiceMonitor CRD prerequisitemkdocs.ymlnav +docs/infra/index.mdrowf4a1a29) via semantic-release — release notes at https://github.com/stuttgart-things/flux/releases/tag/v1.6.0c90cd82) via semantic-release — picks up feat(velero): bake trust-bundle mount into base, gate via SSL_CERT_DIR #127 (trust-bundle baked into base) and docs(velero): document ServiceMonitor CRD prerequisite #128 (ServiceMonitor docs)Platform-sthings overlay (
stuttgart-things/stuttgart-things)feat(platform-sthings): deploy velero to MinIO velero-test bucketfix(platform-sthings): retarget velero cred patch to plain Secretchore(platform-sthings): bump flux-infra to v1.6.0, pin velero to it(overlay now references the stable tag instead ofapps-upstream/main)chore(platform-sthings): velero uses dedicated MinIO svc account(off MinIO root creds onto bucket-scoped uservelerowith policyvelero-test-rw; SOPS-encryptedvelero-s3-credentialsSecret)chore(platform-sthings): velero on v1.7.0 base, drop redundant trust-bundle patches, add nightly Schedule(bumped flux-infra v1.6.0 → v1.7.0; replaced inline patches with singleVELERO_SSL_CERT_DIR: /etc/ssl/custom; addeddaily-allSchedule)BackupStorageLocation/defaultisAvailable; smoke backupsmoke-test-1779023397(23 items) completed againstvelero-testbucketcluster-trust-bundleConfigMap +AWS_CA_BUNDLEverifiedrestore-test-1779027554of throwawayvelero-restore-testnamespace (21 items) → ns deleted → restore (14 user-restorable items) → ConfigMap data, Secretapi-key, and Deployment all came back identical. Two benign warnings (cluster-scopedciliumendpoints.cilium.ioCRD + auto-generatedkube-root-ca.crtskipped) — expected Velero behavior. Test artefacts cleaned up.Schedule/daily-all(Enabled, cron0 2 * * *, 30-day TTL, full cluster minuskube-{system,public,node-lease}). Manually triggereddaily-all-20260517145502for verification →Completed, 1713 items backed up.Outstanding
Followups in platform-sthings overlay
Backup hygiene / next features
VELERO_DEPLOY_NODE_AGENT=true) if PV data needs to be in scope; default is off.VELERO_SNAPSHOTS_ENABLED=false; decide CSI snapshot strategy.Crossplane-specific (parent work)
Related