Velero ------ `Velero `_ is a tool maintained by Heptio that allows you to back up and restore your Kubernetes cluster along with its persistent volumes. In addition to being a backup tool, it can also be used to replicate an existing cluster in a different environment in order to establish a testing environment. Velero comprises a server that runs in your cluster and a local command-line client. Cluster resources can be backed up locally or to a cloud object storage service like AWS S3, Google Cloud Storage or Azure Blob Storage. Setup ~~~~~ Configure AWS S3 ++++++++++++++++ Once the `latest release `_ of Velero has been installed on your local machine, the Velero documentation has a `step-by-step guide `_ outlining how to configure Velero to interact with your AWS environment. The following steps, outlined in detail in the Velero documentation, are required: * Create an S3 bucket in which cluster backups can be stored. Heptio recommends a unique S3 bucket for each Kubernetes cluster * Create an IAM user for Velero. Heptio recommends a unique username per cluster .. note:: If you are using Tarmak with kube2iam, Velero can be used alongside kube2iam by defining a Trust Policy. This process is defined in Velero's `step-by-step AWS guide `_ . Install Velero on remote cluster +++++++++++++++++++++++++++++++++ :: $ git clone https://github.com/heptio/velero.git $ tarmak kubectl apply -f velero/examples/common/00-prereqs.yaml $ tarmak kubectl apply -f velero/examples/minio/ The ``00-prereqs.yaml`` file creates a `heptio-velero` namespace, an `velero` service account and applies RBAC rules to grant permissions to that service account, as well as CustomResourceDefinitions for the resources used by `velero`. The ``minio`` YAMLs install `Minio `_, an object storage server compatible with AWS S3 (and other object storage services). Operation ~~~~~~~~~ Using Velero on a Tarmak cluster +++++++++++++++++++++++++++++++++ In order to run Velero operations against the cluster (i.e. ``velero backup`` / ``velero restore`` / ``velero schedule``), run the following tarmak command to ensure that an SSH tunnel is open, and that the current cluster's kubeconfig file has been saved locally and set as the ``KUBECONFIG`` environment variable: :: $ export $(tarmak cluster kubeconfig) Velero will now we able to interact with the Tarmak cluster. If you have deployed velero in a non-default namespace (default is `heptio-velero`) on your cluster, you'll need to specify this with a ``--namespace`` flag. Recovery and migration ++++++++++++++++++++++ Guidance for using Velero for `Disaster recovery `_ and `Cluster migration `_ are outlined on the Velero documentation pages.