Skip to main content
Version: 0.1.0-rc.5

At a glance

Control path

  • dedicated openbaorestore controller
  • internal/app/openbaorestore
  • internal/service/restore

Owns

  • restore request validation
  • operation lock lifecycle for restore
  • restore job creation and terminal cleanup

Writes

  • OpenBaoRestore phase progression
  • OpenBaoCluster.status.operationLock for restore ownership
  • restore job launch and cleanup state

Depends on

  • snapshot source accessibility
  • restore authentication and token strategy
  • backup provider configuration and cluster lock state

Request Model

Reference table

Restore request contract

Restore request contract.
ContractWhy it exists
Immutable specChanging restore inputs requires a new request so the audit trail and execution intent stay stable.
Stateless controllerThe controller polls the restore job rather than depending on broad watch permissions across every child object.
Operation lock ownershipRestore must block upgrades and backups while destructive data-plane changes are in flight.

Restore Lifecycle

Diagram

Restore lifecycle

Restore validates first, acquires the cluster lock second, and only then launches a restore job. Terminal phases keep retrying lock cleanup until the cluster is no longer marked as restore-owned.

Reference table

Restore phases

Restore phases.
PhaseManager intent
RunningLaunch the restore job after the restore lock is owned and the request is known-good.
CompletedRelease the lock and preserve the restore record as the audit trail of what happened.
FailedExpose terminal failure while continuing lock cleanup on later reconciles until the cluster is no longer marked as restore-owned.

Safety Boundaries

Reference table

Safety boundaries

Safety boundaries.
ConcernManager behavior
Emergency overrideOverride requires explicit force semantics rather than silently ignoring a stuck or conflicting lock.
Execution surfaceThe controller delegates the destructive work to a job instead of embedding restore logic in normal reconcile loops.
After restoreThe manager may leave the cluster requiring unseal or follow-up recovery work; completion only means the restore workflow finished.
Restore is not routine reconciliation

Restore is intentionally modeled outside the normal OpenBaoCluster lifecycle. The operator treats it as a destructive recovery operation with its own request object, its own controller path, and its own lock semantics.

Related deep dives

Prerelease documentation

This version tracks a prerelease build. Features and behavior may change before the next stable release.

Was this page helpful?

Use Needs work to open a structured GitHub issue for this page. The Yes button only acknowledges the signal locally.