Skip to main content

Installing NucliaDB on Kubernetes

Helm

NucliaDB provides a helm chart for installing NucliaDB with Kubernetes.

helm install nucliadb-standalone \
https://github.com/nuclia/nucliadb/releases/latest/download/nucliadb-chart.tgz \
--namespace nucliadb --values custom-values.yaml

See our GitHub releases to find the latest helm chart releases available.

Helm Configuration

Standalone installation runs NucliaDB in non-clustering mode on a single pod.

NucliaDB is a 12 factor app and all it's configuration is done through environment variables.

Read our Configuration docs for a complete set of environment variables available to configure your helm chart.

Chart configuration:

  • env: Dictionary of env variable variables
  • envSecrets: Map secrets to environment variables
  • replicas: Number of NucliaDB nodes to create. Recommended to have at least 2
  • image: Customize where to pull image from if you need to copy to private registry
  • imageVersion
  • resources: standard kubernetes resource limits and requests settings
  • storage.class: the NucliaDB chart is not opinionated on the storage classes used and you have to provide those that fit your needs. However, SSD-type disks are recommended to be provided via the Cloud provider of your choice. See the supported cloud providers docs.
  • storage.size: this may heavily depend on your workload.

Example values.yaml file:

# app settings
env:
DRIVER: PG
FILE_BACKEND: PG
DRIVER_PG_URL: postgresql://postgres:password@HOSTNAME:5432/postgres
NUA_API_KEY: '<My key>'
NUCLIA_ZONE: 'europe-1'
CORS_ORIGINS: '["http://localhost:8080"]'

replicas: 2

envSecrets:
- name: DRIVER_PG_URL
valueFrom:
secretKeyRef:
name: nuclia-pg
key: pg-url

storage:
class: <k8s storage class name here>
size: 50Gi

Upgrading NucliaDB

To upgrade to a newer version of NucliaDB with Helm you can use the following command:

VERSION=v2.42.0
helm upgrade nucliadb-standalone \
https://github.com/nuclia/nucliadb/releases/download/$VERSION/nucliadb-chart.tgz \
--namespace nucliadb --values custom-values.yaml