mrkeyoor.com_
Sat 17 Oct 13:35 UTC
Self-Hostedevaluationupdated 26 Aug 2026

velero review

Velero backs up Kubernetes resources and persistent-volume data, then restores them to the same cluster or another one. It combines an in-cluster server with a local CLI and storage-provider plugins, giving platform teams one control plane for disaster recovery and migration.

+6stars / 7d
Verdict

Our Velero build took 233 seconds and its test run ended with 59 of 65 passing, so adoption should begin with a restore drill rather than a successful install. Use it when Kubernetes resource recovery, volume backup, and cross-cluster migration belong under one established project. Skip it if nobody owns storage capacity, provider compatibility, application quiescing, and repeated recovery tests.

We ran it

Lab card: what happened when we ran veleroScreenshot of velero (velero.io)
Install✓ · 81s672 packages
Build✓ · 233s
Tests✗ · 217s59 passed · 6 failed of 65 (go test)
Repo3821 files~262,654 lines of source · 66.2 MB · 18 CI workflows · Dockerfile · tests dir

Answers from our run

Does velero build from source?

Dependencies installed in 81 seconds (672 packages), and the build succeeded in 233 seconds. We cloned commit d2241ad into a clean Debian container with 3 CPUs and no project-specific setup.

Do velero's tests pass?

No. The project's own test command finished in 217 seconds and reported 59 passed, 6 failed (go test).

Who should not use velero?

Teams seeking a database-consistent backup without application hooks or database-native dumps: Velero captures Kubernetes objects and configured volume data, while workload consistency remains an application concern.

What are the alternatives to velero?

K8up, Kanister, Restic. Our Velero build took 233 seconds and its test run ended with 59 of 65 passing, so adoption should begin with a restore drill rather than a successful install.

Setup2/5Build passed, but deployment spans cluster, storage, and plugins
Docs5/5Versioned guides cover install, architecture, upgrades, and support
Community5/510,254 stars with active 2026 development and issue triage
Maturity4/5Long-running v1 project; our checkout still had six test failures

Who it’s for

Kubernetes platform teams that need scheduled resource and volume backups.
Operators migrating workloads between clusters or cloning production state into test environments.
Organizations prepared to test restores against their exact Kubernetes, CSI, and object-storage combination.

Who it’s NOT for

Teams seeking a database-consistent backup without application hooks or database-native dumps: Velero captures Kubernetes objects and configured volume data, while workload consistency remains an application concern.
Operators who cannot rehearse restores: the README says maintainers cannot test every Velero and Kubernetes combination and recommends testing unlisted pairings.
Installations with nearly full object storage and no independent cleanup route: issue #10398 reports a MinIO case where status writes failed and deletion could not free space.
Anyone expecting one binary with no provider work: the server, CLI, object store, credentials, and relevant cloud or CSI plugins must agree.

Setup reality

Our sandbox installed 672 Go packages in 81 seconds, then built successfully in 233 seconds. Tests failed after 217 seconds: 59 passed and 6 failed out of 65. The supplied log tail lists several packages with no tests or passing results, then ends with FAIL; it does not expose the six individual causes.

A useful deployment needs Kubernetes access, an object-storage bucket, credentials, and the correct provider or CSI plugins. Persistent-volume handling depends on snapshots, file-system backup, or the data mover selected for the cluster.

The client and in-cluster server must be versioned together, and the README publishes a Kubernetes compatibility table. Restore drills need a second cluster or a controlled recovery environment; installing the controller alone does not prove that stored data can be recovered.

Velero backs up cluster objects and persistent volumes

Velero has two main pieces: a command-line client and a server inside Kubernetes. The server records selected cluster resources and can protect persistent-volume data through the mechanisms supported by the deployment. Backups can support disaster recovery, workload migration, or a copy of production resources for development. That scope is broader than copying files from a node because Kubernetes objects, namespaces, labels, storage locations, and restore behavior all participate.

The breadth comes with an important boundary. A completed cluster backup does not automatically guarantee an application-consistent database. Databases may need hooks, quiescing, transaction-aware dumps, or their own replication and recovery process. Velero can preserve the objects and volume content it is configured to capture, but the operator still defines what a recoverable application means. For stateful workloads, that definition should be written before the first schedule is created.

Version 1.18 documents Kubernetes 1.18 through current releases

The README's compatibility table says Velero 1.18 is expected to work with Kubernetes 1.18 through the latest release, with explicit tests listed for Kubernetes 1.33.7, 1.34.1, and 1.35.0. Maintainers also say they cannot exercise every combination and recommend testing versions outside the recorded matrix. Release qualification includes restoring backups from the previous 2 minor Velero releases. This is useful evidence, though it does not cover every CSI driver, object store, admission policy, or workload.

