Prerequisites
Before you begin, ensure that you have the following installed and configured:- A Kubernetes cluster (v1.19+)
kubectl
command-line tool configured to access your clusterhelm
(v3+) installed on your local machine
- Kubernetes nodes with a memlock limit of at least 8GB (you can check with
cat /proc/self/limits | grep -F 'Max locked memory'
) - possibility to run Core with the helper root container (
memlockSetup=true
in Helm values)
memlockSetup=false
so that there are no root containers in your deployments.
1: Create a Dedicated Namespace
To isolate Firebolt Core resources from other workloads in your cluster, create a dedicated Kubernetes namespace:2: Customize Helm Chart Values
The deployment is configured via Helm chart values. You can modify these by editing avalues.yaml
file or by setting them directly via the --set
flag.
For example, to deploy a 3-node cluster, ensure the nodesCount
value is set to 3
; the memory allocation and storage allocation should also be increased for any serious workload you are planning to run.
It is advised to not use the default preview-rc
value for the image.tag
and instead pick a released pinned version from the GHCR repository.
Refer to the Helm Chart README for the complete list of configurable parameters, including resource limits, storage options, and networking settings.
3: Install the Helm Chart
Once your values are configured, install the chart into thefirebolt-core
namespace:
core-demo
you can use any name you prefer, it will be used as a prefix for the generated Kubernetes resources; the --generate-name
flag can also be specified and it will let Helm automatically generate a release name.
4: Verify the Deployment
After installation, verify that the Firebolt Core pods are up and running:nodesCount
value:
Running
state, check their logs and events for troubleshooting:
5: Querying locally
You can interact with Firebolt Core locally by port-forwarding the HTTP interface port (default:3473
) from one of the pods to your local machine. This enables you to send SQL queries directly via curl
without exposing the service externally. To do this, run:
helm-1748880880-firebolt-core-0
with the name of one of the running Firebolt Core pods.
Once forwarded, you can issue SQL queries using curl
, for example:
6. Operations
You might want to setup backups for the mounted storage volumes to prevent data loss, and monitor iops usage to avoid slowdowns and latencies.Scaling up/down
⚠️ changing the number of nodes is currently supported for clusters which are only reading data, without performing any write. If you need to perform writes and change cluster size, it will also be necessary to erase the data volume.Changing resources
You can runhelm update
to apply changes to your cluster after changing resources like memory or CPU allocation; pods will be recreated as necessary.
Note that it is not possible to resize storage volumes this way.
Updating Firebolt Core version
After changing theimage.tag
value to a more recent pinned version you can run a helm update
to roll out the change to your Firebolt Core cluster:
Removing the deployment
You can use:kubectl delete
and make sure you are deleting only those whose name prefix matches your Helm deployment.
NOTE: this is a non-reversible operation, you must not delete the PVCs if you need the data/metadata of your Core cluster.
Additional Resources
- Kubernetes Namespaces documentation
- Helm Quickstart Guide