Skip to content

Kubernetes / Helm

XeroML provides an official Helm chart for production Kubernetes deployments. The chart manages all XeroML components and supports flexible configuration for different cluster environments.

Prerequisites

  • Kubernetes 1.26 or later
  • Helm 3.12 or later
  • An ingress controller (Nginx, Traefik, etc.)
  • A PostgreSQL database (managed or in-cluster)
  • A Redis instance (managed or in-cluster)

Installation

Terminal window
# Add the XeroML Helm repository
helm repo add xeroml https://charts.xeroml.com
helm repo update
# Install with default values
helm install xeroml xeroml/xeroml \
--namespace xeroml \
--create-namespace \
--set nextauth.secret="<your-secret>" \
--set salt="<your-salt>" \
--set database.url="postgresql://user:pass@host:5432/xeroml"

Custom Values

Create a values.yaml for your deployment:

values.yaml
replicaCount:
web: 2
worker: 1
nextauth:
secret: "<secure-random-string>"
url: "https://xeroml.yourdomain.com"
salt: "<secure-random-string>"
database:
url: "postgresql://xeroml:password@postgres-host:5432/xeroml"
redis:
url: "redis://redis-host:6379"
clickhouse:
url: "http://clickhouse-host:8123"
ingress:
enabled: true
className: nginx
host: xeroml.yourdomain.com
tls:
enabled: true
secretName: xeroml-tls
resources:
web:
requests:
memory: "512Mi"
cpu: "250m"
limits:
memory: "1Gi"
cpu: "500m"
worker:
requests:
memory: "256Mi"
cpu: "125m"
limits:
memory: "512Mi"
cpu: "250m"

Install with custom values:

Terminal window
helm install xeroml xeroml/xeroml \
--namespace xeroml \
--create-namespace \
-f values.yaml

Upgrading

Terminal window
helm repo update
helm upgrade xeroml xeroml/xeroml \
--namespace xeroml \
-f values.yaml

Autoscaling

Enable horizontal pod autoscaling for the web tier:

autoscaling:
web:
enabled: true
minReplicas: 2
maxReplicas: 10
targetCPUUtilizationPercentage: 70

Configuration Reference

See the full values reference:

Terminal window
helm show values xeroml/xeroml

All application configuration from Configuration Reference can be passed as environment variables via the env section in values.yaml:

env:
LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES: "true"
XEROML_TRACING_ENVIRONMENT: "production"