The source of truth is the chart’s own
values.yaml. Extract it with helm pull oci://registry.falkordb.cloud/falkordb/falkordb-enterprise --untar and verify against the chart version you are installing.values.yaml, so its defaults are always the shipped ones.
Platform dependencies
When using
install.sh, the installer detects the default StorageClass provisioner and configures snapshot values automatically:
- CSI-backed cloud StorageClasses, such as
ebs.csi.aws.com,pd.csi.storage.gke.io, anddisk.csi.azure.com, get a matching chart-managedVolumeSnapshotClassunless a default one already exists for that driver. - Local non-CSI StorageClasses, such as
rancher.io/local-path, enable the optionalcsi-hostpath-driverand makecsi-hostpath-scthe default for new PVCs. Existing PVCs are not migrated. - Unknown or non-CSI provisioners disable the chart-managed
VolumeSnapshotClass; pass--set volumeSnapshotClass.driver=<csi-driver>when the storage platform supports snapshots but cannot be detected.
--set and --set-string values passed to the installer override the detected snapshot configuration.
On upgrades, the installer reuses existing Helm release values before applying new detected values. This preserves deployment-specific image tags, image pull secrets, ingress hosts, TLS settings, and immutable PVC settings while still adding the correct snapshot configuration.
FalkorDB Enterprise is intentionally limited to one installation per Kubernetes cluster. The chart renders a fixed cluster-scoped ClusterRole install lock and also checks for an existing Helm-owned ClusterDefinition/falkordb from older chart versions. Upgrades of the owning Helm release are allowed; installs from a different release or namespace fail during Helm rendering.
Registry credentials
registry.falkordb.cloud serves the FalkorDB images anonymously, so a default install needs no credentials. Configure this block only when pulling from a registry that requires authentication.
Kubernetes has no cluster-scoped image pull Secret —
imagePullSecrets always resolves in the pod’s own namespace. The Admin Server therefore copies the Secrets named in global.imageCredentials.name and global.imagePullSecrets from its own namespace into every namespace it provisions a database into, refreshing the copy on each cluster operation so a rotated credential propagates. Nothing outside this block needs to know the credentials, and operators do not have to seed namespaces by hand.
install.sh creates the Secret from GITEA_USERNAME and GITEA_TOKEN (or --registry-username / --registry-password) and sets all of the values above for you.
API server address
The kubelet injects
KUBERNETES_SERVICE_HOST and KUBERNETES_SERVICE_PORT into every container, pointing at the API server’s in-cluster ClusterIP. Every in-cluster client — the Admin Server’s Kubernetes client, kubectl in the hook Jobs, controller-runtime inside KubeBlocks — builds its API URL from those two variables. Leave both values empty unless the ClusterIP route does not work; nothing is rendered when they are unset.
Set them when either failure mode applies:
- The ClusterIP’s only endpoint is a managed or public API endpoint that requires SNI. A client connecting by IP sends no SNI, so the endpoint cannot select a certificate and TLS fails mid-handshake.
- A firewall rejects traffic to the ClusterIP outright.
global. Use install.sh --kubernetes-service-host, which fans the value out to the standalone KubeBlocks release it installs, or examples/values-apiserver-dns.yaml, which sets kubeblocks.extraEnvs and kubeblocks.dataProtection.extraEnvs alongside the global keys.
FalkorDB database pods need no extra configuration. The falkordb-addon subchart reads the same two values and emits them through ComponentDefinition.spec.vars, which KubeBlocks injects into every container of a database pod, including the kbagent sidecar it adds itself.
Gateway and public URLs
Admin Server
Admin Server license
Set a license directly in values for development or one-off installs:FALKORDB_LICENSE, validates the signature, and persists the license state at adminServer.license.statePath. If the license expires, is invalid, or any configured limit is exceeded, the server and UI enter read-only mode until a valid license within limits is active.
The signed license key payload includes a version field so future payload formats can be introduced explicitly. The current supported payload version is 1.
To bind a license to one Kubernetes cluster, include k8sClusterId in the signed payload. By default the admin server compares this value to the UID of the kube-system namespace. You can retrieve it with:
K8S_CLUSTER_ID on the admin server and issue licenses with the same value. Licenses without k8sClusterId remain unbound.