graph TB %% Host Machine subgraph "Host Machine (macOS)" HOST[("Host Machine
macOS Sonoma")] PODMAN[("Podman
Container Runtime")] HOSTDIRS[("Host Directories
~/k8s-data/dev/
• minio
• redis
• logs
• prometheus
• grafana
• certs")] end %% Kind Cluster subgraph "Kind Cluster (eveai-dev-cluster)" %% Control Plane CONTROL[("Control Plane Node
Port Mappings:
• 80:30080
• 443:30443
• 3080:30080")] %% Ingress Controller subgraph "ingress-nginx namespace" INGRESS[("NGINX Ingress Controller
Handles routing to services")] end %% EveAI Dev Namespace subgraph "eveai-dev namespace" %% Web Services subgraph "Web Services" APP[("EveAI App
Port: 5001
NodePort: 30001")] API[("EveAI API
Port: 5003
NodePort: 30003")] CHAT[("EveAI Chat Client
Port: 5004
NodePort: 30004")] STATIC[("Static Files Service
NGINX
Port: 80")] end %% Background Services subgraph "Background Workers" WORKERS[("EveAI Workers
Replicas: 2
Celery Workers")] CHATWORKERS[("EveAI Chat Workers
Replicas: 2
Celery Workers")] BEAT[("EveAI Beat
Celery Scheduler
Replicas: 1")] ENTITLE[("EveAI Entitlements
Port: 8000")] end %% Infrastructure Services subgraph "Infrastructure Services" REDIS[("Redis
Port: 6379
NodePort: 30379")] MINIO[("MinIO
Port: 9000
Console: 9001
NodePort: 30900")] end %% Monitoring Services subgraph "Monitoring Stack" PROM[("Prometheus
Port: 9090")] GRAFANA[("Grafana
Port: 3000")] NGINX_EXPORTER[("NGINX Prometheus Exporter
Port: 9113")] end %% Storage subgraph "Persistent Storage" PV_REDIS[("Redis PV
5Gi Local")] PV_MINIO[("MinIO PV
20Gi Local")] PV_LOGS[("App Logs PV
5Gi Local")] PV_PROM[("Prometheus PV
10Gi Local")] PV_GRAFANA[("Grafana PV
5Gi Local")] end %% Configuration subgraph "Configuration" CONFIGMAP[("eveai-config
ConfigMap")] SECRETS[("eveai-secrets
Secret")] end end end %% External Registry REGISTRY[("Container Registry
registry.ask-eve-ai-local.com
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
• /admin/ → App
• /api/ → API
• /chat-client/ → Chat
• /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