{"id":43879217,"url":"https://github.com/getoutreach/vcluster-fs-syncer","last_synced_at":"2026-02-06T15:09:55.104Z","repository":{"id":37072968,"uuid":"406572360","full_name":"getoutreach/vcluster-fs-syncer","owner":"getoutreach","description":"Disk synchronization for vclusters (https://www.vcluster.com/)","archived":false,"fork":false,"pushed_at":"2025-08-15T00:12:32.000Z","size":542,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":46,"default_branch":"main","last_synced_at":"2025-08-15T02:23:26.636Z","etag":null,"topics":["loft","vcluster"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":false,"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/getoutreach.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-09-15T01:22:17.000Z","updated_at":"2025-04-17T16:53:59.000Z","dependencies_parsed_at":"2024-06-19T16:23:33.760Z","dependency_job_id":"c38ae099-ee08-49aa-b3a0-77702ffee6c7","html_url":"https://github.com/getoutreach/vcluster-fs-syncer","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/getoutreach/vcluster-fs-syncer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getoutreach%2Fvcluster-fs-syncer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getoutreach%2Fvcluster-fs-syncer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getoutreach%2Fvcluster-fs-syncer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getoutreach%2Fvcluster-fs-syncer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/getoutreach","download_url":"https://codeload.github.com/getoutreach/vcluster-fs-syncer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getoutreach%2Fvcluster-fs-syncer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29166015,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T14:37:12.680Z","status":"ssl_error","status_checked_at":"2026-02-06T14:36:22.973Z","response_time":59,"last_error":"SSL_read: 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":["loft","vcluster"],"created_at":"2026-02-06T15:09:51.889Z","updated_at":"2026-02-06T15:09:55.098Z","avatar_url":"https://github.com/getoutreach.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vcluster-fs-syncer\n[![go.dev reference](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go\u0026logoColor=white)](https://pkg.go.dev/github.com/getoutreach/vcluster-fs-syncer)\n[![Generated via Bootstrap](https://img.shields.io/badge/Outreach-Bootstrap-%235951ff)](https://github.com/getoutreach/bootstrap)\n[![Coverage Status](https://coveralls.io/repos/github/getoutreach/vcluster-fs-syncer/badge.svg?branch=main)](https://coveralls.io/github//getoutreach/vcluster-fs-syncer?branch=main)\n\u003c!-- \u003c\u003cStencil::Block(extraBadges)\u003e\u003e --\u003e\n\n\u003c!-- \u003c\u003c/Stencil::Block\u003e\u003e --\u003e\n\nSynchronizes `/var/lib/kubelet/pods` into predictable vcluster scoped paths  at `/var/lib/loft/\u003cvclusterName\u003e/pods`\n\n## Contributing\n\nPlease read the [CONTRIBUTING.md](CONTRIBUTING.md) document for guidelines on developing and contributing changes.\n\n## High-level Overview\n\n\u003c!-- \u003c\u003cStencil::Block(overview)\u003e\u003e --\u003e\nThis service is a light-weight service that reacts to pod creation, update, and delete events.\n\nWhen a pod event is received, it looks for the following annotations to determine if a pod is deployed in a vcluster\nand to grab information on the virtual pod (within the vcluster):\n\n* `vcluster.loft.sh/uid` - UUID of the pod inside the vcluster\n* `vcluster.loft.sh/name` - Name of the pod inside the vcluster\n* `vcluster.loft.sh/namespace` - Namespace of the pod inside the vcluster\n* `vcluster.loft.sh/managed-by` - Name of the vcluster that the pod is deployed in\n\nIf the pod contains all of these annotations, the pod is considered to be deployed in a vcluster and the [pod directory](https://yuminlee2.medium.com/kubernetes-folder-structure-and-functionality-overview-5b4ec10c32bf)\nis bind mounted into the vcluster scoped directory at `/var/lib/loft/\u003cvclusterName\u003e/pods/\u003cpodUID\u003e`.\n\nIf the pod does not contain all of these annotations, the pod is considered to be deployed in the host cluster and no\naction is taken.\n\nThe ideal use case for this service is to run daemonsets inside of a virtual cluster that need access to the pod\ndirectory. For example, Velero which needs it for the `restic` (now called `node-agent`) daemonset. In order to use\nthe per-vcluster pod directory, the `/var/lib/loft/\u003cvclusterName\u003e/pods` directory must be mounted in your Kubernetes\nresource at whatever path you need it to be.\n\n### Deploying\n\nThe vcluster-fs-syncer is deployed as a Kubernetes Deployment. It is deployed in the `vcluster-fs-syncer--bento1a` namespace.\n\nTo deploy, run the following:\n\n```bash\n./scripts/shell-wrapper.sh deploy-to-dev.sh show | kubectl apply -f -\n```\n\n\u003c!-- \u003c\u003c/Stencil::Block\u003e\u003e --\u003e\n\n### Adding and Deleting Service in Development Environment\n\nFirst, make sure you [set up your development environment](https://github.com/getoutreach/devenv#getting-started).\n\nTo add this service to your developer environment:\n\n```bash\ndevenv apps deploy vcluster-fs-syncer\n```\n\nTo delete this service from your developer environment:\n\n```bash\ndevenv apps delete vcluster-fs-syncer\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetoutreach%2Fvcluster-fs-syncer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgetoutreach%2Fvcluster-fs-syncer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetoutreach%2Fvcluster-fs-syncer/lists"}