Before you get started
You need the following tools installed on your machine:- kind. You use this to create a local Kubernetes cluster.
- Docker. Required to run containers for
kind. - kubectl. You use this to interact with your Kubernetes cluster.
- Helm. You use this to install the Firebolt Operator.
Create a local cluster
Create a Kubernetes cluster withkind on your local machine:
Ready status:
Install the Firebolt Operator
Install the CRDs and operator with Helm:oci.firebolt.io host is Firebolt’s Scarf gateway. It records anonymous download statistics and redirects to GitHub Container Registry. To bypass the gateway, use oci://ghcr.io/firebolt-db/helm-charts instead.
For more installation options, see Installation.
Create a namespace
Create a namespace for the instance and engine:Create a FireboltInstance
AFireboltInstance provisions the metadata infrastructure that engines depend on.
Ready before creating an engine. See the FireboltInstance CRD reference for all supported fields and phases.
Configure object storage
Every FireboltEngine requires object storage for managed tablet data. Local filesystem storage mode is not supported by the Firebolt Operator and the engine will refuse to start without object storage. On a real cluster, point the engine at an existing bucket (S3, GCS, or Azure Blob) and grant access through your platform’s workload identity. For Amazon S3, see Amazon S3. For a local cluster (Kind, minikube), deploy a small S3-compatible emulator (floci) and create a bucket:firebolt namespace, exposes it at http://floci.firebolt.svc.cluster.local:4566, and creates a my-engine-bucket bucket. The engine references it through spec.customEngineConfig.storage in the next step.
Create a FireboltEngine
Once the instance isReady, create an engine that references it. The customEngineConfig.storage block points the engine at the object storage configured above.
stable phase with READY=True:
Run a query
Once the engine is ready, run a query through the instance gateway with the Firebolt CLI bundled in the engine image:--endpoint targets the instance gateway Service. --set engine=<name> selects the engine to route to (the same value you would pass in the X-Firebolt-Engine header). --no-interactive prints the result and exits, which suits non-TTY kubectl exec sessions.
You should see the query result in the output.