Pod Annotations
metadata: name: my-task annotations: reaper.runtime/dns-mode: “kubernetes” reaper.runtime/overlay-name: “my-group” spec: runtimeClassName: reaper-v2 restartPolicy: Never containers: - name: task image: busybox command: [“/bin/sh”, “-c”, “nslookup kubernetes.default”]
### Security Model
- Only annotations in the allowlist above are honored. Unknown annotation keys are silently ignored.
- Administrator-controlled parameters (overlay paths, filter settings, isolation mode) **cannot** be overridden via annotations.
- Administrators can disable all annotation processing: `REAPER_ANNOTATIONS_ENABLED=false`
### How It Works
1. The shim extracts `reaper.runtime/*` annotations from the OCI config (populated by kubelet from pod metadata).
2. Annotations are stored in the container state during `create`.
3. During `start`, annotations are validated against the allowlist and applied. Invalid values are logged and ignored.
4. If no annotation is set, the node-level configuration is used as the default.
## Helm Chart Values
The Helm chart (`deploy/helm/reaper/`) configures most settings automatically. Key values:
```yaml
# Node configuration written to /etc/reaper/reaper.conf
config:
dnsMode: kubernetes
runtimeLog: /run/reaper/runtime.log
# Image settings (tag defaults to Chart.AppVersion)
node:
image:
repository: ghcr.io/miguelgila/reaper-node
tag: ""
controller:
image:
repository: ghcr.io/miguelgila/reaper-controller
tag: ""
agent:
enabled: true
image:
repository: ghcr.io/miguelgila/reaper-agent
tag: ""
See deploy/helm/reaper/values.yaml for the full reference.