Velero continues to evolve and gain adoption in the Kubernetes community. It is with pride and excitement that we announce the release of Velero 1.5.
With new features and functionalities, like using restic to backup pod volumes without adding annotations to pods, introducing the new DeleteItemAction plugin type, supporting hooks to customize restore operations, the broad theme for this release is operational ease.
Before diving into the features in this release, we would like to state explicitly that we stand in solidarity against racism and, to that effect, we have made the following changes to the Velero project:
mainas their default branch.
maintag. For example, the latest development image for
If we have missed addressing insensitive verbiage anywhere, please let us know on the #velero slack channel or by creating issues on github and we will address it immediately.
Prior to this release, Velero only supported opt-in behavior to backup pod volumes using restic that required users to individually annotate their pod spec with the volumes to backup up using restic. This was frequently raised in the community as a pain point and many users built automation to add the necessary annotations.
With the release of 1.5, Velero now has the ability to backup all pod volumes using restic, without having to individually annotate every pod. This feature allows users to backup all pod volumes, by default, using restic, except for:
You can enable this feature on a per backup basis or as a default setting for all Velero backups. Read more about this feature on our restic integration page on our documentation website.
Plugins in Velero are independent binaries that you can use to customize Velero’s behavior. In this release, we introduce a new plugin type, DeleteItemAction plugin, that offers yet another extension point to customize Velero’s functionality. This is in addition to the already existing ObjectStore plugin, VolumeSnapshotter plugin, BackupItemAction, and RestoreItemAction plugin types.
The velero-plugin-for-csi introduced a new pattern for backing up and restoring volume snapshots using BackupItemAction and RestoreItemAction plugins. To allow the community to adopt a similar pattern for their custom resources, Velero had to provide an extension point to clean up both in-cluster and external resources, created by their BackupItemAction plugins. This is now possible with DeleteItemAction plugins. The interface for this new plugin type is similar to that of BackupItemAction and RestoreItemAction plugins. You can read more about the design for this plugin in the design documents of our repository on github.
Velero has been helping its users with disaster recovery for their Kubernetes clusters since its first release in August 2017. Over the past three years, there have been major improvements in the ecosystem, including new frameworks that make it easier to develop solutions for Kubernetes. This release marks the first steps in our journey to modernize the Velero codebase and take advantage of newer frameworks as we begin the adoption of kubebuilder, the most popular framework to build custom Kubernetes APIs and their respective controllers. As this effort continues, we would like to invite more folks to be a part of our growing contributor base.
Staying on the theme of using tools that are current and growing our contributor base: thanks to our community member and first-time contributor @RobReus, Velero now uses docker buildx to build multi-arch images for Velero. You can read more about this on our documentation website and docker’s documentation.
Using Velero’s Backup Hooks functionality, users can quiesce and un-quiesce applications before and after backup operations. This allows users to take application consistent backups of volume data. However, similar functionality to perform custom actions during or after a restore operation was unavailable. This led our users to build custom extensions outside of Velero as a workaround.
Driven wholly by the Velero community, we have a design for the missing Restore Hooks functionality. Thank you to our community members @marccampbell and @areed for driving the design proposal, and to everyone who participated in the design discussions and reviews. In the design, there are two kinds of Restore Hooks:
You can find more details about the design in the design document for this feature.
Velero can specify a custom order in which resources can be backed up. Thanks to our community member @phuongatemc for driving this functionality from design to implementation. This is going to serve as a building block to support backup and restore of certain stateful applications. Here is the design document for the enhancement.
These were just some highlights of the release. You can always find more information about the release in the release change log. See the 1.5 upgrade instructions to start planning your upgrade today.
Velero is better because of our contributors and maintainers. It is because of you that we can bring great software to the community. Please join us during our online community meetings every Tuesday and catch up with past meetings on YouTube on the Velero Community Meetings playlist.
You can always find the latest project information at velero.io. Look for issues on GitHub marked Good first issue or Help wanted if you want to roll up your sleeves and write some code with us.
You can chat with us on Kubernetes Slack in the #velero channel and follow us on Twitter at @projectvelero.