Skip to content

Releases: vmware-tanzu/velero

v1.1.0

22 Aug 14:47
a357f21
Compare
Choose a tag to compare

v1.1.0

Download

Container Image

gcr.io/heptio-images/velero:v1.1.0

Documentation

https://velero.io/docs/v1.1.0/

Upgrading

If you are running Velero in a non-default namespace, i.e. any namespace other than velero, manual intervention is required when upgrading to v1.1. See upgrading to v1.1 for details.

Highlights

Improved Restic Support

A big focus of our work this cycle was continuing to improve support for restic. To that end, we’ve fixed the following bugs:

  • Prior to version 1.1, restic backups could be delayed or failed due to long-lived locks on the repository. Now, Velero removes stale locks from restic repositories every 5 minutes, ensuring they do not interrupt normal operations.
  • Previously, the PodVolumeBackup custom resources that represented a restic backup within a cluster were not synchronized between clusters, making it unclear what restic volumes were available to restore into a new cluster. In version 1.1, these resources are synced into clusters, so they are more visible to you when you are trying to restore volumes.
  • Originally, Velero would not validate the host path in which volumes were mounted on a given node. If a node did not expose the filesystem correctly, you wouldn’t know about it until a backup failed. Now, Velero’s restic server will validate that the directory structure is correct on startup, providing earlier feedback when it’s not.
  • Velero’s restic support is intended to work on a broad range of volume types. With the general release of the Container Storage Interface API, Velero can now use restic to back up CSI volumes.

Along with our bug fixes, we’ve provided an easier way to move restic backups between storage providers. Different providers often have different StorageClasses, requiring user intervention to make restores successfully complete.

To make cross-provider moves simpler, we’ve introduced a StorageClass remapping plug-in. It allows you to automatically translate one StorageClass on PersistentVolumeClaims and PersistentVolumes to another. You can read more about it in our documentation.

Quality-of-Life Improvements

We’ve also made several other enhancements to Velero that should benefit all users.

Users sometimes ask about recommendations for Velero’s resource allocation within their cluster. To help with this concern, we’ve added default resource requirements to the Velero Deployment and restic init containers, along with configurable requests and limits for the restic DaemonSet. All these values can be adjusted if your environment requires it.

We’ve also taken some time to improve Velero for the future by updating the Deployment and DaemonSet to use the apps/v1 API group, which will be the default in Kubernetes 1.16. This change means that velero install and the velero plugin commands will require Kubernetes 1.9 or later to work. Existing Velero installs will continue to work without needing changes, however.

In order to help you better understand what resources have been backed up, we’ve added a list of resources in the velero backup describe --details command. This change makes it easier to inspect a backup without having to download and extract it.

In the same vein, we’ve added the ability to put custom tags on cloud-provider snapshots. This approach should provide a better way to keep track of the resources being created in your cloud account. To add a label to a snapshot at backup time, use the --labels argument in the velero backup create command.

Our final change for increasing visibility into your Velero installation is the velero plugin get command. This command will report all the plug-ins within the Velero deployment..

Velero has previously used a restore-only flag on the server to control whether a cluster could write backups to object storage. With Velero 1.1, we’ve now moved the restore-only behavior into read-only BackupStorageLocations. This move means that the Velero server can use a BackupStorageLocation as a source to restore from, but not for backups, while still retaining the ability to back up to other configured locations. In the future, the --restore-only flag will be removed in favor of configuring read-only BackupStorageLocations.

Community Contributions

We appreciate all community contributions, whether they be pull requests, bug reports, feature requests, or just questions. With this release, we wanted to draw attention to a few contributions in particular:

For users of node-based IAM authentication systems such as kube2iam, velero install now supports the --pod-annotations argument for applying necessary annotations at install time. This support should make velero install more flexible for scenarios that do not use Secrets for access to their cloud buckets and volumes. You can read more about how to use this new argument in our AWS documentation. Huge thanks to Traci Kamp for this contribution.

Structured logging is important for any application, and Velero is no different. Starting with version 1.1, the Velero server can now output its logs in a JSON format, allowing easier parsing and ingestion. Thank you to Donovan Carthew for this feature.

AWS supports multiple profiles for accessing object storage, but in the past Velero only used the default. With v.1.1, you can set the profile key on yourBackupStorageLocation to specify an alternate profile. If no profile is set, the default one is used, making this change backward compatible. Thanks Pranav Gaikwad for this change.

