-
Notifications
You must be signed in to change notification settings - Fork 0
architecture hub namespaces
Hub
AEGIS-EKS클러스터의 namespace baseline과 active/retired workload 경계를 정리한다.
scripts/ansible/files/hub-bootstrap.yaml이 생성하는 Hub namespace는 아래 네 개다.
AEGIS-EKS (ap-south-1, Control / Management VPC)
├── argocd
├── observability
├── risk
└── ops-support
각 namespace에는 동일한 default-limits LimitRange를 적용한다.
| 항목 | 값 |
|---|---|
| default request CPU | 100m |
| default request memory | 128Mi |
| default limit CPU | 500m |
| default limit memory | 512Mi |
Hub ArgoCD가 factory별 GitOps 배포를 제어한다.
argocd
- ArgoCD Server
- Application Controller
- ApplicationSet Controller
- Repo Server
- factory-a/b/c cluster Secret
- factory별 Application / ApplicationSet
배포 대상은 Hub 내부 workload가 아니라 각 Spoke K3s의 ai-apps 등 target namespace다.
GitHub Actions
-> ECR
-> manifest / values update
-> Hub ArgoCD
-> Tailscale egress
-> factory-a/b/c K3s API
현재 active 구성은 Hub 내부 Grafana 관리 UI다.
observability
- Grafana
- grafana ServiceAccount
Grafana는 운영자가 Hub 상태와 대시보드 관련 지표를 확인하기 위한 도구다. 비용 최적화 이후 AMP datasource와 Hub Prometheus Agent는 active 구성에서 제외됐다.
| 구성 | 상태 | 비고 |
|---|---|---|
| Grafana OSS | Active |
observability/grafana, ClusterIP, Admin UI 또는 port-forward 접근 |
| AMP datasource | Retired | 과거 검증 이력 |
| Prometheus Agent | Retired | cleanup 대상, 더 이상 재설치하지 않음 |
AWS Load Balancer Controller는 bootstrap namespace 네 개 안에 있지 않고 EKS 기본 kube-system에 배치된다.
kube-system
- aws-load-balancer-controller
ServiceAccount는 Terraform output의 IRSA role과 연결된다.
system:serviceaccount:kube-system:aws-load-balancer-controller
이 controller가 Admin UI Ingress용 ALB 같은 AWS ELB 리소스를 관리한다.
Tailscale Operator는 tailscale namespace에 Helm release로 설치된다. 이 namespace는 hub-bootstrap.yaml의 기본 네 개 목록에는 없지만, Tailscale bootstrap 단계에서 생성된다.
tailscale
- tailscale-operator
- Connector / proxy resources
- factory-a/b/c egress Service 관련 리소스
역할은 Hub ArgoCD가 Spoke K3s API에 접근할 제어 경로를 제공하는 것이다. MQTT 데이터 수집이나 Dashboard 사용자 접근에는 사용하지 않는다.
risk namespace는 과거 M1 검증 또는 임시 risk workload 후보를 위한 자리다.
현재 MVP 기준 Risk 계산은 Hub EKS 파드가 아니라 Lambda data processor, DynamoDB, S3 processed 경로에서 수행한다. 따라서 risk/risk-normalizer 같은 파드가 active data-plane으로 동작한다고 설명하지 않는다.
risk
- namespace / LimitRange
- risk-normalizer ServiceAccount IRSA 검증 이력
- 최신 Risk 계산 파드 없음
ops-support는 운영 지원 기능 후보를 위한 namespace다.
ops-support
- namespace / LimitRange
- legacy pipeline_status 집계 보조 기능 후보
최신 MVP에서는 pipeline_status와 freshness는 Lambda data processor와 DataProcessorRefresh1m 쪽에서 read model로 갱신한다.
CloudInfraSlowCollector가 EKS, ArgoCD, S3 freshness를 읽는 것은 Hub namespace workload가 아니다.
EventBridge schedule
-> Lambda CloudInfraSlowCollector
-> 제한된 AWS/Kubernetes/HTTP read
-> DynamoDB CLOUD#infra read model write
-> Dashboard Backend read
즉, Dashboard가 EKS/ArgoCD/Tailscale API를 직접 조회하는 구조가 아니다. 외부 Lambda collector가 필요한 항목만 read model로 변환하고, Dashboard는 DynamoDB를 읽는다.
| ServiceAccount | Namespace | 상태 | 권한 |
|---|---|---|---|
aws-load-balancer-controller |
kube-system |
Active | ELB/ALB 관리 |
grafana |
observability |
Active | 현재 Grafana 실행 계정. AMP query 권한은 retired 구성 |
risk-normalizer |
risk |
Retired / 검증 이력 | 과거 S3 처리 검증용. 최신 data processor는 Lambda |
Hub EKS destroy/rebuild 후에는 아래 순서로 복구한다.
1. Terraform infra/hub apply
2. Ansible hub bootstrap
- namespace / LimitRange
- ArgoCD
- Grafana
- AWS Load Balancer Controller
- Tailscale Operator
3. register-spoke-factory-a/b/c.sh
- Tailscale egress
- ArgoCD cluster Secret
- ApplicationSet 연결
- 시스템 아키텍처
- 제어 & 데이터 플레인
- 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 채팅 어시스턴트