Migrating from Heptio Ark to Velero

As of v0.11.0, Heptio Ark has become Velero. This means the following changes have been made:

  • The ark CLI client is now velero.
  • The default Kubernetes namespace and ServiceAccount are now named velero (formerly heptio-ark).
  • The container image name is now (formerly
  • CRDs are now under the new API group name (formerly

The following instructions will help you migrate your existing Ark installation to Velero.


  • Ark v0.10.x installed. See the v0.10.x upgrade instructions to upgrade from older versions.
  • kubectl installed.
  • cluster-admin permissions.

Migration process

At a high level, the migration process involves the following steps:

  • Scale down the ark deployment, so it will not process schedules, backups, or restores during the migration period.
  • Create a new namespace (named velero by default).
  • Apply the new CRDs.
  • Migrate existing Ark CRD objects, labels, and annotations to the new Velero equivalents.
  • Recreate the existing cloud credentials secret(s) in the velero namespace.
  • Apply the updated Kubernetes deployment and daemonset (for restic support) to use the new container images and namespace.
  • Remove the existing Ark namespace (which includes the deployment), CRDs, and ClusterRoleBinding.

These steps are provided in a script here:

kubectl scale --namespace heptio-ark deployment/ark --replicas 0
 OS=$(uname | tr '[:upper:]' '[:lower:]') # Determine if the OS is Linux or macOS

# Download the velero client/example tarball to and unpack
curl -L${OS}-${ARCH}.tar.gz --output velero-v0.11.0-${OS}-${ARCH}.tar.gz
tar xvf velero-v0.11.0-${OS}-${ARCH}.tar.gz

# Create the prerequisite CRDs and namespace
kubectl apply -f config/common/00-prereqs.yaml

# Download and unpack the crd-migrator tool
curl -L${OS}-${ARCH}.tar.gz --output crd-migration-tool-v1.0.0-${OS}-${ARCH}.tar.gz
tar xvf crd-migration-tool-v1.0.0-${OS}-${ARCH}.tar.gz

# Run the tool against your cluster.
./crd-migrator \
    --from \
    --to \
    --label-mappings, \
    --annotation-mappings \
    --namespace-mappings heptio-ark:velero

# Copy the necessary secret from the ark namespace
kubectl get secret --namespace heptio-ark cloud-credentials --export -o yaml | kubectl apply --namespace velero -f -

# Apply the Velero deployment and restic DaemonSet for your platform
## GCP
#kubectl apply -f config/gcp/10-deployment.yaml
#kubectl apply -f config/gcp/20-restic-daemonset.yaml
## AWS
#kubectl apply -f config/aws/10-deployment.yaml
#kubectl apply -f config/aws/20-restic-daemonset.yaml
## Azure
#kubectl apply -f config/azure/00-deployment.yaml
#kubectl apply -f config/azure/20-restic-daemonset.yaml

# Verify your data is still present
./velero get backup
./velero get restore

# Remove old Ark data
kubectl delete namespace heptio-ark
kubectl delete crds -l component=ark 
kubectl delete clusterrolebindings -l component=ark
Getting Started

To help you get started, see the documentation.