- Functional control plan
This commit is contained in:
161
documentation/k8s_dev_cluster.mermaid
Normal file
161
documentation/k8s_dev_cluster.mermaid
Normal file
@@ -0,0 +1,161 @@
|
||||
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
|
||||
Reference in New Issue
Block a user