Project: Velero (Runtime / Cloud Native Storage)
File: ibm-config.md

title: "Use IBM Cloud Object Storage as Velero's storage destination." layout: docs You can deploy Velero on IBM or clouds, or even on any other Kubernetes cluster, but anyway you can use IBM Cloud Object Store as a destination for Velero's backups. To set up IBM Cloud Object Storage (COS) as Velero's destination, you: Download an official release of Velero Create your COS instance Create an S3 bucket Define a service that can store data in the bucket Configure and start the Velero server Download the tarball for your client platform. _We strongly recommend that you use an of Velero. The tarballs for each release contain the `velero` command-line client. The code in the main branch of the Velero repository is under active development and is not guaranteed to be stable!_ Extract the tarball: ```bash tar -xvf <RELEASE-TARBALL-NAME>.tar.gz -C /dir/to/extract/to ``` The directory you extracted is called the "Velero directory" in subsequent steps. Move the `velero` binary from the Velero directory to somewhere in your PATH. If you dont have a COS instance, you can create a new one, according to the detailed instructions in . Velero requires an object storage bucket to store backups in. See instructions in . The process of creating service credentials is described in . Several comments: The Velero service will write its backup into the bucket, so it requires the Writer access role. Velero uses an AWS S3 compatible API. Which means it authenticates using a signature created from a pair of access and secret keysa set of HMAC credentials. You can create these HMAC credentials by specifying `{HMAC:true}` as an optional inline parameter. See guide. After successfully creating a Service credential, you can view the JSON definition of the credential. Under the `coshmackeys` entry there are `accesskeyid` and `secretaccesskey`. Use them in the next step. Create a Velero-specific credentials file (`credentials-velero`) in your local directory: ``` [default] awsaccesskeyid=<ACCESSKEY_ID> awssecretaccesskey=<SECRETACCESS_KEY> ``` Where the access key id and secret are the values that you got above. Install Velero, including all prerequisites, into the cluster and start the deployment. This will create a namespace called `velero`, and place a deployment named `velero` in it. ```bash velero install \ --provider aws \ --bucket <YOUR_BUCKET> \ --secret-file ./credentials-velero \ --use-volume-snapshots=false \ --backup-location-config region=<YOURREGION>,s3ForcePathStyle="true",s3Url=<YOURURLACCESSPOINT> ``` Velero does not have a volume snapshot plugin for IBM Cloud, so creating volume snapshots is disabled. Additionally, you can specify `--use-restic` to enable , and `--wait` to wait for the deployment to be ready. (Optional) Specify for the Velero/restic pods. Once the installation is complete, remove the default `VolumeSnapshotLocation` that was created by `velero install`, since it's specific to AWS and won't work for IBM Cloud: ```bash kubectl -n velero delete volumesnapshotlocation.velero.io default ``` For more complex installation needs, use either the Helm chart, or add `--dry-run -o yaml` options for generating the YAML representation for the installation. If you run the nginx example, in file `examples/nginx-app/with-pv.yaml`: Uncomment `storageClassName: <YOURSTORAGECLASS_NAME>` and replace with your `StorageClass` name.