Kubernetes Deployment
Deploy Aurora on any Kubernetes cluster using Helm.
Prerequisites
Cluster requirements
- 4+ CPU cores and 12+ GB RAM allocatable across your nodes
- A working default StorageClass (GKE and AKS have this out of the box; EKS needs the EBS CSI driver)
- Outbound internet from nodes (to pull container images from public registries)
kubectlconnected to the cluster
Don't have a cluster yet?
- AWS EKS: EKS Cluster Setup for Aurora
- GCP GKE / Azure AKS: Create a cluster with default settings
Aurora deploys several third-party images from public registries. Your nodes must be able to pull: postgres:15-alpine, redis:7-alpine, hashicorp/vault:1.15, searxng/searxng:*, memgraph/memgraph-mage:3.8.1. Optional components (e.g. services.minio.enabled: true) may pull additional images. For air-gapped clusters, mirror these to a private registry and review enabled services in your values.yaml.
Required tools
| Tool | Install |
|---|---|
kubectl | kubernetes.io/docs/tasks/tools |
helm | helm.sh/docs/intro/install |
yq | github.com/mikefarah/yq#install |
openssl | Usually pre-installed. macOS: brew install openssl |
S3-compatible storage
Aurora stores files in S3-compatible object storage. Have your bucket details ready.
| Provider | Endpoint URL | Notes |
|---|---|---|
| AWS S3 | https://s3.amazonaws.com | EKS guide covers bucket creation |
| GCS (S3 interop) | https://storage.googleapis.com | Create HMAC keys |
| Cloudflare R2 | https://<ACCOUNT_ID>.r2.cloudflarestorage.com | Region: auto |
| MinIO | http://minio:9000 | Self-hosted |
LLM provider
Aurora's AI agents need an LLM. Have your provider credentials ready before deploying.
Quickstart: Use OpenRouter -- one API key, no model prefix config needed.
For full setup details (all providers, model configuration, Vertex AI/Bedrock auth), see the LLM Providers guide.
The key values you'll set during deployment:
config:
LLM_PROVIDER_MODE: "openrouter" # or "vertex", "anthropic", "openai", "bedrock"
# For non-OpenRouter providers, also set:
# MAIN_MODEL: "vertex/gemini-3.6-flash"
# RCA_MODEL: "vertex/gemini-3.6-flash"
secrets:
llm:
OPENROUTER_API_KEY: "" # or OPENAI_API_KEY, ANTHROPIC_API_KEY, etc.
For Vertex AI on Kubernetes, store credentials as a secret and reference with existingSecret:
kubectl create secret generic aurora-llm-vertex -n aurora-oss \
--from-literal=VERTEX_AI_PROJECT="your-gcp-project-id" \
--from-literal=VERTEX_AI_LOCATION="us-central1" \
--from-literal=VERTEX_AI_SERVICE_ACCOUNT_JSON="$(cat service-account.json)"
secrets:
llm:
existingSecret: "aurora-llm-vertex"
Choose Your Deployment Method
| Method | Best for | What it does |
|---|---|---|
| Interactive Deploy Script | First-time setup, getting running quickly | Script handles secrets, ingress, Vault automatically |
| Manual Helm Deployment | GitOps, custom configs, version-controlled values | You edit values and run Helm yourself |
Both produce the same result. The script requires cloning the repo. Manual can use either a local clone or a published chart from a Helm registry.
Interactive Deploy Script
Best for: first-time setup, getting Aurora running quickly.
1. Clone the repo
git clone https://github.com/arvo-ai/aurora.git
cd aurora
2. Preflight check
./deploy/preflight.sh
Fix any FAIL items before continuing.
3. Run the deploy script
# Standard (public LB, nip.io URLs for quick testing):
./deploy/k8s-deploy.sh --skip-build
# Private/VPN (internal LB, your own hostname):
./deploy/k8s-deploy.sh --private --skip-build
# Build your own images instead of using prebuilt GHCR ones:
./deploy/k8s-deploy.sh --private
The script prompts for: container registry, storage bucket, LLM provider/key, and (for --private) a hostname. It then:
- Installs nginx ingress controller if missing
- Generates secrets and
values.generated.yaml - Deploys with Helm
- Initializes and configures Vault
- Prints access URLs
After deployment, open the frontend URL. The first user to register becomes the org admin.
You're done. Skip to Post-Deploy: DNS & TLS if you need to configure a real domain or HTTPS.