Velero is an open-source tool for backing up, restoring and migrating Kubernetes clusters. It protects two distinct things: the API objects that describe your workloads — deployments, services, CRDs, RBAC, ConfigMaps, secrets — and the data inside persistent volumes. Both are needed, and confusing them is the most common reason a restore fails when it matters.
Velero runs as a controller in the cluster plus a CLI. Everything it does is expressed as custom resources: Backup, Restore, Schedule, BackupStorageLocation and VolumeSnapshotLocation. Object data goes to an object store — S3, Azure Blob, GCS or anything S3-compatible such as MinIO — via a provider plugin. Volume data has more than one path, and choosing correctly per workload is a real design decision: CSI volume snapshots when the storage driver supports them, file-system backup with the Kopia or Restic uploader when it does not, and the built-in data mover when you want snapshot data lifted into object storage rather than left on the provider.
On top of that sit the features that make it usable in anger. Backup hooks run commands in a pod before and after a backup, so a database can be quiesced for a consistent copy. Label selectors, namespace and resource includes and excludes control scope. Schedules with cron expressions plus TTL give retention. Restores can target a different namespace, honour an existing-resource policy, apply JSON patches through resource modifiers, and follow a defined resource ordering — which is what makes Velero a cluster migration tool as well as a backup tool.
Why this skill matters now
Kubernetes made infrastructure reproducible and gave a lot of teams false confidence about recovery. The manifests are in Git, so the argument goes, and the cluster can be rebuilt. That argument ignores everything created after apply: data in persistent volumes, secrets rotated in place, CRDs installed by operators, resources generated by controllers, and the accumulated state that no repository contains.
Meanwhile the failure modes have become more mundane and more frequent. A namespace deleted by an over-broad label selector. A bad Helm upgrade that removes a CRD and takes its custom resources with it. A cluster upgrade that has to be rolled back. Ransomware. A cloud region that goes away. None of these are exotic, and all of them are survivable with a rehearsed restore and unsurvivable without one.
Regulators and customers have noticed too. Recovery point and recovery time objectives now appear in security questionnaires and audit findings for Kubernetes platforms, and the evidence asked for is a tested restore, not a green backup job. Velero is the default answer in that space, and the skill gap is squarely on the restore side: most teams have backups running and have never proved they can bring a cluster back from them.