This section explains the runtime flow in simple steps.
Main pieces
FLAME.K8sBackendin your app.FlameRunnerCR for each requested runner.FlamePoolCR for runner pod templates and scheduling intent.- Operator controllers and mutating webhook.
End-to-end flow
- Your app requests FLAME work.
- Backend creates a
FlameRunnerresource. - Operator resolves pool/template and creates a runner pod.
- Runner pod receives environment for distributed Erlang.
- Runner connects back and executes work.
- Operator updates runner status and handles cleanup.
Webhook role
When workload annotations include flame.org/enabled: "true", the mutating
webhook injects required runtime environment into the first container.
Optional annotations let you tune behavior:
flame.org/pool-config-refflame.org/cookie-secret-refflame.org/dist-auto-configflame.org/otp-appflame.org/runner-termination-timeout
Why this design
- CRDs make runner lifecycle observable.
- Finalizers ensure controlled cleanup.
- Pool abstraction centralizes pod and scheduling defaults.
- Release manifests provide reproducible installation by version.