The backupschedule CRD schedules recurring PVC backups to an S3 store. The eevee operator creates and manages a Kubernetes CronJob based on this resource. A botmodule references a backupschedule via its spec.backupSchedule field to opt in to scheduled backups.

  ---
apiVersion: eevee.bot/v1
kind: BackupSchedule
metadata:
  name: mybot-daily
  namespace: my-eevee-bot
spec:
  schedule: "0 2 * * *"
  s3Store:
    name: my-minio
  image: ghcr.io/eevee/backup:latest
  

Specification

Properties

schedule (string, required)

Crontab-style schedule expression (e.g. 0 2 * * * for daily at 2am). Translated directly to the CronJob schedule.

s3Store (object, required)

Reference to the S3Store CR instance in the same namespace.

FieldDescription
nameName of the S3Store resource

image (string, required)

Container image to use for the backup job (e.g. ghcr.io/eevee/backup:latest)

imagePullPolicy (string, optional)

Image pull policy for the backup job container. One of Always, IfNotPresent, Never. Default: IfNotPresent

Status

FieldDescription
conditionsStandard Kubernetes condition objects (type, status, reason, message, lastTransitionTime). The Ready condition reflects whether the schedule is active and the CronJob has been created.

S3 Key Format

Backups are stored with the following key format:

  <prefix>/<namespace>/<moduleName>/<uuid>.tar.gz
  
  • prefix — from S3Store.spec.prefix
  • namespace — the bot instance identity (K8s namespace)
  • moduleName — from botmodule.spec.moduleName
  • uuid — generated by the backup image at write time

Example: prod/my-eevee-bot/echo/a1b2c3d4-e5f6-7890-abcd-ef1234567890.tar.gz