Convert Figma logo to code with AI

vmware-tanzu logovelero

Backup and migrate Kubernetes applications and their persistent volumes

8,557
1,383
8,557
576

Top Related Projects

8,557

Backup and migrate Kubernetes applications and their persistent volumes

25,714

Fast, secure, efficient backup program

1,303

🛅 Backup your Kubernetes Stateful Applications

46,602

MinIO is a high-performance, S3 compatible object store, open sourced under GNU AGPLv3 license.

12,240

Storage Orchestration for Kubernetes

13,848

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:

  1. Install the Velero CLI:
brew install velero
  1. 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
  1. Create a backup:
velero backup create my-backup --include-namespaces my-namespace
  1. 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

8,557

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.

25,714

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.

1,303

🛅 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.

46,602

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.

12,240

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.

13,848

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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

100

Build Status CII Best Practices GitHub release (latest SemVer)

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 versionExpected Kubernetes version compatibilityTested on Kubernetes version
1.141.18-latest1.27.9, 1.28.9, and 1.29.4
1.131.18-latest1.26.5, 1.27.3, 1.27.8, and 1.28.3
1.121.18-latest1.25.7, 1.26.5, 1.26.7, and 1.27.3
1.111.18-latest1.23.10, 1.24.9, 1.25.5, and 1.26.1
1.101.18-latest1.22.5, 1.23.8, 1.24.6 and 1.25.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.