Skip to main content

Installation

InfraSage supports three deployment modes. Choose the one that fits your environment.


Option A — Docker Compose (Local / Development)

The fastest way to get started. All services run on a single host.

Requirements

  • Docker 20.10+ and Docker Compose v2
  • 8 GB RAM (16 GB recommended)
  • 20 GB free disk for ClickHouse data

Steps

git clone https://github.com/infrasage/infrasage.git
cd infrasage

# Configure secrets
cat > .env <<EOF
CLICKHOUSE_PASSWORD=infrasage-dev
ANTHROPIC_API_KEY=sk-ant-YOUR_KEY_HERE
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/WEBHOOK
PAGERDUTY_API_TOKEN= # optional
JIRA_API_TOKEN= # optional
JIRA_DOMAIN= # optional (e.g. mycompany.atlassian.net)
EOF

docker-compose up -d

Service Ports

ServiceHTTP PortMetrics Port
Ingestion Gateway80809090
Telemetry Operator80819091
AIops Engine9092
Alertmanager Webhook9093
Prometheus9999
Grafana3000
ClickHouse HTTP8123
ClickHouse Native9000
Redpanda / Kafka9092

Option B — Kubernetes (Production)

Recommended for production workloads. Requires a running Kubernetes cluster (K8S 1.25+).

1. Create the Namespace and Secrets

kubectl create namespace infrasage

kubectl create secret generic llm-secrets \
--from-literal=ANTHROPIC_API_KEY=sk-ant-YOUR_KEY_HERE \
--from-literal=SLACK_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/WEBHOOK \
-n infrasage

kubectl create secret generic infrasage-clickhouse-secret \
--from-literal=password=YOUR_SECURE_PASSWORD \
-n infrasage

2. Deploy InfraSage

kubectl apply -f deployments/kubernetes/

This applies manifests for:

  • ClickHouse StatefulSet with persistent volumes
  • Redpanda StatefulSet
  • Ingestion Gateway Deployment + Service
  • Telemetry Operator Deployment + Service
  • AIops Engine Deployment + Service
  • Prometheus ConfigMap + Deployment
  • Grafana Deployment + Service

3. Verify All Pods Are Running

kubectl get pods -n infrasage
# NAME READY STATUS RESTARTS AGE
# clickhouse-0 1/1 Running 0 2m
# redpanda-0 1/1 Running 0 2m
# ingestion-gateway-xxx 1/1 Running 0 90s
# telemetry-operator-xxx 1/1 Running 0 90s
# aiops-engine-xxx 1/1 Running 0 90s
# prometheus-xxx 1/1 Running 0 90s
# grafana-xxx 1/1 Running 0 90s

4. Scale Components

# Scale ingestion horizontally
kubectl scale deployment ingestion-gateway -n infrasage --replicas=3

# Autoscale based on CPU
kubectl autoscale deployment ingestion-gateway \
-n infrasage --min=2 --max=10 --cpu-percent=70

Option C — K3S on AWS EC2 (Quick Production)

K3S is a lightweight Kubernetes distribution. This is the recommended path for a single-node production deployment on AWS.

1. Launch an EC2 Instance

  • Instance type: t3.xlarge (minimum) or m5.2xlarge (recommended for production)
  • AMI: Amazon Linux 2023
  • Storage: 100 GB gp3 EBS
  • Security groups: open ports 80, 443, 8080, 8081, 9092, 9093, 9999, 3000

2. Install K3S

curl -sfL https://get.k3s.io | sh -
sudo systemctl enable k3s
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml

3. Deploy InfraSage

git clone https://github.com/infrasage/infrasage.git
cd infrasage

kubectl create namespace infrasage
kubectl create secret generic llm-secrets \
--from-literal=ANTHROPIC_API_KEY=sk-ant-YOUR_KEY_HERE \
-n infrasage

kubectl apply -f deployments/kubernetes/

4. Set Up ECR (Optional — for custom images)

aws ecr create-repository --repository-name infrasage/ingestion-gateway
aws ecr get-login-password | docker login --username AWS \
--password-stdin YOUR_ACCOUNT.dkr.ecr.REGION.amazonaws.com

Upgrading

# Docker Compose
docker-compose pull && docker-compose up -d

# Kubernetes
kubectl set image deployment/ingestion-gateway \
ingestion-gateway=infrasage/ingestion-gateway:NEW_VERSION \
-n infrasage

Uninstalling

# Docker Compose
docker-compose down -v # -v removes data volumes

# Kubernetes
kubectl delete namespace infrasage

:::warning Data loss docker-compose down -v and kubectl delete namespace infrasage permanently delete all stored telemetry. Back up ClickHouse data first if needed. :::