Project: Velero (Runtime / Cloud Native Storage)
File: upgrade-to-1.0.md

title: "Upgrading to Velero 1.0" layout: docs Velero v0.11 installed. If you're not already on v0.11, see the . Upgrading directly from v0.10.x or earlier to v1.0 is not supported! (Optional, but strongly recommended) Create a full copy of the object storage bucket(s) Velero is using. Part 1 of the upgrade procedure will modify the contents of the bucket, so we recommend creating a backup copy of it prior to upgrading. You need to replace legacy metadata in object storage with updated versions for any backups that were originally taken with a version prior to v0.11 (i.e. when the project was named Ark). While Velero v0.11 is backwards-compatible with these legacy files, Velero v1.0 is not. If you're sure that you do not have any backups that were originally created prior to v0.11 (with Ark), you can proceed directly to Part 2. We've added a CLI command to , `velero migrate-backups`, to help you with this. This command will: Replace `ark-backup.json` files in object storage with equivalent `velero-backup.json` files. Create `<backup-name>-volumesnapshots.json.gz` files in object storage if they don't already exist, containing snapshot metadata populated from the backups' `status.volumeBackups` field*. *backups created prior to v0.10 stored snapshot metadata in the `status.volumeBackups` field, but it has subsequently been replaced with the `<backup-name>-volumesnapshots.json.gz` file. Download the tarball for your client platform. Extract the tarball: ```bash tar -xvf <RELEASE-TARBALL-NAME>.tar.gz -C /dir/to/extract/to ``` Move the `velero` binary from the Velero directory to somewhere in your PATH. Scale down your existing Velero deployment: ```bash kubectl -n velero scale deployment/velero --replicas 0 ``` Fetch velero's credentials for accessing your object storage bucket and store them locally for use by `velero migrate-backups`: For AWS: ```bash export AWSSHAREDCREDENTIALS_FILE=./velero-migrate-backups-credentials kubectl -n velero get secret cloud-credentials -o jsonpath="{.data.cloud}" | base64 --decode > $AWSSHAREDCREDENTIALS_FILE ```` For Azure: ```bash export AZURESUBSCRIPTIONID=$(kubectl -n velero get secret cloud-credentials -o jsonpath="{.data.AZURESUBSCRIPTIONID}" | base64 --decode) export AZURETENANTID=$(kubectl -n velero get secret cloud-credentials -o jsonpath="{.data.AZURETENANTID}" | base64 --decode) export AZURECLIENTID=$(kubectl -n velero get secret cloud-credentials -o jsonpath="{.data.AZURECLIENTID}" | base64 --decode) export AZURECLIENTSECRET=$(kubectl -n velero get secret cloud-credentials -o jsonpath="{.data.AZURECLIENTSECRET}" | base64 --decode) export AZURERESOURCEGROUP=$(kubectl -n velero get secret cloud-credentials -o jsonpath="{.data.AZURERESOURCEGROUP}" | base64 --decode) ``` For GCP: ```bash export GOOGLEAPPLICATIONCREDENTIALS=./velero-migrate-backups-credentials kubectl -n velero get secret cloud-credentials -o jsonpath="{.data.cloud}" | base64 --decode > $GOOGLEAPPLICATIONCREDENTIALS ``` List all of your backup storage locations: ```bash velero backup-location get ``` For each backup storage location that you want to use with Velero 1.0, replace any legacy pre-v0.11 backup metadata with the equivalent current formats: ``` velero migrate-backups \ --backup-location <BACKUPLOCATIONNAME> \ --snapshot-location <SNAPSHOTLOCATIONNAME> ``` Scale up your deployment: ```bash kubectl -n velero scale deployment/velero --replicas 1 ``` Remove the local `velero` credentials: For AWS: ``` rm $AWSSHAREDCREDENTIALS_FILE unset AWSSHAREDCREDENTIALS_FILE ``` For Azure: ``` unset AZURESUBSCRIPTIONID unset AZURETENANTID unset AZURECLIENTID unset AZURECLIENTSECRET unset AZURERESOURCEGROUP ``` For GCP: ``` rm $GOOGLEAPPLICATIONCREDENTIALS unset GOOGLEAPPLICATIONCREDENTIALS ``` Download the tarball for your client platform. Extract the tarball: ```bash tar -xvf <RELEASE-TARBALL-NAME>.tar.gz -C /dir/to/extract/to ``` Move the `velero` binary from the Velero directory to somewhere in your PATH, replacing any existing pre-1.0 `velero` binaries. Update the image for the Velero deployment and daemon set (if applicable): ```bash kubectl -n velero set image deployment/velero velero=gcr.io/heptio-images/velero:v1.0.0 kubectl -n velero set image daemonset/restic restic=gcr.io/heptio-images/velero:v1.0.0 ```