Finally, thanks to testing by Dylan Murray and Scott Seago, an issue with running Velero in non-default namespaces was found in our beta version for this release. If you’re running Velero in a namespace other than velero, please follow the upgrade instructions.

All Changes

  • Add the prefix to BSL config map so that object stores can use it when initializing (#1767, @betta1)
  • Use VELERO_NAMESPACE to determine what namespace Velero server is running in. For any v1.0 installations using a different namespace, the VELERO_NAMESPACE environment variable will need to be set to the correct namespace. (#1748, @nrb)
  • support setting CPU/memory requests with unbounded limits using velero install (#1745, @prydonius)
  • sort output of resource list in velero backup describe --details (#1741, @prydonius)
  • adds the ability to define custom tags to be added to snapshots by specifying custom labels on the Backup CR with the velero backup create --labels flag (#1729, @prydonius)
  • Restore restic volumes from PodVolumeBackups CRs (#1723, @carlisia)
  • properly restore PVs backed up with restic and a reclaim policy of "Retain" (#1713, @skriss)
  • Make --secret-file flag on velero install optional, add --no-secret flag for explicit confirmation (#1699, @nrb)
  • Add low cpu/memory limits to the restic init container. This allows for restoration into namespaces with quotas defined. (#1677, @nrb)
  • Adds configurable CPU/memory requests and limits to the restic DaemonSet generated by velero install. (#1710, @prydonius)
  • remove any stale locks from restic repositories every 5m (#1708, @skriss)
  • error if backup storage location's Bucket field also contains a prefix, and gracefully handle leading/trailing slashes on Bucket and Prefix fields. (#1694, @skriss)
  • enhancement: allow option to choose JSON log output (#1654, @carthewd)
  • Adds configurable CPU/memory requests and limits to the Velero Deployment generated by velero install. (#1678, @prydonius)
  • Store restic PodVolumeBackups in obj storage & use that as source of truth like regular backups. (#1577, @carlisia)
  • Update Velero Deployment to use apps/v1 API group. velero install and velero plugin add/remove commands will now require Kubernetes 1.9+ (#1673, @nrb)
  • Respect the --kubecontext and --kubeconfig arugments for velero install. (#1656, @nrb)
  • add plugin for updating PV & PVC storage classes on restore based on a config map (#1621, @skriss)
  • Add restic support for CSI volumes (#1615, @nrb)
  • bug fix: Fixed namespace usage with cli command 'version' (#1630, @jwmatthews)
  • enhancement: allow users to specify additional Velero/Restic pod annotations on the command line with the pod-annotations flag. (#1626, @tlkamp)
  • adds validation for pod volumes hostPath mount on restic server startup (#1616, @prydonius)
  • enable support for ppc64le architecture (#1605, @Prajyot)
  • bug fix: only restore additional items returned from restore item actions if they match the restore's namespace/resource selectors (#1612, @skriss)
  • add startTimestamp and completionTimestamp to PodVolumeBackup and PodVolumeRestore status fields (#1609, @prydonius)
  • bug fix: respect namespace selector when determining which restore item actions to run (#1607, @skriss)
  • ensure correct backup item actions run with namespace selector (#1601, @prydonius)
  • allows excluding resources from backups with the velero.io/exclude-from-backup=true label (#1588, @prydonius)
  • ensures backup item action modifications to an item's namespace/name are saved in the file path in the tarball (#1587, @prydonius)
  • Hides velero server and velero restic server comma...
Read more

v1.1.0-beta.2

13 Aug 21:04
af4b937
Compare
Choose a tag to compare
v1.1.0-beta.2 Pre-release
Pre-release

Download

Container Image

gcr.io/heptio-images/velero:v1.1.0-beta.2

Documentation

https://velero.io/docs/v1.1.0-beta.2/

Bug Fixes

  • Use VELERO_NAMESPACE to determine what namespace Velero server is running in. For any v1.0 installations using a different namespace, the VELERO_NAMESPACE environment variable will need to be set to the correct namespace. (#1748, @nrb)
  • Use backup's namespace when syncing pod volume backups into cluster from object storage (#1760, @skriss)
  • support setting CPU/memory requests with unbounded limits using velero install (#1745, @prydonius)
  • sort output of resource list in velero backup describe --details (#1741, @prydonius)
  • upload pod volume backups from all pods to object storage (#1739, @skriss)

v1.1.0-beta.1

07 Aug 13:57
9d9c232
Compare
Choose a tag to compare
v1.1.0-beta.1 Pre-release
Pre-release

2019-08-07

Download

Container Image

gcr.io/heptio-images/velero:v1.1.0-beta.1

Documentation

https://velero.io/docs/v1.1.0-beta.1/

All Changes

  • adds the ability to define custom tags to be added to snapshots by specifying custom labels on the Backup CR with the velero backup create --labels flag (#1729, @prydonius)
  • Restore restic volumes from PodVolumeBackups CRs (#1723, @carlisia)
  • properly restore PVs backed up with restic and a reclaim policy of "Retain" (#1713, @skriss)
  • Make --secret-file flag on velero install optional, add --no-secret flag for explicit confirmation (#1699, @nrb)
  • Add low cpu/memory limits to the restic init container. This allows for restoration into namespaces with quotas defined. (#1677, @nrb)
  • Adds configurable CPU/memory requests and limits to the restic DaemonSet generated by velero install. (#1710, @prydonius)
  • remove any stale locks from restic repositories every 5m (#1708, @skriss)
  • error if backup storage location's Bucket field also contains a prefix, and gracefully handle leading/trailing slashes on Bucket and Prefix fields. (#1694, @skriss)
  • enhancement: allow option to choose JSON log output (#1654, @carthewd)
  • Adds configurable CPU/memory requests and limits to the Velero Deployment generated by velero install. (#1678, @prydonius)
  • Store restic PodVolumeBackups in obj storage & use that as source of truth like regular backups. (#1577, @carlisia)
  • Update Velero Deployment to use apps/v1 API group. velero install and velero plugin add/remove commands will now require Kubernetes 1.9+ (#1673, @nrb)
  • Respect the --kubecontext and --kubeconfig arugments for velero install. (#1656, @nrb)
  • add plugin for updating PV & PVC storage classes on restore based on a config map (#1621, @skriss)
  • Add restic support for CSI volumes (#1615, @nrb)
  • bug fix: Fixed namespace usage with cli command 'version' (#1630, @jwmatthews)
  • enhancement: allow users to specify additional Velero/Restic pod annotations on the command line with the pod-annotations flag. (#1626, @tlkamp)
  • adds validation for pod volumes hostPath mount on restic server startup (#1616, @prydonius)
  • enable support for ppc64le architecture (#1605, @Prajyot)
  • bug fix: only restore additional items returned from restore item actions if they match the restore's namespace/resource selectors (#1612, @skriss)
  • add startTimestamp and completionTimestamp to PodVolumeBackup and PodVolumeRestore status fields (#1609, @prydonius)
  • bug fix: respect namespace selector when determining which restore item actions to run (#1607, @skriss)
  • ensure correct backup item actions run with namespace selector (#1601, @prydonius)
  • allows excluding resources from backups with the velero.io/exclude-from-backup=true label (#1588, @prydonius)
  • ensures backup item action modifications to an item's namespace/name are saved in the file path in the tarball (#1587, @prydonius)
  • Hides velero server and velero restic server commands from the list of available commands as these are not intended for use by the velero CLI user. (#1561, @prydonius)
  • remove dependency on glog, update to klog (#1559, @skriss)
  • move issue-template-gen from docs/ to hack/ (#1558, @skriss)
  • fix panic when processing DeleteBackupRequest objects without labels (#1556, @prydonius)
  • support for multiple AWS profiles (#1548, @pranavgaikwad)
  • Add CLI command to list (get) all Velero plugins (#1535, @carlisia)
  • Added author as a tag on blog post. Should fix 404 error when trying to follow link as specified in issue #1522. (#1522, @coonsd)
  • Allow individual backup storage locations to be read-only (#1517, @skriss)
  • Stop returning an error when a restic volume is empty since it is a valid scenario. (#1480, @carlisia)
  • add ability to use wildcard in includes/excludes (#1428, @guilhem)

v1.0.0

20 May 02:09
72f5cad
Compare
Choose a tag to compare

v1.0.0

2019-05-20

Highlights

  • We've added a new command, velero install, to make it easier to get up and running with Velero. This CLI command replaces the static YAML installation files that were previously part of release tarballs. See the updated [install instructions][3] for more information.
  • We've made a number of improvements to the plugin framework:
    • we've reorganized the relevant packages to minimize the import surface for plugin authors
    • all plugins are now wrapped in panic handlers that will report information on panics back to Velero
    • Velero's --log-level flag is now passed to plugin implementations
    • Errors logged within plugins are now annotated with the file/line of where the error occurred
    • Restore item actions can now optionally return a list of additional related items that should be restored
    • Restore item actions can now indicate that an item should not be restored
  • For Azure installation, the cloud-credentials secret can now be created from a file containing a list of environment variables. Note that velero install always uses this method of providing credentials for Azure. For more details, see [Run on Azure][0].
  • We've added a new phase, PartiallyFailed, for both backups and restores. This new phase is used for backups/restores that successfully process some but not all of their items.
  • We removed all legacy Ark references, including API types, prometheus metrics, restic & hook annotations, etc.
  • The restic integration remains a beta feature. Please continue to try it out and provide feedback, and we'll be working over the next couple of releases to bring it to GA.

Breaking Changes

API

  • All legacy Ark data types and pre-1.0 compatibility code has been removed. Users should migrate any backups created pre-v0.11.0 with the velero migrate-backups command, available in [v0.11.1][2].

Image

  • The base container image has been switched to ubuntu:bionic

Labels/Annotations/Metrics

  • The "ark" annotations for specifying hooks are no longer supported, and have been replaced with "velero"-based equivalents.
  • The "ark" annotation for specifying restic backups is no longer supported, and has been replaced with a "velero"-based equivalent.
  • The "ark" prometheus metrics no longer exist, and have been replaced with "velero"-based equivalents.

Plugin Development

  • BlockStore plugins are now named VolumeSnapshotter plugins
  • Plugin APIs have moved to reduce the import surface:
    • Plugin gRPC servers live in github.com/heptio/velero/pkg/plugin/framework
    • Plugin interface types live in github.com/heptio/velero/pkg/plugin/velero
  • RestoreItemAction interface now takes the original item from the backup as a parameter
  • RestoreItemAction plugins can now return additional items to restore
  • RestoreItemAction plugins can now skip restoring an item
  • Plugins may now send stack traces with errors to the Velero server, so that the errors may be put into the server log
  • Plugins must now be "namespaced," using example.domain.com/plugin-name format
    • For external ObjectStore and VolumeSnapshotter plugins. this name will also be the provider name in BackupStorageLoction and VolumeSnapshotLocation objects
  • --log-level flag is now passed to all plugins

Validation

  • Configs for Azure, AWS, and GCP are now checked for invalid or extra keys, and the server is halted if any are found

Download

Container Image

gcr.io/heptio-images/velero:v1.0.0

Documentation

https://velero.io/docs/v1.0.0/

Upgrading

To upgrade from a previous version of Velero, see our [upgrade instructions][1].

All Changes

  • Change base images to ubuntu:bionic (#1488, @skriss)
  • Expose the timestamp of the last successful backup in a gauge (#1448, @fabito)
  • check backup existence before download (#1447, @fabito)
  • Use latest image tag if no version information is provided at build time (#1439, @nrb)
  • switch from restic stats to restic snapshots for checking restic repository existence (#1416, @skriss)
  • GCP: add optional 'project' config to volume snapshot location for if snapshots are in a different project than the IAM account (#1405, @skriss)
  • Disallow bucket names starting with '-' (#1407, @nrb)
  • Shorten label values when they're longer than 63 characters (#1392, @anshulc)
  • Fail backup if it already exists in object storage. (#1390, @ncdc,carlisia)
  • Add PartiallyFailed phase for backups, log + continue on errors during backup process (#1386, @skriss)
  • Remove deprecated "hooks" for backups (they've been replaced by "pre hooks") (#1384, @skriss)
  • Restic repo ensurer: return error if new repository does not become ready within a minute, and fix channel closing/deletion (#1367, @skriss)
  • Support non-namespaced names for built-in plugins (#1366, @nrb)
  • Change container base images to debian:stretch-slim and upgrade to go 1.12 (#1365, @skriss)
  • Azure: allow credentials to be provided in a .env file (path specified by $AZURE_CREDENTIALS_FILE), formatted like (#1364, @skriss):
    AZURE_TENANT_ID=${AZURE_TENANT_ID}
    AZURE_SUBSCRIPTION_ID=${AZURE_SUBSCRIPTION_ID}
    AZURE_CLIENT_ID=${AZURE_CLIENT_ID}
    AZURE_CLIENT_SECRET=${AZURE_CLIENT_SECRET}
    AZURE_RESOURCE_GROUP=${AZURE_RESOURCE_GROUP} 
    
  • Instantiate the plugin manager with the per-restore logger so plugin logs are captured in the per-restore log (#1358, @skriss)
  • Add gauge metrics for number of existing backups and restores (#1353, @fabito)
  • Set default TTL for backups (#1352, @vorar)
  • Validate that there can't be any duplicate plugin name, and that the name format is example.io/name. (#1339, @carlisia)
  • AWS/Azure/GCP: fail fast if unsupported keys are provided in BackupStorageLocation/VolumeSnapshotLocation config (#1338, @skriss)
  • velero backup logs & velero restore logs: show helpful error message if backup/restore does not exist or is not finished processing (#1337, @skriss)
  • Add support for allowing a RestoreItemAction to skip item restore. (#1336, @sseago)
  • Improve error message around invalid S3 URLs, and gracefully handle trailing backslashes. (#1331, @skriss)
  • Set backup's start timestamp before patching it to InProgress so start times display in velero backup get while in progress (#1330, @skriss)
  • Added ability to dynamically disable controllers (#1326, @amanw)
  • Remove deprecated code in preparation for v1.0 release (#1323, @skriss):
    • remove ark.heptio.com API group
    • remove support for reading ark-backup.json files from object storage
    • remove Ark field from RestoreResult type
    • remove support for "hook.backup.ark.heptio.com/..." annotations for specifying hooks
    • remove support for $HOME/.config/ark/ client config directory
    • remove support for restoring Azure snapshots using short snapshot ID formats in backup metadata
    • stop applying "velero-restore" label to restored resources and remove it from the API pkg
    • remove code that strips the "gc.ark.heptio.com" finalizer from backups
    • remove support for "backup.ark.heptio.com/..." annotations for requesting restic backups
    • remove "ark"-prefixed prometheus metrics
    • remove VolumeBackups field and related code from Backup's status
  • Rename BlockStore plugin to VolumeSnapshotter (#1321, @skriss)
  • Bump plugin ProtocolVersion to version 2 (#1319, @carlisia)
  • Remove Warning field from restore item action output (#1318, @skriss)
  • Fix for #1312, use describe to determine if AWS EBS snapshot is encrypted and explicitly pass that value in EC2 CreateVolume call. (#1316, @mstump)
  • Allow restic restore helper image name to be optionally specified via ConfigMap (#1311, @skriss)
  • Compile only once to lower the initialization cost for regexp.MustCompile. (#1306, @pei0804)
  • Enable restore item actions to return additional related items to be restored; have pods return PVCs and PVCs return PVs (#1304, @skriss)
  • Log error locations from plugin logger, and don't overwrite them in the client logger if they exist already (#1301, @skriss)
  • Send stack traces from plugin errors to Velero via gRPC so error location info can be logged (#1300, @skriss)
  • Azure: restore volumes in the original region's zone (#1298, @sylr)
  • Check for and exclude hostPath-based persistent volumes from restic backup (#1297, @skriss)
  • Make resticrepositories non-restorable resources (#1296, @skriss)
  • Gracefully handle failed API groups from the discovery API (#1293, @fabito)
  • Add velero install command for basic use cases. (#1287, @nrb)
  • Collect 3 new metrics: backup_deletion_{attempt|failure|success}_total (#1280, @fabito)
  • Pass --log-level flag to internal/external plugins, matching Velero server's log level (#1278, @skriss)
  • AWS EBS Volume IDs now contain AZ (#1274, @tsturzl)
  • Add panic handlers to all server-side plugin methods (#1270, @skriss)
  • Move all the interfaces and associated types necessary to implement all of the Velero plugins to under the new package velero. (#1264, @carlisia)
  • Update velero restore to not open every single file open during extraction of the data (#1261, @asaf)
  • Remove restore code that waits for a PV to become Available (#1254, @skriss)
  • Improve describe output
  • Move Phase to right under Metadata(name/namespace/label/annotations)
  • Move Validation errors: section right after Phase: section and only show it if the item has a phase of FailedValidation
  • For restores move Warnings and Errors under Validation errors. Leave their display as is. (#1248, @DheerajSShetty)
  • Don't remove storage class from a persistent volume when restoring it (#1246, @skriss)
  • Need to defer closing the the ReadCloser in ObjectStoreGRPCServer.GetObject (#1236, @DheerajSShetty)
  • Update Kubernetes dependencies to matc...
Read more

v0.11.1

17 May 16:51
16f3a9f
Compare
Choose a tag to compare

v0.11.1

2019-05-17

Download

Highlights

  • Added the velero migrate-backups command to migrate legacy Ark backup metadata to the current Velero format in object storage. This command needs to be run in preparation for upgrading to v1.0, if you have backups that were originally created prior to v0.11 (i.e. when the project was named Ark).

v1.0.0-rc.1

10 May 20:09
d05f8e5
Compare
Choose a tag to compare
v1.0.0-rc.1 Pre-release
Pre-release

2019-05-10

This is our first release candidate for v1.0. See the All Changes section below for details of changes since v1.0.0-beta.1. We expect this to be the final release prior to the general availability of v1.0.0. Please try it out in your non-critical environments!

Download

Container Image

gcr.io/heptio-images/velero:v1.0.0-rc.1

Documentation

https://heptio.github.io/velero/v1.0.0-rc.1/

All Changes

  • velero backup download: check for backup existence before attempting download (#1447, @fabito)
  • use the discovery helper's cached resources list when resolving resource short names (#1457, @skriss)
  • add backup_last_successful_timestamp prometheus metric (#1448, @fabito)
  • velero install: add --use-volume-snapshots flag to optionally turn off creation of volume snapshot locations (#1462, @nrb)

v1.0.0-beta.1

03 May 20:01
7a04e98
Compare
Choose a tag to compare
v1.0.0-beta.1 Pre-release
Pre-release

v1.0.0-beta.1

2019-05-03

We're excited to release our first beta for v1.0! This beta includes all key features for v1.0 plus a number of bug fixes and documentation updates. See the All Changes section below for details. Please test it out in your non-critical environments!

We'll continue to fix bugs and make minor changes, and we expect to ship at least one more beta or release candidate prior to the general availability of v1.0.0.

Download

Container Image

gcr.io/heptio-images/velero:v1.0.0-beta.1

Documentation

https://heptio.github.io/velero/v1.0.0-beta.1/

All Changes

  • Add PartiallyFailed phase for restores (#1389, @skriss)
  • Add PartiallyFailed phase for backups, log + continue on errors during backup process (#1386, @skriss)
  • Switch from restic stats to restic snapshots for checking restic repository existence (#1416, @skriss)
  • Disallow bucket names starting with '-' (#1407, @nrb)
  • Shorten label values when they're longer than 63 characters (#1392, @anshulc)
  • Fail backup if it already exists in object storage. (#1390, @ncdc,carlisia)
  • Install command: Use latest image tag if no version information is provided at build time (#1439, @nrb)
  • GCP: add optional 'project' config to volume snapshot location for if snapshots are in a different project than the IAM account (#1405, @skriss)
  • Azure: restore disks with zone information if it exists (#1298, @sylr)
  • Replace config/ with examples/ in release tarball (#1406, @skriss)

v0.11.1-beta.1

03 May 20:00
f0d6d06
Compare
Choose a tag to compare
v0.11.1-beta.1 Pre-release
Pre-release

v0.11.1-beta.1

2019-05-03

Download

Highlights

  • Added the velero migrate-backups command to migrate legacy Ark backup metadata to the current Velero format in object storage. This command needs to be run in preparation for upgrading to v1.0, if you have backups that were originally created prior to v0.11 (i.e. when the project was named Ark).

v1.0.0-alpha.2

25 Apr 02:27
dda76b0
Compare
Choose a tag to compare
v1.0.0-alpha.2 Pre-release
Pre-release

v1.0.0-alpha.2

2019-04-24

Download

Container Image

gcr.io/heptio-images/velero:v1.0.0-alpha.2

Highlights

Our second v1.0 alpha is ready for testing! Please try it out in your non-critial environments. This alpha contains a bunch of bug fixes and smaller enhancements. See the All Changes section below for details.

We expect that our next release will be v1.0.0-beta.1, meaning that all key features for v1.0.0 will be included. Following that release, we'll continue to fix bugs and make minor improvements, and we expect to ship at least one more beta and/or release candidate prior to the general availability of v1.0.0.

All Changes

  • restic repo ensurer: return error if new repository does not become ready within a minute, and fix channel closing/deletion (#1367, @skriss)
  • remove deprecated "hooks" for backups (they've been replaced by "pre hooks") (#1384, @skriss)
  • fix setting up restic identifiers when fully-qualified plugin names are used (#1377, @jmontleon)
  • add --namespace flag to velero install (@1380, @nrb)
  • GCP: allow storageLocation to be specified as a config parameter for VolumeSnapshotLocations (#1375, @ctrox)
  • add new prometheus gauge metrics backup_total and restore_total (#1353, @fabito)
  • update install docs to use velero install (#1376 #1393 #1394, @nrb and @skriss)
  • fix panic in API discovery when 1+ API groups cannot be reached (#1399, @skriss)
  • fail backup if it already exists in object storage (#1390, @carlisia and @ncdc)

v1.0.0-alpha.1

15 Apr 22:07
39bab5a
Compare
Choose a tag to compare
v1.0.0-alpha.1 Pre-release
Pre-release

v1.0.0-alpha.1

2019-04-15

Download

Highlights

We're excited to release our first alpha for v1.0! Please take it for a spin in your non-critical environments. Although we've finished the majority of the planned development work for v1.0, we are still working on a handful of items, so don't consider this alpha release to be fully feature-complete. Here's a quick rundown of the major changes in this release:

  • We've added a new command, velero install, to make it easier to get up and running with Velero
  • We've made a bunch of improvements to the plugin framework:
    • we've reorganized the relevant packages to minimize the import surface for plugin authors
    • all plugins are now wrapped in panic handlers that will report information on panics back to Velero
    • Velero's --log-level flag is now passed to plugin implementations
    • Errors logged within plugins are now annotated with the file/line of where the error occurred
    • Restore item actions can now optionally return a list of additional related items that should be restored
    • Restore item actions can now indicate that an item should not be restored
  • The restic restore helper image used by Velero can now optionally be overridden via config map

Breaking & Notable Changes

API

  • All legacy Ark data types and pre-1.0 compatibility code has been removed. Users should migrate any backups created pre-v0.11.0 with the v0.11.1 migration command (not yet released)

Azure

  • During installation, the cloud-credentials secret can now be created from a file, whose contents look like the following:
    AZURE_TENANT_ID=${AZURE_TENANT_ID}
    AZURE_SUBSCRIPTION_ID=${AZURE_SUBSCRIPTION_ID}
    AZURE_CLIENT_ID=${AZURE_CLIENT_ID}
    AZURE_CLIENT_SECRET=${AZURE_CLIENT_SECRET}
    AZURE_RESOURCE_GROUP=${AZURE_RESOURCE_GROUP}
    
    When using this method, the cloud-credentials secret should be mounted as a volume into the Velero deployment and daemon set, at the path /credentials. Additionally, the $AZURE_CREDENTIALS_FILE environment variable should be set to /credentials/cloud (the location of the file within the Velero pods). Note that velero install always uses this method of providing credentials for Azure.

Image

  • The base container image has been switched to debian:stretch-slim

Plugin Development

  • BlockStore plugins are now named VolumeSnapshotter plugins
  • Plugin APIs have moved to reduce the import surface:
    • Plugin gRPC servers live in github.com/heptio/velero/pkg/plugin/framework
    • Plugin interface types live in github.com/heptio/velero/pkg/plugin/velero
  • RestoreItemAction interface now takes the original item from the backup as a parameter
  • RestoreItemAction plugins can now return additional items to restore
  • RestoreItemAction plugins can now skip restoring an item
  • Plugins may now send stack traces with errors to the Velero server, so that the errors may be put into the server log
  • Plugins must now be "namespaced," using example.domain.com/plugin-name format
    • For external ObjectStore and VolumeSnapshotter plugins. this name will also be the provider name in BackupStorageLoction and VolumeSnapshotLocation objects
  • --log-level flag is now passed to all plugins

Validation

  • Configs for Azure, AWS, and GCP are now checked for invalid or extra keys, and the server is halted if any are found

All Changes

  • change container base images to debian:stretch-slim and upgrade to go 1.12 (#1365, @skriss)
  • Azure: allow credentials to be provided in a .env file (#1364, @skriss)
  • remove deprecated code in preparation for v1.0 release:
    • remove ark.heptio.com API group
    • remove support for reading ark-backup.json files from object storage
    • remove Ark field from RestoreResult type
    • remove support for "hook.backup.ark.heptio.com/..." annotations for specifying hooks
    • remove support for $HOME/.config/ark/ client config directory
    • remove support for restoring Azure snapshots using short snapshot ID formats in backup metadata
    • stop applying "velero-restore" label to restored resources and remove it from the API pkg
    • remove code that strips the "gc.ark.heptio.com" finalizer from backups
    • remove support for "backup.ark.heptio.com/..." annotations for requesting restic backups
    • remove "ark"-prefixed prometheus metrics
    • remove VolumeBackups field and related code from Backup's status (#1323, @skriss)
  • Add velero install command for basic use cases. (#1287, @nrb)
  • Support non-namespaced names for built-in plugins (#1366, @nrb)
  • instantiate the plugin manager with the per-restore logger so plugin logs are captured in the per-restore log (#1358, @skriss)
  • Validate that there can't be any duplicate plugin name, and that the name format is example.io/name. (#1339, @carlisia)
  • Added ability to dynamically disable controllers (#1326, @amanw)
  • set default TTL for backups (#1352, @vorar)
  • aws/azure/gcp: fail fast if unsupported keys are provided in BackupStorageLocation/VolumeSnapshotLocation config (#1338, @skriss)
  • velero backup logs & velero restore logs: show helpful error message if backup/restore does not exist or is not finished processing (#1337, @skriss)
  • Add support for allowing a RestoreItemAction to skip item restore. (#1336, @sseago)
  • Improve error message around invalid S3 URLs, and gracefully handle trailing backslashes. (#1331, @skriss)
  • set backup's start timestamp before patching it to InProgress so start times display in velero backup get while in progress (#1330, @skriss)
  • rename BlockStore plugin to VolumeSnapshotter (#1321, @skriss)
  • Bump plugin ProtocolVersion to version 2 (#1319, @carlisia)
  • remove Warning field from restore item action output (#1318, @skriss)
  • Fix for #1312, use describe to determine if AWS EBS snapshot is encrypted and explicitly pass that value in EC2 CreateVolume call. (#1316, @mstump)
  • Allow restic restore helper image name to be optionally specified via ConfigMap (#1311, @skriss)
  • compile only once to lower the initialization cost for regexp.MustCompile. (#1306, @pei0804)
  • enable restore item actions to return additional related items to be restored; have pods return PVCs and PVCs return PVs (#1304, @skriss)
  • log error locations from plugin logger, and don't overwrite them in the client logger if they exist already (#1301, @skriss)
  • Send stack traces from plugin errors to Velero via gRPC so error location info can be logged (#1300, @skriss)
  • check for and exclude hostPath-based persistent volumes from restic backup (#1297, @skriss)
  • make resticrepositories non-restorable resources (#1296, @skriss)
  • gracefully handle failed API groups from the discovery API (#1293, @fabito)
  • Collect 3 new metrics: backup_deletion_{attempt|failure|success}_total (#1280, @fabito)
  • Pass --log-level flag to internal/external plugins, matching Velero server's log level (#1278, @skriss)
  • AWS EBS Volume IDs now contain AZ (#1274, @tsturzl)
  • add panic handlers to all server-side plugin methods (#1270, @skriss)
  • Move all the interfaces and associated types necessary to implement all of the Velero plugins to under the new package pkg/plugin/velero. (#1264, @carlisia)
  • Update velero restore to not open every single file open during extraction of the data (#1261, @asaf)
  • remove restore code that waits for a PV to become Available (#1254, @skriss)
  • Improve describe output:
    • Move Phase to right under Metadata(name/namespace/label/annotations)
    • Move Validation errors: section right after Phase: section and only show it if the item has a phase of FailedValidation
    • For restores move Warnings and Errors under Validation errors. Leave their display as is. (#1248, @DheerajSShetty)
  • don't remove storageclass from a persistent volume when restoring it (#1246, @skriss)
  • Need to defer closing the the ReadCloser in ObjectStoreGRPCServer.GetObject (#1236, @DheerajSShetty)
  • update Kubernetes dependencies to match v1.12, and update Azure SDK to v19.0.0 (GA) (#1231, @skriss)
  • remove pkg/util/collections/map_utils.go, replace with structured API types and apimachinery's unstructured helpers (#1146, @skriss)
  • Add original resource (from backup) to restore item action interface (#1123, @mwieczorek)

Coming in Future Alpha/Beta Releases:

  • backup & restore phases will be modified to more clearly indicate successes, failures, and partial failures
  • additional safety checks to ensure backups are never overwritten in object storage
  • revised installation documentation that takes advantage of the velero install command
  • as many additional stability and UX issues as we can get to