Kopiur
Kopiur (Kopia + Rust) is a Kopia-native Kubernetes backup operator written in
Rust on kube-rs. It makes a kopia repository
a first-class Kubernetes resource and separates the backup recipe from its
invocation from its schedule, so backups can be triggered by cron,
kubectl create, Argo Events, or a Helm hook — and a kopia snapshot's lifecycle
is tied to its Backup CR by a finalizer + deletionPolicy.
The whole CRD surface is modeled as Rust enums so invalid states are unrepresentable and reconcilers handle every variant at compile time. See ADR-0003 for the full design.
API group kopiur.home-operations.com, version v1alpha1. The CRD surface may
still change between releases.
The 7 CRDs (kopiur.home-operations.com/v1alpha1)
| CRD | Scope | Layer | Purpose |
|---|---|---|---|
Repository | Namespaced | Storage | A kopia repository owned by one namespace: backend, encryption, credentials. |
ClusterRepository | Cluster | Storage | A shared repository for platform teams, gated by allowedNamespaces. |
BackupConfig | Namespaced | Recipe | What to back up: PVC sources, identity, retention, policy, hooks. Idempotent. |
Backup | Namespaced | Invocation + Catalog | One kopia snapshot as a Kubernetes object. The universal trigger entry point. |
BackupSchedule | Namespaced | Cron | When it runs: cron + jitter + timezone; creates Backup CRs. |
Restore | Namespaced | Operation | Restore a snapshot to a PVC, or act as a passive volume-populator source. |
Maintenance | Namespaced | Lifecycle | Schedules kopia maintenance quick + full with an ownership lease. |
Where to next
- Installation — prerequisites, install modes, and the CRD-lifecycle caveat.
- API reference (rustdoc) — the generated Rust API docs for every crate in the workspace.
- API conventions and Observability — developer notes.
- ADR-0003 — the canonical design document.