API Reference Overview
API Group
All custom resources belong to the backups.k8s.bnerd.com API group, version v1.
Custom Resource Definitions
| Kind |
Plural |
Short Names |
Scope |
Required Fields |
| VolumeBackup |
volumebackups |
vbkp |
Namespaced |
volumeClaimRef, repository |
| VolumeRestore |
volumerestores |
vrestore, vr |
Namespaced |
sourceBackup or sourceRepository, targetPVC |
| VolumeSnapshotBackup |
volumesnapshotbackups |
vsb |
Namespaced |
volumeClaimRef, repository |
| S3Backup |
s3backups |
s3bkp |
Namespaced |
source, repository |
Repository Types
The repository.type field accepts these values across all backup CRDs:
| Type |
URL Format |
Secret Fields |
s3 |
s3:endpoint/bucket/path |
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, RESTIC_PASSWORD |
gcs |
gs:bucket/path |
GOOGLE_APPLICATION_CREDENTIALS, GOOGLE_PROJECT_ID, RESTIC_PASSWORD |
azure |
azure:container/path |
AZURE_ACCOUNT_NAME, AZURE_ACCOUNT_KEY or AZURE_ACCOUNT_SAS, RESTIC_PASSWORD |
local |
local:/path |
RESTIC_PASSWORD |
sftp |
sftp:host:/path |
RESTIC_PASSWORD (+ SSH key configuration) |
rest |
rest:https://host/path |
RESTIC_PASSWORD (+ optional HTTP basic auth) |
All Secrets must include RESTIC_PASSWORD for repository encryption.
Shared Field Patterns
These field structures are shared across multiple CRDs:
repository
repository:
type: s3 # Required: s3, gcs, azure, local, sftp, rest
url: "s3:bucket/path" # Required: backend-specific URL
secretRef:
name: my-credentials # Required: Secret name
namespace: default # Optional: defaults to resource namespace
resources
resources:
requests:
memory: "256Mi"
cpu: "200m"
limits:
memory: "1Gi"
cpu: "1000m"
image
image:
repository: "registry.bnerd.com/public/restic"
tag: "0.18.1"
pullPolicy: "Always" # Always, IfNotPresent, Never
kubeconfig
kubeconfig:
inCluster: true # Default: true (use in-cluster credentials)
secretRef:
name: remote-kubeconfig # Required when inCluster=false
namespace: default
key: kubeconfig # Default: "kubeconfig"
Prometheus Metrics
The operator exposes metrics on port 8080 at /metrics. See the Monitoring and Alerting guide for setup instructions.
Operator Lifecycle
| Metric |
Type |
Labels |
Description |
bnerd_backup_operator_info |
Info |
version, group, api_version |
Operator build information |
bnerd_backup_operator_restarts_total |
Counter |
-- |
Total operator restarts |
bnerd_backup_operator_start_time_seconds |
Gauge |
-- |
Unix timestamp of last start |
VolumeBackup Resource Metrics
| Metric |
Type |
Labels |
Description |
bnerd_volumebackup_total |
Counter |
namespace |
Resources created |
bnerd_volumebackup_active |
Gauge |
namespace |
Active resources |
bnerd_volumebackup_deleted_total |
Counter |
namespace |
Resources deleted |
bnerd_volumebackup_cronjobs_created_total |
Counter |
namespace, volumebackup |
CronJobs created |
bnerd_volumebackup_cronjobs_failed_total |
Counter |
namespace, volumebackup, reason |
Failed CronJob creations |
bnerd_volumebackup_cache_pvc_created_total |
Counter |
namespace, volumebackup |
Cache PVCs created |
bnerd_volumebackup_reconciliation_total |
Counter |
namespace, result |
Reconciliation runs |
bnerd_volumebackup_reconciliation_duration_seconds |
Histogram |
namespace |
Reconciliation duration |
VolumeBackup Job Outcome Metrics
Updated every 5 minutes. The job_type label is backup, check, or restore-test.
| Metric |
Type |
Labels |
Description |
bnerd_volumebackup_last_successful_backup_timestamp |
Gauge |
namespace, volumebackup, job_type |
Last successful Job timestamp |
bnerd_volumebackup_last_failed_backup_timestamp |
Gauge |
namespace, volumebackup, job_type |
Last failed Job timestamp |
bnerd_volumebackup_last_job_success |
Gauge |
namespace, volumebackup, job_type |
1=success, 0=failure |
bnerd_volumebackup_last_job_duration_seconds |
Gauge |
namespace, volumebackup, job_type |
Last Job duration in seconds |
VolumeRestore Metrics
| Metric |
Type |
Labels |
Description |
bnerd_volumerestore_total |
Counter |
namespace |
Resources created |
bnerd_volumerestore_active |
Gauge |
namespace, phase |
Active resources by phase |
bnerd_volumerestore_jobs_created_total |
Counter |
namespace, volumerestore |
Jobs created |
bnerd_volumerestore_jobs_succeeded_total |
Counter |
namespace, volumerestore |
Successful Jobs |
bnerd_volumerestore_jobs_failed_total |
Counter |
namespace, volumerestore, reason |
Failed Jobs |
bnerd_volumerestore_pvc_created_total |
Counter |
namespace, volumerestore |
PVCs created |
bnerd_volumerestore_deleted_total |
Counter |
namespace |
Resources deleted |
bnerd_volumerestore_duration_seconds |
Histogram |
namespace, volumerestore, result |
Restore duration |
S3Backup Metrics
| Metric |
Type |
Labels |
Description |
bnerd_s3backup_total |
Counter |
namespace |
Resources created |
bnerd_s3backup_active |
Gauge |
namespace |
Active resources |
bnerd_s3backup_cronjobs_created_total |
Counter |
namespace, s3backup |
CronJobs created |
bnerd_s3backup_cronjobs_failed_total |
Counter |
namespace, s3backup, reason |
Failed CronJob creations |
bnerd_s3backup_cache_pvc_created_total |
Counter |
namespace, s3backup |
Cache PVCs created |
bnerd_s3backup_last_successful_backup_timestamp |
Gauge |
namespace, s3backup, job_type |
Last successful timestamp |
bnerd_s3backup_last_failed_backup_timestamp |
Gauge |
namespace, s3backup, job_type |
Last failed timestamp |
bnerd_s3backup_last_job_success |
Gauge |
namespace, s3backup, job_type |
1=success, 0=failure |
bnerd_s3backup_last_job_duration_seconds |
Gauge |
namespace, s3backup, job_type |
Last Job duration |
VolumeSnapshotBackup Metrics
| Metric |
Type |
Labels |
Description |
bnerd_volumesnapshotbackup_total |
Counter |
namespace |
Resources created |
bnerd_volumesnapshotbackup_snapshots_created_total |
Counter |
namespace, volumesnapshotbackup |
Snapshots created |
bnerd_volumesnapshotbackup_snapshots_deleted_total |
Counter |
namespace, volumesnapshotbackup, reason |
Snapshots deleted |
bnerd_volumesnapshotbackup_backups_total |
Counter |
namespace, volumesnapshotbackup, result |
Backup attempts |
bnerd_volumesnapshotbackup_errors_total |
Counter |
namespace, volumesnapshotbackup, phase, error_type |
Errors |
Error Tracking
| Metric |
Type |
Labels |
Description |
bnerd_backup_operator_errors_total |
Counter |
resource_type, namespace, operation, error_type |
All processing errors |
OpenAPI Specification
The complete OpenAPI 3.0 specification for all CRDs is available for download: