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
| Service | HTTP Port | Metrics Port |
|---|---|---|
| Ingestion Gateway | 8080 | 9090 |
| Telemetry Operator | 8081 | 9091 |
| AIops Engine | — | 9092 |
| Alertmanager Webhook | 9093 | — |
| Prometheus | 9999 | — |
| Grafana | 3000 | — |
| ClickHouse HTTP | 8123 | — |
| ClickHouse Native | 9000 | — |
| Redpanda / Kafka | 9092 | — |
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) orm5.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.
:::