https://github.com/bartvanbenthem/relink-operator
A lightweight, concurrent Kubernetes operator built in Rust using `kube-rs`. It automates disaster recovery (DR) storage states by syncing PersistentVolume (PV) metadata across protected and recovery clusters via object storage.
https://github.com/bartvanbenthem/relink-operator
Last synced: 21 days ago
JSON representation
A lightweight, concurrent Kubernetes operator built in Rust using `kube-rs`. It automates disaster recovery (DR) storage states by syncing PersistentVolume (PV) metadata across protected and recovery clusters via object storage.
- Host: GitHub
- URL: https://github.com/bartvanbenthem/relink-operator
- Owner: bartvanbenthem
- Created: 2026-05-17T08:41:51.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-17T09:21:02.000Z (2 months ago)
- Last Synced: 2026-05-17T11:14:02.142Z (2 months ago)
- Language: Rust
- Homepage:
- Size: 90.8 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# relink-operator
A lightweight, concurrent Kubernetes operator built in Rust using the `kube-genops` and `kube-objstore` crates. It automates disaster recovery (DR) storage states by syncing PersistentVolume (PV) metadata across protected and recovery clusters via object storage.

## Overview
The `relink-operator` solves the "orphaned volume" problem during cross-cluster failovers. Instead of manually patching bi-directional storage bindings (`spec.claimRef`) during an outage, this operator splits the lifecycle into two concurrent, decoupled controller loops managed by Custom Resource Definitions (CRDs):
1. **`VolumeRelinkSource` (Protected Cluster):** Watches active PVC/PV states matching specified selectors, captures their volume mapping metadata, and pushes state snapshots to an S3-compatible object storage bucket.
2. **`VolumeRelinkTarget` (Recovery Cluster):** Sits in a standby loop monitoring the object storage bucket. When a failover event is explicitly triggered, it automatically pulls down the metadata, clears out conflicting binding definitions, and pre-binds the existing cloud volumes to newly instantiated PVCs.