NeuralTrust Platform has first-class support for Red Hat OpenShift 4.10 and newer — on ROSA, ARO, OpenShift on bare metal, IPI/UPI, and self-managed OpenShift in any cloud. The chart ships a dedicatedDocumentation Index
Fetch the complete documentation index at: https://docs.neuraltrust.ai/llms.txt
Use this file to discover all available pages before exploring further.
values-openshift.yaml reference and uses OpenShift Routes by default for external access.
Pick your path
Hybrid (recommended)
Data Plane + TrustGate + Firewall in your OpenShift cluster. Control Plane on NeuralTrust SaaS. Fastest path.
Self-hosted
Full stack including Control Plane UI in your cluster. For sovereignty, air-gapped, or fully-disconnected OpenShift environments.
Cluster prerequisites
| Resource | Recommended |
|---|---|
| OpenShift version | 4.10 or newer |
| CPU pool node type | 8 vCPU / 32 GiB recommended (4 vCPU / 16 GiB also works but doubles the node count) |
| Min CPU nodes | ≥ 4 for hybrid (CPU Firewall), ≥ 5 for self-hosted (CPU Firewall). Subtract one when using GPU Firewall workers. ≥ 3 AZs for HA. |
| GPU pool (optional) | 4 vCPU / 16 GiB + 1 × NVIDIA GPU — 5 nodes (one per default Firewall worker). Requires the NVIDIA GPU Operator. |
| Storage class | Cluster default (typically gp3-csi, managed-premium, pd-balanced, or ocs-storagecluster-ceph-rbd) |
| External access | OpenShift Routes (default) or Ingress (when integrating with external L7 LB) |
| DNS | OpenShift wildcard DNS (e.g. *.apps.<cluster>.openshift.com) or a custom domain |
| Certificates | OpenShift router cert (default), custom Route TLS, or Ingress with cert-manager |
| Image pull | gcr-secret (docker-registry) — must be linked to the workload service accounts |
| Optional | NVIDIA GPU Operator for Firewall GPU workers |
Required setup
Architecture
All workloads run inside your OpenShift cluster. Data never leaves your environment.OpenShift-specific defaults
Whenglobal.platform: "openshift":
-
External access: Routes (not Ingress). Hostnames follow the long service-name pattern:
<service-name>.<global.domain>. Example:Service Route hostname TrustGate admin trustgate-admin.<domain>TrustGate gateway trustgate-gateway.<domain>TrustGate actions trustgate-actions.<domain>Control Plane API control-plane-api.<domain>Control Plane UI control-plane-app.<domain>Control Plane scheduler control-plane-scheduler.<domain>Data Plane API data-plane-api.<domain>This is different from the chart’s Ingress hostname scheme on other clouds (admin.<domain>,gateway.<domain>, etc.). It matches the OpenShift convention for Route names. -
TLS: edge-terminated Routes use the OpenShift router cert by default. For custom certs, populate
spec.tls.certificateon the Route (the chart’s per-Route values support this). - Security context: respects SCC. The chart relaxes hardcoded UID/GID where OpenShift assigns them; ClickHouse and PostgreSQL specifically have OpenShift-aware container security contexts.
-
Image pull:
gcr-secretmust be linked to each component’s service account (oc secrets link <sa> gcr-secret --for=pull).
Switching to Ingress
To use Kubernetes Ingress instead of Routes (e.g. when integrating with an external NGINX ingress controller):admin.<domain>, gateway.<domain>).
Common configuration
Reference values file
The chart shipsvalues-openshift.yaml as a tested baseline for OpenShift installs. Copy it, set your domain, and adjust toggles.
Custom Route certificates
Internal-only Routes
Storage class
GPU node pool (NVIDIA GPU Operator)
After installing the GPU Operator from OperatorHub:ROSA / ARO / on-prem differences
| Topic | ROSA (AWS) | ARO (Azure) | OpenShift on-prem |
|---|---|---|---|
| Default storage class | gp3-csi | managed-premium | varies — check oc get sc |
| Default DNS | *.apps.<cluster>.openshiftapps.com | *.apps.<cluster>.<region>.aroapp.io | your customer DNS |
| Cluster-bound networking | AWS PrivateLink | Azure Private Link | depends on infra |
| GPU node groups | AWS-side: g5/g6 ASGs | Azure-side: Standard_NC* | depends on infra |
Backup and data lifecycle
For production OpenShift:- PostgreSQL: use managed databases (RDS, Azure Database for PostgreSQL, Cloud SQL) and set
neuraltrust-control-plane.infrastructure.postgresql.deploy: false. - ClickHouse: enable
clickhouse.backup.enabled: truewith S3, GCS, or Azure Blob targets, or run ClickHouse Cloud externally. - Kafka: external Confluent Cloud / MSK / Event Hubs; set
infrastructure.kafka.deploy: false.
Verification
Common issues
| Symptom | Likely cause | Fix |
|---|---|---|
Pods stuck CreateContainerConfigError | gcr-secret not linked to the service account | oc secrets link <component-sa> gcr-secret --for=pull -n neuraltrust |
| Route hostname unexpected | Mixing Route vs Ingress | When Ingress is enabled on a component, the chart skips its Route |
| Pod fails to start with SCC error | Custom UID conflicts with SCC | Use oc adm policy add-scc-to-user anyuid -z <sa> only as a last resort; prefer adjusting the chart values |
PVC stuck Pending | Wrong storage class | oc get sc; set global.storageClass to a valid one |
| ClickHouse fails on first start | UID/GID mismatch | The chart sets OpenShift-friendly SCC for CH; verify you haven’t overridden podSecurityContext |
Next steps
- Hybrid deployment on OpenShift — Data Plane only, Control Plane on SaaS
- Self-hosted deployment on OpenShift — full stack including CP
- Deployment models — hybrid vs self-hosted in depth
- Feature flags reference — local vs external Postgres/Redis/Kafka/CH, image registry, storage, secrets
- Image catalog — what runs where
- Firewall deployment — GPU workers on OpenShift