Scheduling Reference
Configure automated captures using cron schedules in pod and namespace annotations.
Annotation Format
Schedules are defined in the reel.io/schedule annotation using pipe-separated cron expressions and commands. Both standard 5-field cron and shorthand descriptors are supported:
# Format: <cron> | <command>
reel.io/schedule: |
@every 1h | export sbom --scanners vuln
next | export cbom
@every 1h | create layer
next | export layer
@daily | delete layer --keep-last 24
Cron Syntax
Standard 5-field cron expressions:
┌───────────── minute (0-59)
│ ┌─────────── hour (0-23)
│ │ ┌───────── day of month (1-31)
│ │ │ ┌─────── month (1-12)
│ │ │ │ ┌───── day of week (0-6, Sun=0)
* * * * *
| Expression | Schedule |
|---|---|
| 0 * * * * | Every hour |
| 0 6 * * * | Daily at 6 AM |
| */15 * * * * | Every 15 minutes |
| 0 2 * * 1-5 | Weekdays at 2 AM |
| 0 3 * * 0 | Weekly on Sunday at 3 AM |
Shorthand descriptors:
| Shorthand | Equivalent |
|---|---|
| @hourly | 0 * * * * |
| @daily / @midnight | 0 0 * * * |
| @weekly | 0 0 * * 0 |
| @monthly | 0 0 1 * * |
| @yearly / @annually | 0 0 1 1 * |
| @every 1h | Every hour (interval-based) |
| @every 30m | Every 30 minutes (interval-based) |
Command Chaining
Use the next keyword to chain commands. A next command runs after its parent completes successfully.
# Create layer, then export it, then upload to S3
0 * * * * | create layer
next | export layer
Supported Commands
| Command | Description |
|---|---|
| create checkpoint | CRIU process state snapshot |
| create layer | Filesystem diff capture |
| create frame | Checkpoint + layer archive |
| export sbom | Vulnerability scan (Trivy) |
| export cbom | Cryptographic inventory |
| export malware | Antivirus scan (ClamAV) |
| export volatile | Runtime state snapshot |
| export memory | Memory dump (ELF core) |
| export checkpoint | Ephemeral checkpoint export |
| export layer | Ephemeral layer export |
| export frame | Ephemeral frame export |
| delete checkpoint | Cleanup with retention |
| delete layer | Cleanup with retention |
| delete frame | Cleanup with retention |
Priority & Scope
Schedules can be set at pod or namespace level. Pod annotations take priority over namespace annotations.
| Level | Scope | Priority |
|---|---|---|
| Pod annotation | Single pod | Highest |
| Namespace annotation | All pods in namespace | Lower |
Opt out individual pods with reel.io/exclude: "true".
Concurrency Limits
The agent limits concurrent operations to prevent resource exhaustion:
| Setting | Default | Helm Value |
|---|---|---|
| Max concurrent checkpoints | 3 | scheduler.maxConcurrentCheckpoints |
| Max concurrent layers | 2 | scheduler.maxConcurrentLayers |
| Operation timeout | 5 min | scheduler.operationTimeoutMinutes |