A real installation joins more moving parts than the overview suggests. The server needs cluster permissions and custom resources. Backup data needs an object-storage location and credentials. Cloud volume snapshots rely on provider plugins, while file-system backup and CSI data movement introduce node agents, repositories, and storage-class behavior. The exact choice affects cost, portability, and restore speed. A proof of concept should use the same provider and volume path planned for production.

What happened when we ran it

Our sandbox cloned commit d2241ad and installed 672 Go packages in 81 seconds. The checkout contained 3,821 files, about 262,654 lines of source, and occupied 66.2 MB before dependencies. The build succeeded in 233 seconds. The repository had 18 CI workflow files, a Dockerfile, and a tests directory, which is the clearest engineering footprint among the projects in this batch.

The Go test step failed with exit code 1 after 217 seconds. Our harness counted 59 passed and 6 failed out of 65. The supplied tail shows several utility packages with no test files, successful kibishii and velero utility packages, and then a final FAIL. It does not include the failing package names or error messages, so assigning a cause would be guesswork. The only safe conclusion is that the full discovered suite did not pass in our fresh Go 1.24 Debian container.

Those results cover source installation, compilation, and repository tests. We did not create a Kubernetes cluster, connect object storage, take a volume snapshot, or restore an application. A 233-second build proves that the code compiled at the measured commit. It says nothing about whether a backup is usable after a cluster loss. That answer requires an end-to-end restore with stored credentials, plugins, and target infrastructure.

A backup is useful only after an isolated restore succeeds

Velero makes scheduled backups easy enough that teams can mistake job completion for recovery readiness. A better acceptance test starts with a disposable namespace containing ordinary objects and a stateful workload, backs it up, removes or isolates the source, and restores into a clean target. Check resource ownership, secrets, services, persistent data, hooks, and application-level reads. Repeat the test after Kubernetes, CSI, object-store, or Velero upgrades.

Storage failure deserves its own runbook. Issue #10398 describes a Velero 1.17.1 deployment on MinIO where the store reached capacity. According to the reporter, backup finalization kept retrying because it could not write status, and deleting an older backup also stalled because completion required another write. That is one environment and an open report. It identifies a practical safeguard: monitor capacity outside Velero and keep a storage-native deletion or expansion procedure that does not depend on the backup controller.

Provider behavior can decide whether a restore is portable

Object stores that speak an S3-like API are not identical. Issue #10400 reports that Dell EMC ECS rejected uploads from the AWS plugin in an air-gapped setup even though listing and AWS CLI uploads worked. The reporter traced a difference in the SDK request and could not solve it through several configuration changes. This does not indict every compatible store. It means the words "S3-compatible" should trigger a write, list, delete, backup, and restore test against the exact appliance version.

Persistent volumes add a second compatibility layer. CSI snapshots can be fast within a provider, while moving snapshot data to object storage may improve recovery independence at extra time and capacity cost. File-system backup behaves differently again. Pick according to the disaster being covered: deleted namespace, failed cluster, lost storage system, or migration to another provider. A snapshot left only inside the failed storage domain is not a complete answer to every one of those events.

Release activity is high, and the support surface is large

GitHub showed 10,254 stars, 825 open issues and pull requests, and a last push on August 26, 2026. A search separating issues from pull requests returned 650 open issues. Latest release v1.18.2 was published June 26 and fixed a namespace-listing performance regression plus two backup-cleanup defects. The activity and 18 workflow files indicate an actively maintained project, while the open queue reflects the number of storage, cloud, and Kubernetes combinations it serves.

Velero is a sensible default shortlist for Kubernetes disaster recovery because it handles cluster resources and volume workflows in one project, has versioned documentation, and supports migration as well as same-cluster restore. Our failed 65-result suite prevents a clean bill of health for the measured commit. More importantly, no source test substitutes for proving that your bucket, plugin, CSI driver, credentials, retention policy, and applications can recover together under pressure.

Alternatives

ProjectWhat it isPick it when
K8upA Kubernetes operator that schedules application backups through Restic-compatible storage.pick this instead when file-level backups driven by Kubernetes resources are enough and Velero's migration model is unnecessary.
KanisterA framework for application-aware data operations defined as reusable blueprints.pick this instead when workload-specific backup actions matter more than a general cluster resource backup.
Restic gh↗An encrypted file backup program with many storage backends and no Kubernetes control plane.pick this instead when files are the unit of recovery and your team can manage scheduling and cluster integration separately.

What people are saying

  1. [github-trending] velero-io/velero

Sources

  1. Velero README
  2. Velero documentation
  3. Velero v1.18.2 release
  4. Issue #10398: full object-store deletion deadlock
  5. Issue #10400: Dell EMC ECS upload failure

More self-hosted reviews

playport · edge-smart-doh · Comma · ProsperoEden · zulu · node_exporter · the whole board →