Prerequisites
kubectlconfigured against a running Kubernetes cluster- Helm 3.x
- Sufficient cluster capacity — see resource recommendations below
Helm chart overview
The Onyx Helm chart is located atdeployment/helm/charts/onyx in the repository. It bundles the following subcharts as optional dependencies (all enabled by default):
| Subchart | Version | Purpose |
|---|---|---|
cloudnative-pg | 0.26.0 | PostgreSQL cluster operator |
vespa | 0.2.25 | Vector/keyword search engine |
opensearch | 3.4.0 | Full-text search index |
ingress-nginx | 4.13.3 | Reverse proxy / load balancer |
redis | 0.16.6 | Celery broker and cache |
minio | 5.4.0 | S3-compatible file store |
code-interpreter | 0.3.1 | Sandboxed Python execution |
Installation
Add the Helm repository dependencies
The chart depends on several external Helm repositories. Run
helm dependency update from the chart directory to fetch them:Set the required OpenSearch admin password
The bundled OpenSearch chart requires an admin password to be set on first install. You must provide it before the cluster initialises — changing it later will not rotate the OpenSearch password.
Customise values (recommended)
Copy
values.yaml to a local override file and edit it. Then install using both files:Key values
The sections below cover the most commonly changed values. For the full reference, readvalues.yaml in the chart directory.
Global settings
Authentication secrets
The chart manages Kubernetes Secrets for all credentials. Provide values before first install:Disabling vector DB (lite mode)
For a minimal deployment without connectors or RAG search:values-lite.yaml:
Resource recommendations
The values below are the chart defaults. Tune them for your workload — Vespa in particular benefits from additional memory when indexing at scale.| Component | CPU request | CPU limit | Memory request | Memory limit |
|---|---|---|---|---|
api (API server) | 500m | 1000m | 1 Gi | 3 Gi |
webserver | 200m | 1000m | 512 Mi | 1 Gi |
vespa | 4000m | 8000m | 8000 Mi | 32000 Mi |
opensearch | 2000m | 4000m | 4 Gi | 8 Gi |
inferenceCapability | 2000m | 4000m | 3 Gi | 10 Gi |
indexCapability | 4000m | 6000m | 3 Gi | 6 Gi |
celery_worker_docprocessing | 500m | 1000m | 2 Gi | 12 Gi |
celery_worker_docfetching | 500m | 1000m | 2 Gi | 16 Gi |
celery_worker_primary | 500m | 1000m | 2 Gi | 4 Gi |
celery_worker_light | 250m | 2000m | 512 Mi | 4 Gi |
celery_worker_heavy | 500m | 1000m | 512 Mi | 2 Gi |
celery_beat | 500m | 1000m | 512 Mi | 1 Gi |
PersistentVolumeClaim requirements
The chart creates PVCs for the following stateful services:| Service | PVC name | Default size | Access mode |
|---|---|---|---|
| PostgreSQL (CloudNativePG) | Managed by operator | 10 Gi | ReadWriteOnce |
| Vespa | vespa-storage-da-vespa-0 | 30 Gi | ReadWriteOnce |
| OpenSearch | data-onyx-opensearch-master-0 | 30 Gi | ReadWriteOnce |
| MinIO | Managed by subchart | 30 Gi | ReadWriteOnce |
| Redis | Managed by subchart | 1 Gi | ReadWriteOnce |
storageClassName in each section of values.yaml to match the StorageClass available in your cluster:
Ingress configuration
The chart usesingress-nginx (aliased as nginx) as the in-cluster ingress controller. It is enabled by default and exposes a LoadBalancer service on port 80.
To use an existing ingress controller instead, disable the bundled nginx and configure the ingress section:
Autoscaling
The chart supports both Kubernetes HPA and KEDA ScaledObjects. HPA is the default.autoscaling.engine. The chart no longer bundles KEDA as a dependency.
Running as non-root
By default, some Onyx containers run as root. To enforce non-root execution:Common Helm commands
Enterprise Edition
Multi-tenancy support is an Enterprise Edition feature. Enable it invalues.yaml:
