FalkorDB runtime parameters
- Open the deployment.
- Go to Parameters.
- Edit values under FalkorDB Parameters.
- Select Save FalkorDB.
Redis parameters
- Open the deployment.
- Go to Parameters.
- Wait for Redis parameters to load from the ConfigMap.
- Edit changed values.
- Select Save Redis.
maxmemory-policy, maxclients and save, are applied to the running pods. Any other directive, such as databases or io-threads, restarts the pods one at a time. The directives the addon manages, such as port, dir and the TLS files, can’t be changed.
A parameter’s default isn’t known to the UI, so to undo a change, enter the directive’s default. Clearing a field empties the directive when it is applied without a restart. Otherwise the UI refuses to save it.
Enterprise module parameters
The FalkorDB Enterprise module adds graph offloading and LDAP authentication. Its settings live under thefalkordbe. prefix in redis.conf.
- Open the deployment.
- Go to Parameters.
- Edit values under Enterprise Module Parameters, in Graph Offloading or LDAP Authentication.
- Select Save Enterprise.
redis.conf. Clearing a field sets it back to the module default shown in the tables below. Clearing a setting whose default is empty, such as the LDAP ones, empties it, so clearing LDAP servers turns LDAP authentication off.
Graph offloading
For how the feature works and its commands, see Graph offloading.
The directory the dumps are written to is not in this list. Every enterprise
cluster gets
/data/offload on the data volume, so the primary and its
replicas cannot collide on a dump file name. When the deployment has persistent
volumes, the dumps survive a restart and do not count against the pod
ephemeral-storage limit; without them, the dumps use the pod’s ephemeral
storage and are lost when the pod is recreated. The module creates the
directory when it is missing. The path is passed on the redis-server command
line through FALKORDB_EXTRA_MODULES_ARGS, next to the flag that loads the
module, because the addon also runs without the enterprise module and a
falkordbe. directive that no module registers stops the server from starting.
Changing it therefore means changing that environment variable on the
deployment, which restarts the pods; a reconfigure operation rejects the key
with 400.
LDAP authentication
Setfalkordbe.ldap_servers to a comma separated list of ldap[s]://host:port to enable LDAP; leaving it empty keeps LDAP off. Pick the mode with falkordbe.ldap_auth_mode:
bindbuilds the user DN fromfalkordbe.ldap_bind_dn_prefixandfalkordbe.ldap_bind_dn_suffix.search+bindfirst looks the user up withfalkordbe.ldap_search_bind_dnandfalkordbe.ldap_search_bind_passwdunderfalkordbe.ldap_search_base.
falkordbe.ldap_exempted_users_regex, for example ^(default|exporter|replication)$, so monitoring and replication keep working when the directory is unreachable.
Two settings need care:
falkordbe.ldap_search_bind_passwdis stored in clear text in the KubeBlocks managed ConfigMap of the cluster, so anyone who can read that ConfigMap can read the password. Use a dedicated read-only directory account, and restrict read access to the deployment namespace.falkordbe.ldap_tls_skip_verifyaccepts any certificate the LDAP server presents, which removes the protection against man-in-the-middle attacks. Use it only in development.
How the values are applied
The module reads its configuration fromredis.conf at start-up; arguments on the --loadmodule line are ignored. Saving therefore submits a reconfigure OpsRequest, which rewrites the ConfigMap and then applies each changed key to the running server with CONFIG SET, without a restart.
Only the keys listed above are accepted. Redis refuses to start when redis.conf holds a falkordbe. key the module does not register, so the admin server rejects unknown keys and malformed values with 400 instead of writing them.
Settings made with CONFIG SET
Set them through the deployment instead, so every pod keeps them:- Admin UI: Parameters, as described above.
- API:
PATCH /api/clusters/{name}withspec.config.enterprise(thefalkordbe.settings),spec.config.server(redis.confdirectives), orspec.config.graph(FalkorDB settings). See Deployments API. The olderPOST /api/clusters/{name}/ops/configurealso persists enterprise and server settings, and is deprecated. It writes every key it gets toredis.conf, so don’t send FalkorDB settings to it: usespec.config.graphor the Admin UI for those.
CONFIG SET, save the same value this way before the next restart or upgrade.
Sharded deployments
KubeBlocks1.2.0-alpha.1, which the installer deploys, does not finish a reconfigure on a sharded deployment (KubeBlocks issue 10459; 1.2.0-alpha.2 and alpha.3 have the same problem). It rewrites the redis.conf of every shard, but runs CONFIG SET on only one of them, and the OpsRequest stays Running with no error. While it runs, KubeBlocks holds every later reconfigure or restart of the deployment behind it.
The Admin Server works around it. When you save parameters on a sharded deployment, through the UI, POST /api/clusters/{name}/ops/configure or a PATCH of the deployment:
- It also submits a second OpsRequest,
<deployment>-config-apply-<id>, that runsCONFIG SETon every pod of every shard. It applies the settings that take effect without a restart, which are every enterprise setting exceptfalkordbe.ldap_search_bind_passwd, and the Redis directives the UI applies to running pods. It runs through thefalkordb-enterprise-cluster-config-applyOpsDefinition, which the Admin Server creates. The pods keep running. Each pod first waits, for up to 30 minutes, until its mountedredis.confholds the new values, so a pod never runs a valueredis.confdoesn’t have. If the reconfigure is rejected or never runs, this OpsRequest fails and sets nothing. Each key is set as soon asredis.confholds it, so a key that a later change has replaced doesn’t hold back the others. That key is left for the later change to set, so an earlier change can’t overwrite it, and this OpsRequest then endsFailed, naming it. If this OpsRequest ends without succeeding, the Admin Server records it in the audit log. The API response names it inliveApplyOpsName, or says inliveApplyErrorwhy it could not be submitted. - It gives the reconfigure OpsRequest a timeout of 10 minutes. After that KubeBlocks marks it
Aborted, and the next operation can run.Abortedis expected here: the settings are already in every shard’sredis.conf. - Before a reconfigure or a restart of the shards, it gives the same timeout to a reconfigure OpsRequest on the shards that has been
Runningfor longer than that, so KubeBlocks aborts it. Such an OpsRequest was submitted before this fix and would never finish, and the restart would wait behind it. Deleting it yourself doesn’t help: KubeBlocks keeps aRunningOpsRequest, still holding the queue, until it ends.
falkordbe.ldap_search_bind_passwd, reach redis.conf but not the running pods. To load them, restart the shards one at a time:
CONFIG SET by hand. A CONFIG SET by hand is lost when a pod is recreated, and a restart puts back the values in redis.conf.
Check what the pods are running
GET /api/clusters/{name}/config?live=true returns redis.conf and compares it with what each shard pod is running. A short read-only Job in the deployment’s namespace runs CONFIG GET on every pod.
live.drift lists each pod and key whose running value differs from its shard’s redis.conf. live.unreachablePods lists the pods that didn’t answer or couldn’t be read. Only settings that apply without a restart are compared, and credentials never are. Values are compared the way Redis reads them: sizes in size directives such as maxmemory in bytes, so 1gb matches 1073741824, the numbers of save regardless of spacing, and the yes/no and named values of Redis directives, such as allkeys-lru, in any case. Everything else, including every falkordbe. setting, must match exactly, case and spaces included. If the pods can’t be read, the response still has redis.conf, and liveError says why. A deployment that isn’t sharded gets liveError and no live.
To fix drift, send the drifted settings again with POST /api/clusters/{name}/ops/configure, which applies them on every shard pod even when redis.conf already holds them, or restart the shards as shown above. Saving the same value from the UI or a PATCH of the deployment does not help here: those leave out settings redis.conf already holds.
CPU and memory
- Open the deployment.
- Select Edit.
- Choose Resources.
- Enter CPU and memory requests or limits.
- Select Apply Resources.
- CPU:
100m,500m,1,2 - Memory:
256Mi,1Gi,2Gi
Storage
- Open the deployment.
- Select Edit.
- Choose Storage.
- Enter a larger size, for example
50Gi. - Select Expand Storage.
Network configuration
Initial network services are configured during creation in the Networking step. Service types supported by the UI are:ClusterIPNodePortLoadBalancer