Skip to main content

Installation

InfraSage runs either as a managed cloud service or as a self-hosted deployment inside your own cloud infrastructure.

Cloud (InfraSage hosted)

There is nothing to install. InfraSage runs every component of the hosted service at console.infrasage.dev: ingestion gateways, Kafka brokers, ClickHouse clusters, the AIops Engine, and the console UI.

To get started:

  1. Sign up at console.infrasage.dev/register
  2. Create an API key under Settings → API Keys
  3. Start sending telemetry to your assigned ingestion endpoint

The Quick Start guide walks through it step by step.

Self-hosted

Running it yourself gives your team control over data residency, network placement, and infrastructure sizing. Your license includes signed container images and deployment manifests.

License and access

Self-hosted InfraSage requires a commercial license. Contact [email protected] to:

  • Request a license
  • Get access to the InfraSage private artifact registry
  • Discuss architecture requirements and support tiers

Once licensed, you receive:

  • Access credentials for the private container registry
  • Kubernetes manifests and Helm chart (optional)
  • A license key for activation

Requirements

ComponentMinimumRecommended (Production)
Kubernetes1.25+1.28+
ClickHouse26+Managed or dedicated cluster
Kafka / RedpandaRedpanda 23.3+3-node cluster
Node RAM (gateway)8 GB16-32 GB
Persistent storage100 GBSized to retention policy

Step 1: pull the image

Images are published to GitHub Container Registry and are public, so no registry login is required:

docker pull ghcr.io/infrasagedev/infrasage:latest

One image carries every backend component. The ingestion gateway, AIOps engine, telemetry operator and integration poller are separate binaries inside it, selected by the container's command. The console ships separately as ghcr.io/infrasagedev/infrasage-ui.

Step 2: create the namespace and secrets

kubectl create namespace infrasage

# Your Anthropic API key (powers LLM-based RCA)
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

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

# InfraSage license key
kubectl create secret generic infrasage-license \
--from-literal=key=YOUR_LICENSE_KEY \
-n infrasage

Step 3: deploy InfraSage

kubectl apply -f deployments/kubernetes/

This deploys:

  • ClickHouse StatefulSet with persistent volumes
  • Redpanda StatefulSet (Kafka-compatible broker)
  • Ingestion Gateway Deployment + Service
  • Telemetry Operator Deployment + Service
  • AIops Engine Deployment + Service
  • Prometheus ConfigMap + Deployment
  • Grafana Deployment + Service

Step 4: 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

Step 5: scale for your environment

# 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

See Scale Profiles for sizing guidance across small, medium, and large deployments.

Service ports

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

Upgrading

All backend components share one image, so every deployment moves to the same tag. The deployment names below assume the default Helm release name infrasage; adjust the prefix if you installed under another name.

kubectl set image deployment/infrasage-ingestion-gateway \
ingestion-gateway=ghcr.io/infrasagedev/infrasage:NEW_VERSION \
-n infrasage

kubectl set image deployment/infrasage-telemetry-operator \
telemetry-operator=ghcr.io/infrasagedev/infrasage:NEW_VERSION \
-n infrasage

kubectl set image deployment/infrasage-aiops-engine \
aiops-engine=ghcr.io/infrasagedev/infrasage:NEW_VERSION \
-n infrasage

Apply any SQL migrations shipped with the release before rolling the image: the engine expects its schema to already be current, and a migration applied afterwards leaves a window where queries reference columns that do not yet exist.

Security hardening

Before going to production:

  • Change CLICKHOUSE_PASSWORD from any default values
  • Change Grafana admin password
  • Rotate ANTHROPIC_API_KEY quarterly
  • Enable TLS on ClickHouse connections
  • Set up Kubernetes NetworkPolicies to restrict inter-service communication
  • Use a secrets manager (AWS Secrets Manager, HashiCorp Vault) instead of raw Kubernetes secrets
  • Enable ClickHouse access logging
  • Set up regular ClickHouse backups

See the Security section for full guidance.