Difficulty: Beginner
Estimated Time: 10 minutes

Velero gives you tools to back up and restore your Kubernetes cluster resources and persistent volumes. Velero lets you:

  • Take backups of your cluster and restore in case of loss.
  • Copy cluster resources across cloud providers. NOTE: Cloud volume migrations are not yet supported.
  • Replicate your production environment for development and testing environments.

Velero consists of:

  • A server that runs on your cluster
  • A command-line client that runs locally

For more information, the documentation provides a getting started guide, plus information about building from source, architecture, extending Velero, and more.

Heptio Velero

Step 1 of 3

Set Up our Environment

Let's pull down the Heptio Velero GitHub repo to help us get started: git clone https://github.com/heptio/velero

Let's download and install the Velero client: curl -LO https://github.com/heptio/velero/releases/download/v1.1.0/velero-v1.1.0-linux-amd64.tar.gz

tar -C /usr/local/bin -xzvf velero-v1.1.0-linux-amd64.tar.gz

Add velero directory to PATH export PATH=$PATH:/usr/local/bin/velero-v1.1.0-linux-amd64/

Create a Velero-specific credentials file (credentials-velero) in your local directory:

echo "[default]
aws_access_key_id = minio
aws_secret_access_key = minio123" > credentials-velero

Start the server and the local storage service:

kubectl apply -f velero/examples/minio/00-minio-deployment.yaml

velero install \ --provider aws \ --bucket velero \ --secret-file ./credentials-velero \ --use-volume-snapshots=false \ --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://minio.velero.svc:9000

This example assumes that it is running within a local cluster without a volume provider capable of snapshots, so no VolumeSnapshotLocation is created (--use-volume-snapshots=false).

Deploy an example nginx application: kubectl apply -f velero/examples/nginx-app/base.yaml

Check to see that both Velero and nginx deployments have been successfully created:

kubectl get deployments -l component=velero --namespace=velero

kubectl get deployments --namespace=nginx-example