Skip to main content

Spec reference

Every field except spec.template is an optional default that a referencing Engine inherits when it does not set the matching field itself. Resolution is always the Engine value first, then the class value, then the Firebolt Operator default. The Engine owns the value when it sets it. The class supplies it otherwise. The Firebolt Operator default sits beneath both. A class-level change to spec.uiSidecar, spec.storage, or spec.customEngineConfig reshapes the rendered engine pod, so it rolls a new blue-green generation on every bound engine. Changes to spec.rollout, spec.drainCheckEnabled, spec.drainCheckInterval, and spec.autoStop are read live and do not by themselves trigger a rollout.

Firebolt Operator-owned fields on class templates

The validating webhook rejects user input on paths the Firebolt Operator owns end-to-end. Everything else under spec.template is allowed. The same allowlist applies to FireboltEngine.spec.template.

Pod template metadata

Pod-level fields under spec.template.spec

Engine container (containers[name=="engine"])

A second container named engine is rejected because the Firebolt Operator renders that container.

Volumes a sidecar or init container may mount

Sidecars and init containers may mount the Firebolt Operator-rendered engine-config, data, and runtime volumes. Mounting the data volume from an init container is the supported way to prepare the data directory before the (non-root) engine starts — necessary with the hostPath storage backend, which the kubelet does not apply fsGroup to. The Secret-backed volumes are rejected on any container other than the Firebolt Operator-rendered engine container: auth-admin, tls-engine, and every auth-signing-<key-id> volume. Those carry the instance admin password, the engine’s TLS private key, and the JWT signing keys, so mounting them would hand a template author credentials they cannot otherwise read.

Status properties

Short name: firengc.