Prerequisites
- Access to run
kubectlcommands in the cluster’s context. - At least 3 worker nodes with 4 CPU and 16 GB of memory each.
- Outbound access from the cluster to pull images:
registry.falkordb.cloud(Enterprise images, credentials required),docker.io,apecloud-registry.cn-zhangjiakou.cr.aliyuncs.com,registry.k8s.io, andghcr.io— orregistry.falkordb.cloudalone, since every image is also mirrored there (see Private registries).
Recommended inputs
Prepare these values before installing:- Kubernetes context name.
- FalkorDB Enterprise namespace.
- KubeBlocks namespace.
- A stable 32+ character JWT secret.
- Image pull credentials if Enterprise images are private.
- Public Admin UI hostname.
- TLS-enabled ingress configuration, and an ingress controller to serve it. The example below uses
className: nginx, which needs ingress-nginx; the installer installs it only for--quick-access. - Storage class for Admin Server persistence if the cluster default is not suitable.
falkordb-enterprise-install-lock and blocks installs from any other release or namespace in the same cluster. Re-running or upgrading the owning release is allowed.
Generate a JWT secret:
Production values file
Create a values file for environment-specific settings:gateway.ingress.enabled=true, the chart derives the Admin UI public URL from the first gateway ingress host. The Admin Server CORS origin defaults to that Admin UI public URL unless adminServer.env.corsOrigin is set.
Install with explicit context and Secrets
Private images
If Admin Server or Admin UI images are private, configure an image pull Secret. See Private registries for the complete flow.Browser encryption key
FalkorDB Browser is enabled by default. The chart includes a post-install/post-upgrade hook that ensures a 64-character hexadecimalENCRYPTION_KEY exists for the Browser deployment and restarts the Browser when needed.
To provide your own key:
Enterprise license
The admin server can receive a signed Enterprise license from Helm. For production, create a Secret in the Enterprise namespace and reference it from chart values:FALKORDB_LICENSE and persists validated license state at /data/license-state.json by default. Keep admin server persistence enabled so API-activated licenses and Helm-provided licenses survive pod restarts. If the license is expired, invalid, or any resource limit is exceeded, authenticated write operations are locked and the Admin UI becomes read-only until a valid license within limits is active.
Generated license keys include a signed payload with version: 1. The admin server currently accepts payload version 1; future license payload formats should increment this field.
To bind the license to this Kubernetes cluster, generate it with the cluster ID from the UID of the kube-system namespace:
k8sClusterId. The admin server compares it to K8S_CLUSTER_ID when set, otherwise to the kube-system namespace UID. Omit k8sClusterId for an unbound license.
Post-install validation
<release>-initial-admin-password:
Production notes
- Do not install with
--quick-accessor--no-ingress: both publish the Admin UI over plain HTTP. - If you set
adminServer.bootstrap.adminUser.passwordyourself, keepmustChangePassword: trueso it is replaced at first sign-in. - Prefer a values file over long
--setcommand lines. - Do not rely on
helm --reuse-valuesfor upgrades unless image tags are set explicitly. - Leave
cookieSecureenabled behind TLS. - Keep Admin Server persistence enabled unless audit logs and local state are intentionally disposable.
Storage
Database volumes need replicated, snapshot-capable CSI storage that can attach on any node, such as a cloud provider’s block storage, Longhorn or Rook-Ceph. Make it the defaultStorageClass, or choose it in the create wizard.
Local storage such as local-path keeps each volume on the node its pod first ran on. Losing that node loses the data, and volume-snapshot backups are not available. On a multi-node cluster the installer leaves such storage alone and warns. It enables its bundled single-node csi-hostpath-driver only on a single-node cluster, or when you pass --local-csi-hostpath enable. That driver stores every volume on one node, so never enable it on a production cluster. An install that already uses it keeps using it on upgrade.
Backups
The chart’s default backup repository is a volume in the same Kubernetes cluster as your databases, so a cluster or storage failure can take the backups with the data. For production:- Create a backup repository on object storage (S3, GCS, Azure Blob or MinIO) and mark it as the default. See Backups.
- Test a restore of each deployment into a new deployment.
Retain reclaim policy.
Alerts
Enable the pod monitors and the alert rules so you hear about failed shards, broken replication, memory nearmaxmemory, full volumes and failed backups. Both need the Prometheus Operator CRDs (PodMonitor, PrometheusRule), and a Prometheus instance whose selectors pick up resources in the release namespace, for example from kube-prometheus-stack. Install and configure that first; add its required labels with podMonitor.additionalLabels and alertRules.additionalLabels.
Database namespaces
Admin Server gets read-write access to Secrets in every namespace a database is created in. It always refuseskube-* namespaces and the namespaces in adminServer.managedNamespaces.denied (kb-system by default). For production, also confine databases to a prefix:
KubeBlocks version
The installer deploys KubeBlocks1.2.0-alpha.1, which is a prerelease. Check KubeBlocks upgrades before changing it. One known gap: its sharding definition accepts spec.tls.shared and ignores it, so KubeBlocks can’t issue one CA for all shards. A sharded deployment with TLS needs a certificate you provide.
Pod security admission
The installer labels the release namespaceenforce=baseline with audit and warn at restricted. With CSI storage, baseline is also enough for kb-system and for database namespaces, and no namespace needs privileged. The chart’s bundled CSI drivers are the exception: csi-hostpath-driver, csi-s3 and csi-nfs run privileged pods in the release namespace, so it needs privileged when any of them is enabled. The installer raises the label itself only for csi-hostpath-driver.
If your cluster applies a stricter default, or you manage namespace labels yourself, see Pod Security Admission levels for the measured level of each namespace and the exact workloads that cap it.
Network policies
The chart can restrict what reaches the Admin Server and Admin UI, and what the Admin Server can reach. This is off by default because a CNI that does not implementNetworkPolicy accepts the objects and enforces nothing.
networkPolicy.externalEgress to your control plane and identity provider ranges. See Network policies for the full set of rules, the flows that deliberately have none, and how to verify enforcement.
Supply chain
Verify the chart signature before installing, and the image signatures before promoting a release.helm install does no signature checking of its own.
appVersion by default, so a chart version always requests the same image version. For a stricter guarantee, pin adminServer.image.digest and adminUi.image.digest so the image cannot be swapped underneath you. See Supply chain.