Top Related Projects
Backup and migrate Kubernetes applications and their persistent volumes
Fast, secure, efficient backup program
🛅 Backup your Kubernetes Stateful Applications
MinIO is a high-performance, S3 compatible object store, open sourced under GNU AGPLv3 license.
Storage Orchestration for Kubernetes
Ceph is a distributed object, block, and file storage platform
Quick Overview
Velero is an open-source backup and disaster recovery tool for Kubernetes clusters. It allows users to back up and restore Kubernetes resources and persistent volumes, migrate cluster resources to other clusters, and replicate production environments for development and testing purposes.
Pros
- Provides easy-to-use backup and restore functionality for Kubernetes clusters
- Supports multiple storage providers for backup data (e.g., AWS S3, Azure Blob Storage, Google Cloud Storage)
- Offers scheduled backups and retention policies for automated management
- Enables cluster migration and disaster recovery across different cloud providers
Cons
- May have performance impacts on large clusters during backup operations
- Limited support for backing up certain types of persistent volumes
- Requires additional storage resources for backup data
- Can be complex to set up and configure for advanced use cases
Getting Started
To get started with Velero, follow these steps:
- Install the Velero CLI:
brew install velero
- Install Velero on your Kubernetes cluster:
velero install \
--provider aws \
--plugins velero/velero-plugin-for-aws:v1.5.0 \
--bucket my-backup-bucket \
--secret-file ./credentials-velero \
--use-volume-snapshots=false
- Create a backup:
velero backup create my-backup --include-namespaces my-namespace
- Restore from a backup:
velero restore create --from-backup my-backup
For more detailed instructions and advanced configurations, refer to the official Velero documentation.
Competitor Comparisons
Backup and migrate Kubernetes applications and their persistent volumes
Pros of Velero
- Well-established project with a large community and extensive documentation
- Supports multiple cloud providers and on-premises environments
- Offers both disaster recovery and data migration capabilities
Cons of Velero
- May have a steeper learning curve for newcomers
- Could have more complex configuration for advanced use cases
Code Comparison
Both repositories contain the same codebase, as they are mirrors of each other. Here's a sample from the main.go file in both:
func main() {
rand.Seed(time.Now().UnixNano())
command := newCommand()
if err := command.Execute(); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}
Summary
The comparison between vmware-tanzu/velero and vmware-tanzu/velero> is not applicable, as they are essentially the same repository. The ">" at the end of the second repository name appears to be a typo or formatting error. Velero is a single project maintained by VMware Tanzu, and both GitHub links point to the same codebase. The project offers robust backup and restore capabilities for Kubernetes clusters, with support for various storage providers and environments.
Fast, secure, efficient backup program
Pros of restic
- Lightweight and efficient backup solution for various storage backends
- Strong encryption and deduplication capabilities
- Cross-platform support (Linux, macOS, Windows)
Cons of restic
- Limited Kubernetes-specific features and integrations
- Lacks built-in scheduling and policy management
- Requires manual setup for complex backup scenarios
Code Comparison
restic:
func backup(target string, opts *BackupOptions) (*Snapshot, error) {
repo, err := OpenRepository(opts.Repo)
if err != nil {
return nil, err
}
return repo.Backup(target, opts)
}
Velero:
func (c *backupController) processBackup(key string) error {
backup, err := c.backupLister.Backups(c.namespace).Get(key)
if err != nil {
return errors.Wrap(err, "error getting backup")
}
return c.runBackup(backup)
}
restic focuses on efficient file-level backups with a simple API, while Velero provides a more comprehensive Kubernetes-native backup solution with cluster-aware features. restic is better suited for general-purpose backups, whereas Velero excels in Kubernetes environments with its built-in scheduling, resource filtering, and cloud provider integrations.
🛅 Backup your Kubernetes Stateful Applications
Pros of Stash
- Specialized in backing up Kubernetes volumes and databases
- Supports incremental backups, reducing storage and bandwidth usage
- Offers built-in support for various databases like MySQL, PostgreSQL, and MongoDB
Cons of Stash
- Less mature and smaller community compared to Velero
- Limited support for non-Kubernetes resources
- Fewer integrations with cloud providers and storage systems
Code Comparison
Velero backup creation:
apiVersion: velero.io/v1
kind: Backup
metadata:
name: example-backup
spec:
includedNamespaces:
- default
Stash backup creation:
apiVersion: stash.appscode.com/v1beta1
kind: BackupConfiguration
metadata:
name: example-backup
spec:
repository:
name: local-repo
schedule: "*/5 * * * *"
target:
ref:
apiVersion: apps/v1
kind: Deployment
name: example-deployment
Both Velero and Stash are Kubernetes-native backup solutions, but they have different focuses. Velero is more comprehensive, supporting cluster-wide backups and disaster recovery, while Stash specializes in volume and database backups. Velero has a larger community and more integrations, making it suitable for complex environments. Stash, on the other hand, offers more granular control over database backups and supports incremental backups, which can be beneficial for specific use cases.
MinIO is a high-performance, S3 compatible object store, open sourced under GNU AGPLv3 license.
Pros of MinIO
- Highly scalable and performant object storage system
- Supports S3 API, making it compatible with many existing tools and applications
- Can be deployed on-premises or in the cloud, offering flexibility
Cons of MinIO
- Focused solely on object storage, while Velero provides broader backup and disaster recovery capabilities
- Requires more manual configuration for backup and restore operations compared to Velero's automated approach
- May need additional tools for managing backups across multiple clusters or environments
Code Comparison
MinIO (server initialization):
func NewServer(config *Config) (*Server, error) {
s := &Server{
config: config,
}
return s, nil
}
Velero (backup creation):
func (c *backupController) processBackup(key string) error {
backup, err := c.backupLister.Backups(c.namespace).Get(key)
if err != nil {
return errors.Wrap(err, "error getting backup")
}
// ... (additional backup processing logic)
}
While both projects are written in Go, they serve different purposes. MinIO focuses on object storage implementation, while Velero handles backup and restore operations for Kubernetes clusters.
Storage Orchestration for Kubernetes
Pros of Rook
- Provides comprehensive storage orchestration for Kubernetes
- Supports multiple storage providers (Ceph, EdgeFS, NFS, etc.)
- Offers advanced features like storage scaling and migration
Cons of Rook
- More complex setup and configuration compared to Velero
- Primarily focused on storage management, not backup and restore
- Steeper learning curve for users new to storage orchestration
Code Comparison
Rook (storage class definition):
apiVersion: ceph.rook.io/v1
kind: CephBlockPool
metadata:
name: replicapool
namespace: rook-ceph
spec:
failureDomain: host
replicated:
size: 3
Velero (backup creation):
velero backup create my-backup \
--include-namespaces nginx-example \
--storage-location default \
--snapshot-volumes
While Rook focuses on storage management with detailed configuration for storage classes and pools, Velero provides a simpler interface for creating backups and managing disaster recovery. Rook's code involves more complex YAML definitions for storage resources, whereas Velero uses straightforward CLI commands for backup and restore operations.
Ceph is a distributed object, block, and file storage platform
Pros of Ceph
- Comprehensive distributed storage system with object, block, and file storage
- Highly scalable and designed for large-scale deployments
- Strong data consistency and fault tolerance mechanisms
Cons of Ceph
- More complex setup and configuration compared to Velero
- Higher resource requirements for optimal performance
- Steeper learning curve for administrators
Code Comparison
Ceph (C++):
int main(int argc, const char **argv) {
vector<const char*> args;
argv_to_vec(argc, argv, args);
auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT,
CODE_ENVIRONMENT_UTILITY, 0);
common_init_finish(g_ceph_context);
// ... (additional initialization code)
}
Velero (Go):
func main() {
cmd := newRootCommand(f)
if err := cmd.Execute(); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}
While both projects serve different purposes, Ceph focuses on distributed storage, offering a more comprehensive solution for large-scale data management. Velero, on the other hand, specializes in backup and disaster recovery for Kubernetes clusters, providing a more targeted and easier-to-use solution for specific use cases.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Overview
Velero (formerly Heptio Ark) gives you tools to back up and restore your Kubernetes cluster resources and persistent volumes. You can run Velero with a public cloud platform or on-premises.
Velero lets you:
- Take backups of your cluster and restore in case of loss.
- Migrate cluster resources to other clusters.
- Replicate your production cluster to development and testing clusters.
Velero consists of:
- A server that runs on your cluster
- A command-line client that runs locally
Documentation
The documentation provides a getting started guide and information about building from source, architecture, extending Velero and more.
Please use the version selector at the top of the site to ensure you are using the appropriate documentation for your version of Velero.
Troubleshooting
If you encounter issues, review the troubleshooting docs, file an issue, or talk to us on the #velero channel on the Kubernetes Slack server.
Contributing
If you are ready to jump in and test, add code, or help with documentation, follow the instructions on our Start contributing documentation for guidance on how to setup Velero for development.
Changelog
See the list of releases to find out about feature changes.
Velero compatibility matrix
The following is a list of the supported Kubernetes versions for each Velero version.
Velero version | Expected Kubernetes version compatibility | Tested on Kubernetes version |
---|---|---|
1.15 | 1.18-latest | 1.28.8, 1.29.8, 1.30.4 and 1.31.1 |
1.14 | 1.18-latest | 1.27.9, 1.28.9, and 1.29.4 |
1.13 | 1.18-latest | 1.26.5, 1.27.3, 1.27.8, and 1.28.3 |
1.12 | 1.18-latest | 1.25.7, 1.26.5, 1.26.7, and 1.27.3 |
1.11 | 1.18-latest | 1.23.10, 1.24.9, 1.25.5, and 1.26.1 |
Velero supports IPv4, IPv6, and dual stack environments. Support for this was tested against Velero v1.8.
The Velero maintainers are continuously working to expand testing coverage, but are not able to test every combination of Velero and supported Kubernetes versions for each Velero release. The table above is meant to track the current testing coverage and the expected supported Kubernetes versions for each Velero version.
If you are interested in using a different version of Kubernetes with a given Velero version, we'd recommend that you perform testing before installing or upgrading your environment. For full information around capabilities within a release, also see the Velero release notes or Kubernetes release notes. See the Velero support page for information about supported versions of Velero.
For each release, Velero maintainers run the test to ensure the upgrade path from n-2 minor release. For example, before the release of v1.10.x, the test will verify that the backup created by v1.9.x and v1.8.x can be restored using the build to be tagged as v1.10.x.
Top Related Projects
Backup and migrate Kubernetes applications and their persistent volumes
Fast, secure, efficient backup program
🛅 Backup your Kubernetes Stateful Applications
MinIO is a high-performance, S3 compatible object store, open sourced under GNU AGPLv3 license.
Storage Orchestration for Kubernetes
Ceph is a distributed object, block, and file storage platform
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot