161 lines
5.1 KiB
Plaintext
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 |