Skip to main content
Version: 0.1.0-rc.5

At a glance

Control path

  • adminops reconciler
  • internal/app/openbaocluster/adminops
  • internal/service/backup

Owns

  • backup trigger detection for schedules and manual requests
  • preflight validation and operation-lock ownership for backup
  • retention evaluation after successful uploads

Writes

  • backup executor Jobs and job annotations
  • status.backup timing, success, and failure counters
  • operation lock state while backup is in progress

Depends on

  • cluster health and absence of conflicting upgrade or restore work
  • spec.backup target, authentication, and executor image configuration
  • object-storage reachability and trust configuration for the selected provider

Architectural Placement

Backup orchestration belongs to the AdminOps path:

  1. internal/controller/openbaocluster receives an adminops reconcile event.
  2. The controller delegates into internal/app/openbaocluster/adminops.
  3. AdminOps orchestration invokes internal/service/backup to validate, launch, and observe backup execution.

That keeps the controller focused on reconcile plumbing while the backup manager owns timing, job launch, and retention decisions.

Reference table

Owned surfaces

Owned surfaces.
SurfaceWhat the manager decidesWhy it matters
Executor JobJob name, annotations, auth wiring, and provider-specific environment for the backup binary.The controller should schedule work, not stream snapshot data itself.
status.backupAttempt timing, next schedule, last success, and consecutive failure state.Operators need backup visibility without inspecting transient Jobs.
Retention policyWhich completed backups can be deleted after a successful upload.Retention belongs to the control plane so cleanup stays consistent across providers.

Backup Flow

Diagram

Validate, launch, then record

The backup manager validates cluster state first, launches a stateless Job second, and only updates backup status after the Job reaches a terminal result.

Reference table

Preflight and status model

Preflight and status model.
CheckManager behavior
Conflicting operationsRestore and active upgrade state block backup launch; only one long-running operation may own the cluster lock at a time.
At-most-once schedulingstatus.backup.lastAttemptScheduledTime and nextScheduledBackup prevent duplicate launches in the same cron window.
Failure accountingConsecutive failures increase only when a terminal Job fails, not on every reconcile that notices the same failed Job.

Provider And Retention Surfaces

Reference table

Provider integration surfaces

Provider integration surfaces.
Provider familyAuth patterns the manager supportsWhat stays the same
GCSService account key, Application Default Credentials, or Workload Identity metadata on the generated pod identity.Upload and retention stay job-driven; only the credential wiring changes.
Azure Blob StorageAccount key, connection string, or managed identity/workload identity defaults.Retention and backup naming stay provider-agnostic at the manager boundary.

Backups are stored under a stable object prefix so restore workflows can locate artifacts without reverse-engineering Job names:

<pathPrefix>/<namespace>/<cluster>/<timestamp>-<short-uuid>.snap

Reference table

Safety boundaries

Safety boundaries.
ConcernManager behavior
Retention timingRetention runs only after a successful upload so cleanup never removes older recovery points before a new one exists.
Upgrade coordinationPre-upgrade snapshots reuse backup job machinery rather than creating a second snapshot implementation in the upgrade manager.
Local buffering riskThe backup path is designed around streaming to object storage rather than writing large transient snapshot files inside the controller.

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.