-
Notifications
You must be signed in to change notification settings - Fork 0
architecture hardware
물리 노드, VM Spoke, AWS managed runtime을 혼동하지 않도록 현재 배치와 역할을 분리해 정리한다.
factory-a는 실제 Safe-Edge 운영 기준선이다.
| 노드 | IP | 역할 | 배치 기준 |
|---|---|---|---|
master |
10.10.10.10 |
K3s control-plane, CoreDNS/metrics-server/Traefik/MetalLB, Grafana | control-plane 안정성 우선 |
worker1 |
10.10.10.11 |
ArgoCD, Prometheus, InfluxDB, Longhorn 운영 파드, failover 대상 | worker2 장애 시 AI/audio/BME 승계 |
worker2 |
10.10.10.12 |
AI, audio, BME280, edge data-plane 우선 배치 | 현장 장치/센서 workload preferred |
서비스 VIP는 MetalLB로 제공한다.
| 서비스 | 주소 |
|---|---|
| ArgoCD | http://10.10.10.200 |
| Longhorn | http://10.10.10.201 |
| Grafana | http://10.10.10.202 |
master:
- K3s server / Kubernetes control-plane
- MetalLB / Traefik
- Grafana
worker1:
- ArgoCD
- Prometheus
- InfluxDB
- Longhorn 운영 파드
- worker2 장애 시 AI/audio/BME failover 대상
worker2:
- safe-edge-integrated-ai
- safe-edge-audio
- bme280-sensor
- edge-iot-publisher
- factory-a-log-adapter
AI/audio/BME와 edge data-plane은 worker2 preferred, worker1 failover, master avoid 정책을 따른다. worker2가 NotReady가 되면 workload는 worker1에서 재기동되고, worker2가 Ready로 돌아오면 master의 OS cron 기반 failback이 순차 재배치를 수행한다.
AI snapshot은 Longhorn RWO PVC가 아니라 node-local hostPath를 사용한다.
/app/snapshots
-> /var/lib/safe-edge/snapshots
이 방식은 worker2 장애 시 RWO Multi-Attach 때문에 AI Pod가 worker1에서 ContainerCreating에 머무는 문제를 피하기 위한 운영 기준이다. Snapshot uploader는 worker2의 node-local snapshot 위치에 의존하므로 worker2 우선 배치와 함께 다룬다. worker2 장애 중에는 기존 runtime failover를 우선하고, snapshot 업로드 공백은 재기동 후 보정 대상이다.
factory-b는 Mac mini 위 UTM VM으로 구성한 K3s 테스트베드다.
| 항목 | 값 |
|---|---|
| Host | Mac mini |
| VM Tool | UTM |
| Guest OS | Ubuntu Server LTS |
| K3s | VM 기반 Spoke |
| 입력 | Dummy Sensor (stable-lab 성격) |
| 목적 | 멀티 Spoke 배포, topic/prefix 분리, 수신 성공률, 지연시간, Dashboard 공장별 카드 분리 검증 |
factory-c는 Windows PC 위 VirtualBox VM으로 구성한 K3s 테스트베드다.
| 항목 | 값 |
|---|---|
| Host | Windows PC |
| VM Tool | VirtualBox |
| Guest OS | Ubuntu Server LTS |
| K3s | VM 기반 Spoke |
| 입력 | Dummy Sensor (noisy-vm 성격) |
| 목적 | 다른 호스트/네트워크 조건에서도 Spoke 등록, GitOps 배포, MQTT topic 분리, Dashboard read model 분리가 유지되는지 검증 |
VM Spoke는 실제 센서 정확도 검증 환경이 아니다. 멀티 공장 제어/데이터 경로가 공장별로 분리되는지 검증하기 위한 환경이다.
Hub EKS는 물리 장비가 아니라 AWS managed Kubernetes runtime이다.
| 항목 | 값 |
|---|---|
| Region | ap-south-1 |
| VPC | Control / Management VPC 10.0.0.0/16
|
| Cluster | AEGIS-EKS |
| Kubernetes | 1.34 |
| Node group | AEGIS-EKS-node |
| Instance |
t3.medium x 2, ON_DEMAND |
| AZ |
ap-south-1a, ap-south-1c
|
| NAT | 단일 NAT Gateway, 첫 번째 public subnet에 배치 |
Hub EKS의 private subnet에는 ArgoCD, Tailscale Operator/Connector, Grafana, AWS Load Balancer Controller가 배치된다. Admin UI는 public ALB/Ingress를 선택적으로 사용한다.
Dashboard는 K3s/EKS가 아니라 Data / Dashboard VPC의 ECS Fargate Backend가 담당한다.
| 항목 | 값 |
|---|---|
| VPC | Data / Dashboard VPC 10.20.0.0/16 기준 |
| Public subnet | ALB, NAT Gateway |
| Private app subnet | ECS Fargate Backend, Lambda notifier, ElastiCache Redis |
| Private data subnet | RDS PostgreSQL |
| NAT | 단일 NAT Gateway, 첫 번째 public subnet에 배치 |
| Backend | ECS Fargate, 1 vCPU / 2 GiB 기준, desired/min 2 |
| Web | S3 SPA + CloudFront (+ WAF/IP 제한은 선택·계획 구성) |
| Auth | Cognito Hosted UI |
대표 이미지의 Data / Dashboard VPC CIDR은 논리 예시이며, 현재 Terraform 기본값은 10.20.0.0/16이다. 운영 기준은 Hub의 Control / Management VPC 10.0.0.0/16과 겹치지 않는 별도 CIDR을 사용한다는 점이다.
Data / Dashboard VPC는 DynamoDB Gateway endpoint와 S3 Gateway endpoint를 사용해 주요 managed service read/write가 NAT를 불필요하게 통과하지 않도록 한다. Secrets Manager 등 일부 외부 호출은 NAT 경로를 사용할 수 있다.
아래 구성은 특정 하드웨어나 K3s/EKS 노드가 아니다.
| 서비스 | 역할 |
|---|---|
| AWS IoT Core | MQTT mTLS 수신, IoT Rule 실행 |
| Lambda data processor | telemetry 정규화, DynamoDB/S3 갱신 |
| DynamoDB | LATEST, HISTORY#STATE, GRAPH#5M, CLOUD#infra read model |
| S3 data bucket | raw, processed, processed_agg, reports |
| Cognito | Hosted UI, JWT 발급, Admin API |
| CloudFront (+ WAF/IP 제한) | Dashboard SPA 전역 배포와 선택적 보호 |
| Bedrock | 일간 report generator의 선택적 요약 모델 |
| 상태 | 구성 |
|---|---|
| Active | factory-a 3-node K3s, factory-b/c VM Spoke, Hub EKS, Data / Dashboard ECS Fargate, RDS PostgreSQL Single-AZ, Redis single node, VPC별 단일 NAT |
| Optional / On-demand | Admin UI ALB, Bedrock report generator on-demand stack, WAF/IP 제한, RDS Multi-AZ, Redis HA |
| Retired / 과거 이력 | AMP, Hub Prometheus Agent, Hub risk-normalizer 파드 |
- 시스템 아키텍처
- 제어 & 데이터 플레인
- Dashboard VPC 설계
- 하드웨어 배치
- Hub EKS 네임스페이스
- Tailscale Mesh VPN
- 데이터 생명주기
- 데이터 조회 모델
- 실시간 갱신 구조
- IoT 데이터 계약
- Reporting Pipeline
- 로컬 스토리지
- 클라우드 스토리지
- Edge Agent
- Edge AI 탐지
- Factory-A Log Adapter
- Dummy Sensor
- Edge IoT Publisher
- Lambda Data Processor
- Risk Normalizer
- Risk Score Engine
- Pipeline Status Aggregator
- Graph Aggregator 5m
- Cloud Infra Collector
- Daily Report Generator
- Risk Alert Dispatcher
- Image Snapshot Pipeline
- Dashboard Backend
- Dashboard Web
- AI 채팅 어시스턴트