Choose who issues the certificates
Every component of a deployment has to trust the others, so all of them share one CA. The issuers differ in what they need from you and in which deployments they work for.Issued by FalkorDB Enterprise
The Admin Server creates a CA for the deployment and a certificate signed by it.- The CA is valid for 10 years. It is stored with its key in the Secret
<name>-tls-ca, which never leaves the deployment’s namespace and is not mounted into any pod. - The certificate is valid for one year and is stored in the Secret
<name>-tls. It is renewed 30 days before it expires, signed by the same CA, so clients keep working without changes. - The certificate names every pod of every component, the deployment’s Services,
localhost, and its external domain when it has one. Clients that verify hostnames can connect by any of those names.
cert-manager
The Admin Server creates a cert-managerCertificate named <name>-tls in the deployment’s namespace. It asks for the same names as the FalkorDB Enterprise issuer, and is signed by the Issuer or ClusterIssuer you select. cert-manager writes the Secret <name>-tls and renews it.
The option is unavailable when cert-manager is not installed in the Kubernetes cluster. The issuer you choose has to:
- Sign names under
svc.cluster.local. A CA or Vault issuer can; an ACME issuer such as Let’s Encrypt cannot. - Include its CA certificate in the Secret as
ca.crt, so that every component trusts the others and the deployment page can show the CA to clients.
Your own Secret
Point the deployment at a Secret that holds a certificate, its private key and the CA that signed it. The default key names areca.crt, tls.crt and tls.key; you can name others in the wizard.
The certificate is used by every component, so it must:
- Be signed by the CA in the Secret.
- Allow both server and client authentication, because nodes also connect to each other.
- Name the hostnames your clients connect to, if they verify them. Pod names follow
*.<name>-<component>-headless.<namespace>.svc.cluster.local.
Issued by KubeBlocks
KubeBlocks generates a separate CA for each component, and its certificates only name the pods of that component. Components therefore cannot verify each other, so this option is only offered for standalone deployments and replication without Sentinel. It cannot be used with an external domain.Renewal
Every hour, the Admin Server checks each deployment that uses TLS (except one issued by KubeBlocks) and takes it one step through the list below, so a change can take more than one check to reach the pods:1
Renews the certificate when it has to
FalkorDB Enterprise renews its certificate when it is about to expire, or when it no longer names every component. cert-manager is asked for any new names and renews on its own schedule.
2
Copies it to the deployment's pods
The certificate reaches every component of the deployment, as files in each pod.
3
Reloads it on the FalkorDB nodes
Every FalkorDB node loads the new files in place, without a restart: a
Custom operation, listed on the Operations tab, runs CONFIG SET for the certificate, key and CA files on each node. Open connections, replication and the cluster bus carry on; new connections get the new certificate. It waits until the deployment is Running.4
Restarts Sentinel
Sentinel cannot reload its certificate, so a deployment with Sentinel then restarts its Sentinels (a
Restart operation). The FalkorDB nodes keep running.Restart operation), and if that fails too, a later check starts over. Each renewal, reload and restart is recorded in the audit log.
KubeBlocks names the shards of a sharded deployment when it creates them. When FalkorDB Enterprise or cert-manager issues its certificates, their names are therefore added once the deployment is running, and the shards reload the certificate. A certificate you provide is used as it is.
falkordb-enterprise-tls-reload and falkordb-enterprise-cluster-tls-reload. KubeBlocks runs them in the FalkorDB containers with its own service account.
The deployment page shows who issues the certificates and when the current one expires.
Connect with TLS
The deployment page shows the CA certificate under Connection Details. Save it to a file and give it to your client. For example, withredis-cli:
6379 for FalkorDB nodes, and 26379 for Sentinel. Plain connections are refused. Nodes do not ask clients for a certificate.
Open in Browser on the deployment page opens the FalkorDB Browser with TLS turned on.