Upgrading to Velero 1.11


If you’re not yet running at least Velero v1.6, see the following:

Before upgrading, check the Velero compatibility matrix to make sure your version of Kubernetes is supported by the new version of Velero.


Caution: From Velero v1.10, except for using restic to do file-system level backup and restore, kopia is also been integrated, it could be upgraded from v1.10 to v1.11 directly, but it would be a little bit of difference when upgrading to v1.11 from a version lower than v1.10.0.

Upgrade from version lower than v1.10.0

  1. Install the Velero v1.11 command-line interface (CLI) by following the instructions here.

    Verify that you’ve properly installed it by running:

    velero version --client-only

    You should see the following output:

        Version: v1.11.0
        Git commit: <git SHA>
  2. Update the Velero custom resource definitions (CRDs) to include schema changes across all CRDs that are at the core of the new features in this release:

    velero install --crds-only --dry-run -o yaml | kubectl apply -f -

    NOTE: Since velero v1.10.0 only v1 CRD will be supported during installation, therefore, the v1.10.0 will only work on Kubernetes version >= v1.16

  3. Update the container image and objects fields used by the Velero deployment and, optionally, the restic daemon set:

    # uploader_type value could be restic or kopia
    kubectl get deploy -n velero -ojson \
    | sed "s#\"image\"\: \"velero\/velero\:v[0-9]*.[0-9]*.[0-9]\"#\"image\"\: \"velero\/velero\:v1.11.0\"#g" \
    | sed "s#\"server\",#\"server\",\"--uploader-type=$uploader_type\",#g" \
    | sed "s#default-volumes-to-restic#default-volumes-to-fs-backup#g" \
    | sed "s#default-restic-prune-frequency#default-repo-maintain-frequency#g" \
    | sed "s#restic-timeout#fs-backup-timeout#g" \
    | kubectl apply -f -
    # optional, if using the restic daemon set
    echo $(kubectl get ds -n velero restic -ojson) \
    | sed "s#\"image\"\: \"velero\/velero\:v[0-9]*.[0-9]*.[0-9]\"#\"image\"\: \"velero\/velero\:v1.11.0\"#g" \
    | sed "s#\"name\"\: \"restic\"#\"name\"\: \"node-agent\"#g" \
    | sed "s#\[ \"restic\",#\[ \"node-agent\",#g" \
    | kubectl apply -f -
    kubectl delete ds -n velero restic --force --grace-period 0
  4. Confirm that the deployment is up and running with the correct version by running:

    velero version

    You should see the following output:

        Version: v1.11.0
        Git commit: <git SHA>
        Version: v1.11.0

Upgrade from v1.10

If it’s directly upgraded from v1.10, the other steps remain the same only except for step 3 above. The details as below:

  1. Update the container image used by the Velero deployment, plugin and, optionally, the node agent daemon set:
    # set the container and image of the init container for plugin accordingly,
    # if you are using other plugin
    kubectl set image deployment/velero \
        velero=velero/velero:v1.11.0 \
        velero-plugin-for-aws=velero/velero-plugin-for-aws:v1.7.0 \
        --namespace velero
    # optional, if using the node agent daemonset
    kubectl set image daemonset/node-agent \
        node-agent=velero/velero:v1.11.0 \
        --namespace velero


If upgraded from v1.9.x, there still remains some resources left over in the cluster and never used in v1.11.x, which could be deleted through kubectl and it is based on your desire:

- resticrepository CRD and related CRs
- velero-restic-credentials secret in velero install namespace
Getting Started

To help you get started, see the documentation.