Skip to content

architecture hub namespaces

minsoo edited this page Jun 9, 2026 · 2 revisions

아키텍처 — Hub EKS 네임스페이스

Hub AEGIS-EKS 클러스터의 namespace baseline과 active/retired workload 경계를 정리한다.


현재 bootstrap 기준

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

argocd

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

observability

현재 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 대상, 더 이상 재설치하지 않음

kube-system

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

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

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

ops-support는 운영 지원 기능 후보를 위한 namespace다.

ops-support
  - namespace / LimitRange
  - legacy pipeline_status 집계 보조 기능 후보

최신 MVP에서는 pipeline_status와 freshness는 Lambda data processor와 DataProcessorRefresh1m 쪽에서 read model로 갱신한다.


CloudInfraSlowCollector 경계

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를 읽는다.


IRSA 경계

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

Rebuild 기준

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 연결

관련 문서

Aegis-Pi Wiki

· 대표 문서 목록은 홈의 문서 탐색 표 참조

시작하기

요구사항

핵심 개념

아키텍처

컴포넌트 (Edge → Cloud → Dashboard)

Dashboard & 운영

시나리오 · 사례 · 참조

Clone this wiki locally