betelgeusebytes/INFRASTRUCTURE.md

103 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# BetelgeuseBytes Infrastructure & Cluster Configuration
## Hosting Provider
* **Provider**: Hetzner
* **Server Type**: Dedicated servers
* **Region**: EU
* **Network**: Private LAN + WireGuard
---
## Nodes
### Current Nodes
| Node | Role | Notes |
| --------- | ---------------------- | ------------------- |
| hetzner-1 | control-plane + worker | runs core workloads |
| hetzner-2 | worker + storage | hosts local SSD PVs |
---
## Kubernetes Setup
* Kubernetes installed via kubeadm
* Single cluster
* Control plane is also schedulable
### CNI
* **Cilium**
* eBPF dataplane
* kube-proxy replacement
* Network policy support
---
## Storage
### Persistent Volumes
* Backed by **local NVMe / SSD**
* Manually provisioned PVs
* Bound via PVCs
### Storage Layout
```
/mnt/local-ssd/
├── postgres/
├── neo4j/
├── elasticsearch/
├── prometheus/
├── loki/
├── tempo/
├── grafana/
├── minio/
└── qdrant/
```
---
## Networking
* Ingress Controller: nginx
* External DNS records → ingress IP
* TCP mappings for:
* PostgreSQL
* Neo4j Bolt
---
## TLS & Certificates
* cert-manager
* ClusterIssuer: Lets Encrypt
* Automatic renewal
---
## Namespaces
| Namespace | Purpose |
| ------------- | ---------------------------------- |
| db | Databases (Postgres, Redis) |
| graph | Neo4j |
| broker | Kafka |
| ml | ML tooling (Jupyter, Argo, MLflow) |
| observability | Grafana, Prometheus, Loki, Tempo |
| automation | n8n |
| devops | Gitea, Argo CD |
---
## What This Infra Enables
* Full onprem AI platform
* Predictable performance
* Low-latency data access
* Independence from cloud providers