Skip to main content
Running KaireonAI on your own Kubernetes cluster is an Enterprise on-prem deployment under a commercial license. The Helm chart and container images are provisioned as part of an Enterprise agreement — this is not a free or open download. Contact sales. See Deployment options.
KaireonAI includes a production-ready Helm chart for deploying to any Kubernetes cluster. This gives you full control over scaling, networking, monitoring, and security.

Prerequisites

  • Kubernetes cluster (1.24+)
  • Helm 3.x installed
  • kubectl configured for your cluster
  • PostgreSQL database (self-managed, RDS, or CloudNativePG)
  • Redis (self-managed, ElastiCache, or included via Helm)

What’s Included

The Helm chart in helm/ provides:

Quick Install

The command above pre-creates the kaireon-secrets Secret yourself, so set secrets.provider to any value other than kubernetes (e.g. external) — that tells the chart to use your Secret instead of templating a conflicting one of the same name. The chart’s built-in secrets.* block only covers NEXTAUTH_SECRET, JWT_SIGNING_SECRET, and CONNECTOR_ENCRYPTION_KEY; creating the Secret yourself is how you also supply WEBHOOK_SIGNING_SECRET and API_KEY_PEPPER, which are required when NODE_ENV=production. If you keep the default Grafana stack, add a GF_ADMIN_PASSWORD entry to the Secret (or pass --set monitoring.grafana.adminPassword=...).

With ML Worker

To include the ML Worker for AI-powered segmentation, policy analysis, and content intelligence:
When mlWorker.enabled=true, the chart automatically injects ML_WORKER_URL into the API pods — no manual configuration needed.

Configuration

Key Helm values you can customize:
Use --set to override any value:

Architecture

The API communicates with the ML Worker over an internal ClusterIP service (kaireon-ml-worker:8000). The ML Worker reads directly from PostgreSQL for schema data and analysis inputs.

Monitoring Stack

When monitoring.prometheus.enabled=true, the chart deploys:

Prometheus Metrics

KaireonAI exposes Prometheus metrics at /api/metrics (the bundled Prometheus scrape config targets this path; the endpoint requires an admin role or a valid API key):

Grafana Dashboards

Six pre-built dashboards are included in helm/dashboards/:
  • API Overview — Request rates, latency percentiles, error rates
  • Decision Engine — Pipeline stage durations, candidate counts, scoring latency, cache hit rates
  • Decision Performance — Scoring model performance, qualification rates, conversion tracking, uplift metrics
  • Infrastructure — CPU, memory, pod restarts, network throughput
  • Model Health — Model AUC tracking, drift detection, retraining triggers
  • Worker Queues — Queue depth, processing times, DLQ counts, failure rates

Database Options

Self-Managed PostgreSQL

Deploy PostgreSQL inside the cluster. The chart includes an internal PostgreSQL StatefulSet by default:
Or use an operator like CloudNativePG:

Amazon RDS (External)

Upgrading

Rate Limiting & Circuit Breakers

  • Rate limiting — KaireonAI protects API endpoints with a sliding-window rate limiter backed by Redis. You configure limits per endpoint via environment variables or platform settings.
  • Circuit breakers — External integrations (connectors, webhooks) use circuit breaker patterns to prevent cascade failures. States cycle: closed → open → half-open.

Troubleshooting

Kubernetes secrets are immutable by default once created. To update secrets, delete and recreate:
Then restart the pods to pick up the new values:
The Next.js application requires at least 512Mi of memory. If pods are being OOMKilled, increase the memory limit:
For the worker, allocate at least 1Gi. Check pod events for the specific reason:
The API pods use a liveness probe at /api/health and a readiness probe at /api/ready (both on port 3000). If probes fail during startup, increase the initialDelaySeconds:
Startup can take 15-30 seconds as the app validates environment variables and connects to PostgreSQL. Check pod logs if probes continue to fail:
Ensure the node IAM role or service account has ecr:GetAuthorizationToken and ecr:BatchGetImage permissions. For EKS, verify that the OIDC provider is configured and the service account is annotated:
Verify the database is reachable from within the cluster. Common issues include missing VPC peering, security group rules, or incorrect hostnames. Test connectivity from a debug pod:

Next Steps

ML Worker

Configure the ML Worker for AI features.

Operations

Configure Prometheus metrics and Grafana dashboards.

Scaling Guide

Scaling guidance for high-throughput deployments.

Cloud Deployment

One-click deployment to AWS App Runner.