Documentation for version v1.0.0 is no longer actively maintained. The version you are currently viewing is a static snapshot. For up-to-date documentation, see the latest version.
mkdir $HOME/go export GOPATH=$HOME/go go get github.com/vmware-tanzu/velero
go is your
import path for Go.
For Go development, it is recommended to add the Go import path (
$HOME/go in this example) to your path.
Download the archive named
Source code from the
release page and extract it in your Go import path as
Note that the Makefile targets assume building from a git repository. When building from an archive, you will be limited to the
go build commands described below.
There are a number of different ways to build
velero depending on your needs. This section outlines the main possibilities.
To build the
velero binary on your local machine, compiled for your OS and architecture, run:
go build ./cmd/velero
The latter will place the compiled binary under
$PWD/_output/bin/$GOOS/$GOARCH, and will splice version and git commit information in so that
velero version displays proper output.
velero install will also use the version information to determine which tagged image to deploy.
To build the
velero binary targeting
linux/amd64 within a build container on your local machine, run:
See the Cross compiling section below for details on building for alternate OS/architecture combinations.
To build a Velero container image, first set the
$REGISTRY environment variable. For example, if you want to build the
gcr.io/my-registry/velero:main image, set
gcr.io/my-registry. Optionally, set the
$VERSION environment variable to change the image tag. Then, run:
To push your image to a registry, run:
The following files are automatically generated from the source code:
make update to regenerate files if you make the following changes:
Run generate-proto.sh to regenerate files if you make the following changes:
make build builds an
velero binary for
To build for another platform, run
For example, to build for the Mac, run
All binaries are placed in
_output/bin/<GOOS>/<GOARCH>– for example,
Makefile has a convenience target,
all-build, that builds the following platforms:
To run unit tests, use
make test. You can also run
make verify to ensure that all generated
files (clientset, listers, shared informers, docs) are up to date.
When running Velero, you will need to ensure that you set up all of the following:
To provision a cluster on AWS using Amazon’s official CloudFormation templates, here are two options:
eksctl - a CLI for Amazon EKS
Running the Velero server locally can speed up iterative development. This eliminates the need to rebuild the Velero server image and redeploy it to the cluster with each change.
Set the appropriate environment variable for your cloud provider:
You can use the
velero install command to install velero into your cluster, then remove the deployment from the cluster, leaving you
with all of the required in-cluster resources.
This examples assumes you are using an existing cluster in AWS.
velero binary that you’ve built, run
# velero install requires a credentials file to exist, but we will # not be using it since we're running the server locally, so just # create an empty file to pass to the install command. touch fake-credentials-file velero install \ --provider aws \ --bucket $BUCKET \ --backup-location-config region=$REGION \ --snapshot-location-config region=$REGION \ --secret-file ./fake-credentials-file # 'velero install' creates an in-cluster deployment of the # velero server using an official velero image, but we want # to run the velero server on our local machine using the # binary we built, so delete the in-cluster deployment. kubectl --namespace velero delete deployment velero rm fake-credentials-file
Make sure the
velero binary you build is in your
PATH, or specify the full path.
Start the server:
velero server [CLI flags]. The following CLI flags may be useful to customize, but see
velero server --help for full details:
--kubeconfig: set the path to the kubeconfig file the Velero server uses to talk to the Kubernetes apiserver (default
--namespace: the set namespace where the Velero server should look for backups, schedules, restores (default
--log-level: set the Velero server’s log level (default
--plugin-dir: set the directory where the Velero server looks for plugins (default
--metrics-address: set the bind address and port where Prometheus metrics are exposed (default
Ensure you’ve built a
velero container image and either loaded it onto your cluster’s nodes, or pushed it to a registry (see
Install Velero into the cluster (the example below assumes you’re using AWS):
velero install \ --provider aws \ --image $YOUR_CONTAINER_IMAGE \ --bucket $BUCKET \ --backup-location-config region=$REGION \ --snapshot-location-config region=$REGION \ --secret-file $YOUR_AWS_CREDENTIALS_FILE
If you need to add or update the vendored dependencies, see Vendoring dependencies.