Files
eveAI/documentation/k8s_dev_cluster.mermaid
2025-08-18 11:44:23 +02:00

161 lines
5.1 KiB
Plaintext

graph TB
%% Host Machine
subgraph "Host Machine (macOS)"
HOST[("Host Machine<br/>macOS Sonoma")]
PODMAN[("Podman<br/>Container Runtime")]
HOSTDIRS[("Host Directories<br/>~/k8s-data/dev/<br/>• minio<br/>• redis<br/>• logs<br/>• prometheus<br/>• grafana<br/>• certs")]
end
%% Kind Cluster
subgraph "Kind Cluster (eveai-dev-cluster)"
%% Control Plane
CONTROL[("Control Plane Node<br/>Port Mappings:<br/>• 80:30080<br/>• 443:30443<br/>• 3080:30080")]
%% Ingress Controller
subgraph "ingress-nginx namespace"
INGRESS[("NGINX Ingress Controller<br/>Handles routing to services")]
end
%% EveAI Dev Namespace
subgraph "eveai-dev namespace"
%% Web Services
subgraph "Web Services"
APP[("EveAI App<br/>Port: 5001<br/>NodePort: 30001")]
API[("EveAI API<br/>Port: 5003<br/>NodePort: 30003")]
CHAT[("EveAI Chat Client<br/>Port: 5004<br/>NodePort: 30004")]
STATIC[("Static Files Service<br/>NGINX<br/>Port: 80")]
end
%% Background Services
subgraph "Background Workers"
WORKERS[("EveAI Workers<br/>Replicas: 2<br/>Celery Workers")]
CHATWORKERS[("EveAI Chat Workers<br/>Replicas: 2<br/>Celery Workers")]
BEAT[("EveAI Beat<br/>Celery Scheduler<br/>Replicas: 1")]
ENTITLE[("EveAI Entitlements<br/>Port: 8000")]
end
%% Infrastructure Services
subgraph "Infrastructure Services"
REDIS[("Redis<br/>Port: 6379<br/>NodePort: 30379")]
MINIO[("MinIO<br/>Port: 9000<br/>Console: 9001<br/>NodePort: 30900")]
end
%% Monitoring Services
subgraph "Monitoring Stack"
PROM[("Prometheus<br/>Port: 9090")]
GRAFANA[("Grafana<br/>Port: 3000")]
NGINX_EXPORTER[("NGINX Prometheus Exporter<br/>Port: 9113")]
end
%% Storage
subgraph "Persistent Storage"
PV_REDIS[("Redis PV<br/>5Gi Local")]
PV_MINIO[("MinIO PV<br/>20Gi Local")]
PV_LOGS[("App Logs PV<br/>5Gi Local")]
PV_PROM[("Prometheus PV<br/>10Gi Local")]
PV_GRAFANA[("Grafana PV<br/>5Gi Local")]
end
%% Configuration
subgraph "Configuration"
CONFIGMAP[("eveai-config<br/>ConfigMap")]
SECRETS[("eveai-secrets<br/>Secret")]
end
end
end
%% External Registry
REGISTRY[("Container Registry<br/>registry.ask-eve-ai-local.com<br/>josakola/eveai_*")]
%% Connections
HOST --> PODMAN
PODMAN --> CONTROL
HOSTDIRS --> PV_REDIS
HOSTDIRS --> PV_MINIO
HOSTDIRS --> PV_LOGS
HOSTDIRS --> PV_PROM
HOSTDIRS --> PV_GRAFANA
%% Service connections
CONTROL --> INGRESS
INGRESS --> APP
INGRESS --> API
INGRESS --> CHAT
INGRESS --> STATIC
%% Worker connections to Redis
WORKERS --> REDIS
CHATWORKERS --> REDIS
BEAT --> REDIS
%% All services connect to storage
APP --> PV_LOGS
API --> PV_LOGS
CHAT --> PV_LOGS
WORKERS --> PV_LOGS
CHATWORKERS --> PV_LOGS
BEAT --> PV_LOGS
ENTITLE --> PV_LOGS
%% Infrastructure storage
REDIS --> PV_REDIS
MINIO --> PV_MINIO
PROM --> PV_PROM
GRAFANA --> PV_GRAFANA
%% Configuration connections
CONFIGMAP --> APP
CONFIGMAP --> API
CONFIGMAP --> CHAT
CONFIGMAP --> WORKERS
CONFIGMAP --> CHATWORKERS
CONFIGMAP --> BEAT
CONFIGMAP --> ENTITLE
SECRETS --> APP
SECRETS --> API
SECRETS --> CHAT
SECRETS --> WORKERS
SECRETS --> CHATWORKERS
SECRETS --> BEAT
SECRETS --> ENTITLE
%% Registry connections
REGISTRY --> APP
REGISTRY --> API
REGISTRY --> CHAT
REGISTRY --> WORKERS
REGISTRY --> CHATWORKERS
REGISTRY --> BEAT
REGISTRY --> ENTITLE
%% Monitoring connections
PROM --> APP
PROM --> API
PROM --> CHAT
PROM --> REDIS
PROM --> MINIO
PROM --> NGINX_EXPORTER
GRAFANA --> PROM
%% External Access
subgraph "External Access"
ACCESS[("http://minty.ask-eve-ai-local.com:3080<br/>• /admin/ → App<br/>• /api/ → API<br/>• /chat-client/ → Chat<br/>• /static/ → Static Files")]
end
ACCESS --> INGRESS
%% Styling
classDef webService fill:#e1f5fe,stroke:#01579b,stroke-width:2px
classDef infrastructure fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
classDef storage fill:#e8f5e8,stroke:#1b5e20,stroke-width:2px
classDef monitoring fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef config fill:#fce4ec,stroke:#880e4f,stroke-width:2px
classDef external fill:#f1f8e9,stroke:#33691e,stroke-width:2px
class APP,API,CHAT,STATIC webService
class REDIS,MINIO,WORKERS,CHATWORKERS,BEAT,ENTITLE infrastructure
class PV_REDIS,PV_MINIO,PV_LOGS,PV_PROM,PV_GRAFANA,HOSTDIRS storage
class PROM,GRAFANA,NGINX_EXPORTER monitoring
class CONFIGMAP,SECRETS config
class REGISTRY,ACCESS external