{"id":36494929,"url":"https://github.com/codegold79/remote-velero","last_synced_at":"2026-01-12T02:00:10.364Z","repository":{"id":48867215,"uuid":"360693879","full_name":"codegold79/remote-velero","owner":"codegold79","description":"A fork of Velero that is able to back up from and restore to remote clusters","archived":false,"fork":false,"pushed_at":"2021-08-27T00:23:35.000Z","size":73482,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-06-19T19:45:04.789Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codegold79.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null}},"created_at":"2021-04-22T22:08:45.000Z","updated_at":"2024-06-19T19:45:04.790Z","dependencies_parsed_at":"2022-09-23T22:52:03.550Z","dependency_job_id":null,"html_url":"https://github.com/codegold79/remote-velero","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/codegold79/remote-velero","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codegold79%2Fremote-velero","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codegold79%2Fremote-velero/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codegold79%2Fremote-velero/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codegold79%2Fremote-velero/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codegold79","download_url":"https://codeload.github.com/codegold79/remote-velero/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codegold79%2Fremote-velero/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28331499,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T00:36:25.062Z","status":"ssl_error","status_checked_at":"2026-01-12T00:36:15.229Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-12T02:00:07.285Z","updated_at":"2026-01-12T02:00:10.286Z","avatar_url":"https://github.com/codegold79.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Remote Velero\n\n## Overview\n\nRemote Velero is a fork of Velero. Velero lets you:\n\n* Take backups of your cluster and restore in case of loss.\n* Migrate cluster resources to other clusters.\n* Replicate your production cluster to development and testing clusters.\n\nVelero consists of:\n\n* A server that runs on your cluster.\n* A command-line client that runs locally.\n\nRemote Velero is the same as above with the addition of\n\n* The ability to back up from a remote cluster (called the source cluster).\n* The ability to restore to a remote cluster (called the destination cluster).\n\n## How to Use Remote Velero (OPTION 1: One Velero using Two Different Remote Clusters)\n\nHere are instructions for setting up one Velero installation on a local service cluster.\nService account credentials enable Velero to connect to two different remote clusters:\none for the source (backup) cluster, and the other for the destination (restore) cluster.\n\n1. Build the Remote Velero binary to use as client.\n\n    * From the root of the Remote Velero project, run\n\n      ```bash\n      make local\n      ```\n\n    * The binary will be generated in a subdirectory of `\u003cRemote Velero project root\u003e/_output/bin/`\n    * Remote Velero binary releases are [available for download](https://github.com/codegold79/remote-velero/releases)\n\n1. Provide remote cluster credentials\n\n    * Create a namespace that Velero will be installed to (default is `velero`)\n\n      ```bash\n      kubectl create namespace velero\n      ```\n\n    * **Note:** It is important to install these secrets before Velero is installed. If you've already installed Velero, delete using\n\n    ```bash\n    kubectl delete namespace velero; kubectl delete crd -l component=velero\n    ```\n\n    * Modify and apply secrets, one each for your two remote clusters (one for source/backup and another for destination/restore)\n\n        * The secret for the remote source cluster must be named `srccluster`.\n        * The secret for the remote destination cluster must be named `destcluster`.\n        * Both secrets must be in the namespace that Velero was installed in.\n        * Provide cluster credentials in one of two ways:\n          1. The data in each secret must contain the host URL associated with the `host` key, and the service account token for the `sa-token` key.\n          2. Or, provide the contents of the remote cluster's `kubeconfig` file in the `kubeconfig` key.\n        * In the secret, you can optionally provide an HTTPS proxy url to use under the `https_proxy` key.\n        * See an example secret manifest for a remote source cluster in [remote-velero/service-acct-creds/src-cluster-cred-example.yaml](remote-velero/service-acct-creds/src-cluster-cred-example.yaml).\n\n        ```yaml\n        apiVersion: v1\n        kind: Secret\n        metadata:\n        name: \u003csrccluster or destcluster\u003e\n        namespace: \u003cnamespace where Velero is installed\u003e\n        type: Opaque\n        data:\n          host: \u003cbase64 encoded host URL\u003e\n          sa-token: \u003cbase64 encoded service account token here\u003e\n          kubeconfig: \u003cbase64 encoded kubeconfig file contents here\u003e\n          https_proxy: \u003cbase64 encoded https proxy URL here\u003e\n        ```\n\n1. Install Remote Velero\n    **Note:** this step must be done after secrets for the remote cluster credentials are applied.\n\n    * Set up your BSL and credentials per normal Velero operation.\n    * Use client binary to install Remote Velero, pointing to a Remote Velero image.\n\n    ```bash\n    export VERSION=\u003cversion number\u003e export IMAGE=projects.registry.vmware.com/tanzu_migrator/remote-velero\n    vel install \\\n    --features=EnableAPIGroupVersions \\\n    --provider aws \\\n    --plugins velero/velero-plugin-for-aws:v1.2.0 \\\n    --use-volume-snapshots=false \\\n    --bucket velero \\\n    --prefix veldat \\\n    --backup-location-config region=minio,s3ForcePathStyle=\"true\",s3Url=http://\u003caddress-to-bsl\u003e:9000 \\\n    --secret-file /path/to/secret/file/for/reading/backup-storage-location \\\n    --image $IMAGE:$VERSION\n    ```\n\n    * **Note:** Instead of downloading the Velero client binary, you can build your own image with `make container`.\n    * To ensure the server is now pointing to the correct remote clusters, look at the velero deployment logs and look for a message similar to the following:\n\n    ```bash\n    level=info msg=\"Server is using source cluster at https://example.servicemesh.biz:6443.\" \n    level=info msg=\"Server is using namespace velero.\"\n    level=info msg=\"Server is using destination cluster at https://example.us-east-2.elb.amazonaws.com:443.\"\n    ```\n\n1. Run backup of a namespace on a remote source cluster.\n\n    ```bash\n    velero backup create backup-1 --include-namespaces example\n    ```\n\n1. Run restore of a namespace on a remote destination cluster.\n\n    ```bash\n    velero restore create restore-1 --from-backup backup-1\n    ```\n\n## How to Use Remote Velero (OPTION 2: Multiple Namespaces, each with Velero Installs. Each Velero Connects to One Remote Cluster)\n\nHere are instructions for setting up two namespaces, each with a Velero installation. Each Velero installation connects to a single\nremote cluster. You can have as many namespaces and Veleros that a single cluster can hold.\n\nInstructions are very similar to Option 1, one velero for two remote clusters. Some build details have been omitted here.\n\n1. Get latest Remote Velero client version from [available binary releases](https://github.com/codegold79/remote-velero/releases).\n\n1. Provide remote cluster credentials before installing Velero in the same namespace.\n\n    * Create a namespace that Velero will be installed to, e.g. \"src-velero\".\n\n      ```bash\n      kubectl create namespace src-velero\n      ```\n    * Create additional namespace(s) that other Veleros will be installed to, e.g. \"dest-velero\".\n\n      ```bash\n      kubectl create namespace dest-velero\n      ```\n\n    * Modify the example secret at [remote-velero/service-acct-creds/remote-cluster-cred-example.yaml](remote-velero/service-acct-creds/remote-cluster-cred-example.yaml) and apply secrets in their respective namespaces.\n\n    **Note: Each namespace has a single secret named \"remotecluster\".**\n\n    * The secret added to each namespace must be named `remotecluster`.\n    * Provide cluster credentials for each remote cluster in one of two ways:\n        1. The data in each secret must contain the host URL associated with the `host` key, and the service account token for the `sa-token` key.\n        2. Or, provide the contents of the remote cluster's `kubeconfig` file in the `kubeconfig` key.\n    * In the secret, you can optionally provide an HTTPS proxy url to use under the `https_proxy` key.\n    * See an example secret manifest for a remote source cluster in [remote-velero/service-acct-creds/src-cluster-cred-example.yaml](remote-velero/service-acct-creds/remote-cluster-cred-example.yaml).\n\n        ```yaml\n        apiVersion: v1\n        kind: Secret\n        metadata:\n        name: remotecluster\n        namespace: \u003cnamespace where Velero is installed\u003e\n        type: Opaque\n        data:\n          host: \u003cbase64 encoded host URL\u003e\n          sa-token: \u003cbase64 encoded service account token here\u003e\n          kubeconfig: \u003cbase64 encoded kubeconfig file contents here\u003e\n          https_proxy: \u003cbase64 encoded https proxy URL here\u003e\n        ```\n\n1. Install Remote Velero in Every Namespace\n    **Note:** this step must be done after secrets for the remote cluster credentials are applied. You can restart Velero pod to see changes to secrets.\n\n    * Set up your BSL and credentials per normal Velero operation. Be sure to include the `--namespace src-velero` flag with every `velero` client command.\n    * Install Remote Velero, pointing to a Remote Velero server image. Be sure to include the `--namespace src-velero` flag with the `velero install` client command.\n\n    ```bash\n    export VERSION=\u003cversion\u003e export IMAGE=projects.registry.vmware.com/tanzu_migrator/remote-velero\n    vel install \\\n    --features=EnableAPIGroupVersions \\\n    --provider aws \\\n    --plugins velero/velero-plugin-for-aws:v1.2.0 \\\n    --use-volume-snapshots=false \\\n    --bucket velero \\\n    --prefix veldat \\\n    --backup-location-config region=minio,s3ForcePathStyle=\"true\",s3Url=http://\u003caddress-to-bsl\u003e:9000 \\\n    --secret-file /path/to/secret/file/for/reading/backup-storage-location \\\n    --image $IMAGE:$VERSION \\\n    --namespace src-velero\n    ```\n\n    * To ensure the server is now pointing to the correct remote clusters, look at the velero deployment logs and look for a message similar to the following:\n\n    ```bash\n    level=info msg=\"Server is using source cluster at https://example.servicemesh.biz:6443.\" \n    level=info msg=\"Server is using namespace velero.\" logSource=\"pkg/cmd/server/server.go:408\"\n    level=info msg=\"Server is using destination cluster at https://example.us-east-2.elb.amazonaws.com:443.\"\n    ```\n\n1. Run backup of a namespace on a remote source cluster.\n\n    ```bash\n    velero backup create backup-1 --include-namespaces example --namespace src-velero\n    ```\n\n1. Run restore of a namespace on a remote destination cluster.\n\n    ```bash\n    velero restore create restore-1 --from-backup backup-1 --namespace dest-velero\n    ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodegold79%2Fremote-velero","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodegold79%2Fremote-velero","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodegold79%2Fremote-velero/lists"}