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.
Prerequisites
- Kubernetes cluster (1.24+)
- Helm 3.x installed
kubectlconfigured for your cluster- PostgreSQL database (self-managed, RDS, or CloudNativePG)
- Redis (self-managed, ElastiCache, or included via Helm)
What’s Included
The Helm chart inhelm/ 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: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:--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
Whenmonitoring.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 inhelm/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: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
Secret creation errors ('already exists')
Secret creation errors ('already exists')
Kubernetes secrets are immutable by default once created. To update secrets, delete and recreate:Then restart the pods to pick up the new values:
API pods OOMKilled or CrashLoopBackOff
API pods OOMKilled or CrashLoopBackOff
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:
Health probe failures (readiness/liveness)
Health probe failures (readiness/liveness)
The API pods use a liveness probe at Startup can take 15-30 seconds as the app validates environment variables and connects to PostgreSQL. Check pod logs if probes continue to fail:
/api/health and a readiness probe at /api/ready (both on port 3000). If probes fail during startup, increase the initialDelaySeconds:ECR image pull errors ('ImagePullBackOff')
ECR image pull errors ('ImagePullBackOff')
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:Cannot connect to PostgreSQL from pods
Cannot connect to PostgreSQL from pods
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.