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 | upload sbom --scanners vuln
next | upload cbom
@every 1h | create layer
next | upload 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 upload it to S3
0 * * * * | create layer
next | upload layer
Supported Commands
| Command | Description |
|---|---|
| create checkpoint | CRIU process state snapshot |
| create layer | Filesystem diff capture |
| create frame | Checkpoint + layer archive |
| upload sbom | Vulnerability scan (Trivy), uploaded to S3 |
| upload cbom | Cryptographic inventory, uploaded to S3 |
| upload malware | Antivirus scan (ClamAV), uploaded to S3 |
| upload volatile | Runtime state snapshot, uploaded to S3 |
| upload memory | Memory dump (ELF core), uploaded to S3 |
| upload checkpoint | Ephemeral checkpoint, uploaded to S3 |
| upload layer | Ephemeral layer, uploaded to S3 |
| upload frame | Ephemeral frame, uploaded to S3 |
| 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 |