Prerequisites
- An OpenShift 4.14+ cluster and the
ocCLI logged in with a user that hascluster-admin(the installer creates namespaces, CRDs, ClusterRoles, and webhooks). kubectl,helm, andbase64on the machine that runs the installer, with access to runkubectlcommands in the cluster’s context.occan stand in forkubectl, but the installer invokeskubectldirectly, so keep both on thePATH.- 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).
How OpenShift differs
Nothing in the chart requires privileged containers,
hostPath volumes, or hostNetwork, so no custom SCC beyond restricted-v2/nonroot-v2 is needed for the chart’s own workloads.
1. Prepare security context values
The chart’s defaults pinrunAsUser/runAsGroup/fsGroup for the Admin Server (1000), Admin UI (101), and hook jobs (1001). Under the default restricted-v2 SCC these fixed UIDs are rejected because they fall outside the namespace’s assigned UID range.
The recommended approach is to null the fixed IDs and let OpenShift assign them. All other hardening (runAsNonRoot, seccompProfile: RuntimeDefault, dropped capabilities, no privilege escalation) stays in place and satisfies restricted-v2. Add this to your values file:
nonroot-v2 SCC to the release service accounts after the namespace exists. Only use this if your images require their build-time UID:
restricted-v2 out of the box: the KubeBlocks operator pods in kb-system and the database pods (service accounts kb-<cluster>-<component>) are admitted with no SCC grants (verified on ROSA 4.20 with FalkorDB addon chart >= 1.6.1, which is what this chart bundles). OpenShift assigns each container an arbitrary namespace-range UID; all database containers — falkordb, kbagent, and metrics — run correctly that way.
2. Configure routing
OpenShift’s ingress operator watches Ingress resources and creates matching Routes when the Ingress uses theopenshift-default IngressClass. This means the chart’s standard gateway Ingress works unchanged — no Route template is required.
Confirm the IngressClass exists:
tls block referencing a secret in the release namespace:
- Use a hostname under the cluster’s apps wildcard domain (
*.apps.<cluster-domain>) to get DNS for free, or any custom domain that resolves to the router. - With the
tlsblock, the ingress operator copies the secret into the generated Route (edge termination). If you omit both the annotations andtls, the Route serves plain HTTP only — https:// requests return 503 (verified on ROSA 4.20). - The ingress operator emits an
IncompleteIngressToRouteRules: Unsupported exact path typeevent on the gateway Ingress. This is harmless — the Routes for/(Admin UI) and/api(Admin Server) are still generated and serve correctly (verified on ROSA 4.20). - Do not rely on the installer’s quick-access path that deploys ingress-nginx: on OpenShift, always pass a values file with the ingress block above (or use
--no-ingresswith LoadBalancer services on ROSA/ARO where cloud load balancers are available).
Expose FalkorDB Browser
The FalkorDB Browser has its own ingress, disabled by default — without it the Browser is not reachable and the Admin UI’s browser link (VITE_BROWSER_URL) stays empty. Give it a second hostname under the apps domain:
3. Verify storage and snapshot support
FalkorDB Enterprise uses persistent volumes for databases and the Admin Server, and CSI volume snapshots for backups.- OpenShift Data Foundation (ODF): the installer auto-detects the
openshift-storage.rbd.csi.ceph.comprovisioner and uses it for snapshot-capable storage. Use theocs-storagecluster-ceph-rbdclass for database volumes. - ROSA / ARO: the AWS EBS (
ebs.csi.aws.com) and Azure Disk (disk.csi.azure.com) CSI drivers are detected automatically. - OpenShift ships the CSI snapshot controller and CRDs, so pass
--skip-snapshot-controllerto the installer to avoid running a second controller.
VolumeSnapshotClass and backups fall back to PVC-mounted repositories.
OpenShift local (CRC)
OpenShift Local behaves differently from full OCP in ways that matter for testing this chart:-
Sizing: the defaults (10.5 GB RAM, 31 GB disk) are too small — KubeBlocks pods fail to schedule and the kubelet evicts pods on ephemeral-storage pressure. Before starting:
-
Snapshots: unlike full OCP, CRC does not ship the snapshot controller or
VolumeSnapshotCRDs, so do not pass--skip-snapshot-controller. The snapshot-controller chart pods run as UID 1000 and are rejected byrestricted-v2; grantnonroot-v2to their service accounts in the KubeBlocks namespace: -
Storage: CRC’s
kubevirt.io.hostpath-provisioneris not CSI-snapshot-capable; the installer disables the chart-managedVolumeSnapshotClassautomatically and backups fall back to PVC-mounted repositories.
4. Install FalkorDB Enterprise
Combine the SCC and routing values from steps 1–2 into one file (for exampleopenshift-values.yaml), plus the production settings from Production install (JWT secret, bootstrap admin, persistence, license). A ready-to-edit example is available at helm/falkordb-enterprise/examples/values-openshift.yaml. Then run:
kb-system, then installs the FalkorDB Enterprise release into falkordb-system.
5. Validate the install
https://admin.apps.<cluster-domain> and log in with the bootstrap admin user.
If a pod is stuck in CreateContainerConfigError or fails admission, check for SCC violations:
Operations notes for OpenShift
The standard operations playbooks apply unchanged. OpenShift-specific caveats:- Backups and restores (Backups and schedules): snapshot-based backups require ODF or a cloud CSI driver with a
VolumeSnapshotClass. Verify withkubectl get volumesnapshotclassbefore scheduling backups. On ROSA the stockcsi-aws-vscclass (EBS CSI) works out of the box — thevolume-snapshotbackup method completes and produces a ready-to-useVolumeSnapshot(verified on ROSA 4.20). - Database deployments (Standalone deployment and related): with the bundled FalkorDB addon chart (
1.6.1or later), database pods are admitted underrestricted-v2with no SCC configuration. On older addon versions (1.6.0and earlier) database pods fail SCC admission — symptom: the database staysPending, the PVC showsWaitForFirstConsumer, and the InstanceSet logs aFailedReconcileevent with the SCC rejection. Fix by upgrading, or withopenshift.sccBinding.enabled=true/ a manualanyuidgrant as shown in step 1. - Upgrades (Upgrade FalkorDB Enterprise, Upgrade KubeBlocks): keep passing the same
openshift-values.yaml(including the SCC overrides) on every upgrade, or the fixed UIDs return and pods are rejected on the next rollout. - Support packages (Support packages): work unchanged; the Admin Server only needs the RBAC the chart already grants.
- Cluster upgrades: OpenShift minor upgrades can rotate router and SCC defaults. After an OCP upgrade, confirm pods reschedule cleanly and the Route still serves the Admin UI.