Skip to main content
This guide deploys FalkorDB Enterprise on Azure Kubernetes Service (AKS) with no public exposure:
  • The Admin Dashboard (UI + API) and FalkorDB Browser are served through an internal Azure Load Balancer — reachable only from inside the VNet (or peered VNets / VPN / ExpressRoute).
  • TLS certificates are managed in Azure Key Vault and synced/rotated automatically by the AKS application routing add-on.
  • Hostnames resolve through an Azure Private DNS zone linked to the cluster VNet.

Architecture

Two hostnames are used, both pointing at the same internal IP:

Prerequisites

  • An AKS cluster (any supported version) and az CLI logged in with permissions to:
    • manage the cluster (az aks ...),
    • create Key Vaults and role assignments,
    • create Private DNS zones in the target resource group.
  • kubectl and cluster credentials (access to run kubectl commands in the cluster’s context): az aks get-credentials -g <rg> -n <cluster>.
  • FalkorDB registry credentials (provided by FalkorDB support).
  • 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, and ghcr.io — or registry.falkordb.cloud alone, since every image is also mirrored there (see Private registries).
  • The install script (referenced by URL below).
Note on snapshots: AKS managed CSI drivers ship their own snapshot controller, so the install uses --skip-snapshot-controller.

0. Set variables

1. Key Vault and TLS certificate

Create an RBAC-enabled Key Vault and a self-issued certificate covering both hostnames. Azure auto-renews it 30 days before expiry, and the app routing add-on picks up renewals automatically.
The add-on’s Key Vault integration grants access via RBAC role assignments, so the vault must be created with --enable-rbac-authorization true. Access-policy vaults will not work.
Certificate trust: a Self-issued certificate is not trusted by browsers out of the box. For internal domains this is usually acceptable (users accept the warning once), or distribute the cert to client trust stores. To avoid warnings entirely, import a certificate from your internal CA into the Key Vault instead — everything else in this guide stays the same.

2. Application routing add-on with an internal ingress controller

Enable the add-on with Key Vault integration, then create a second NGINX ingress controller that provisions an internal load balancer. (The add-on’s default controller, webapprouting.kubernetes.azure.com, is always public — do not use it for internal-only deployments.)

3. Install FalkorDB Enterprise

The install script creates the namespace, registry pull secret, KubeBlocks, and the Helm release. Only values that differ from chart defaults are set on the command line.
The chart is pulled from oci://registry.falkordb.cloud. The script logs your local Helm client in to the registry automatically using --registry-username/--registry-password. If you hit an unauthorized error fetching the chart (older script versions), log in manually first: helm registry login registry.falkordb.cloud -u "$REGISTRY_USERNAME" -p "$REGISTRY_PASSWORD".
Key points:
  • TLS secret names follow the add-on convention keyvault-<ingress-name>. With the default release name the ingresses are falkordb-enterprise-gateway and falkordb-enterprise-falkordb-browser. If you use --release-name, adjust both tls[0].secretName values accordingly.
  • Same-origin routing: the gateway ingress serves the UI at / and the API at /api on the dashboard host, so the UI reaches the API with relative URLs — no separate API hostname is needed.
  • falkordb-browser.env.nextauthUrl must be the public Browser URL, otherwise Browser auth redirects break.
  • adminUi.env.viteBrowserUrl points the dashboard’s “open in Browser” links at the Browser hostname.

4. Private DNS

Create the private zone, link it to the cluster VNet, and add A records for both hostnames pointing at the internal ingress IP.
Resolution scope: the private zone only resolves from linked VNets. Clients on VPN/ExpressRoute need their DNS to forward the zone to Azure DNS (168.63.129.16), e.g. via an Azure DNS Private Resolver. Link additional (peered) VNets with more az network private-dns link vnet create commands.

5. Verify

To test the full UI from a workstation outside the VNet, port-forward to the internal controller and map the hostnames locally:
Add to /etc/hosts:
Then browse https://falkordb-admin.example.internal (accept the self-signed certificate warning). Remove the hosts entry when done.

6. First login

  1. Open https://$DASHBOARD_HOSTNAME and sign in with $ADMIN_EMAIL / the temporary password.
  2. You will be forced to change the password (mustChangePassword=true).
  3. Activate your Enterprise license in the dashboard.

Troubleshooting

Cleanup

To uninstall, follow the uninstall playbook, then optionally remove the Azure resources: