스토리지 개요
스토리지 슬라이스는 lumie-infra 안에서 세 개의 소유권 계층에 걸쳐 있습니다.
storage/**는 CloudNativePG operator, 공유 Redis 릴리스,infra-db, PgWeb 같은 공유 스토리지 operator와 유틸리티를 소유합니다.bootstrap/minio/**는 이후 GitOps 애플리케이션이 오브젝트 스토리지를 사용할 수 있으려면 MinIO가 먼저 있어야 하므로 MinIO를 소유합니다.applications/lumie/**는 공유 스토리지 operator에 의존하더라도 제품 데이터베이스 클러스터와 CNPG 네이티브 pooler를 소유합니다.
경계
| 표면 | 주요 소스 경로 | 네임스페이스 또는 범위 | 비고 |
|---|---|---|---|
| CNPG operator | lumie-infra/storage/cnpg/**, lumie-infra/charts/cnpg/** | cnpg, 클러스터 범위 CRD | Cluster, Pooler, ScheduledBackup 리소스를 reconcile합니다. |
| 제품 PostgreSQL | lumie-infra/applications/lumie/cnpg-values.yaml, lumie-infra/applications/lumie/**/pooler.yaml | lumie-db, lumie-dev | 제품 데이터베이스는 storage/** 아래에 정의되지 않습니다. |
| 공유 인프라 데이터베이스 | lumie-infra/storage/infra-db/** | infra-db | Grafana, Keycloak, Umami, Coder, Gitea, OpenClaw, Teleport 관련 상태를 호스팅합니다. |
| Redis | lumie-infra/storage/redis/** | lumie-cache, lumie-dev | prod는 replication + Sentinel, dev는 standalone입니다. |
| MinIO | lumie-infra/bootstrap/minio/**, lumie-infra/provision/ansible/roles/storage-setup/** | minio | Vault, Zot, 백업이 의존하므로 bootstrap 소유입니다. |
| PgWeb | lumie-infra/storage/pgweb/** | lumie-db | 제품 데이터베이스용 read/write admin UI입니다. |
| Velero | lumie-infra 아래 활성 저장소 경로 없음 | 레거시 네임스페이스만 | 현재 저장소는 라이브 Velero 배포를 관리하지 않습니다. |
운영 흐름
- ArgoCD가
lumie-infra/storage/application.yaml을 적용하고, 이는storage/kustomization.yaml의 app-of-apps 집합으로 퍼집니다. lumie-infra/storage/cnpg/argocd.yaml의 CNPG operator가 저장소 다른 영역에 소유된 데이터베이스Cluster와PoolerCR을 reconcile합니다.- MinIO는
lumie-infra/bootstrap/minio/argocd.yaml에서 오며, 제품 업로드, Vault 스토리지, CNPG dump job, Thanos 관련 시크릿에 오브젝트 스토리지를 제공합니다. - Redis는 백엔드와 워커 서비스를 위한 캐시 및 coordination endpoint를 제공합니다.
- 백업 경로는 저장소별로 나뉩니다.
- CNPG 클러스터는
lumie-db와infra-db에 대해 Cloudflare R2로 WAL과 base backup을 아카이브합니다. - MinIO는 CronJob 스케줄에 따라
lumie,lumie-dev,vault버킷을 R2로 snapshot합니다.
- CNPG 클러스터는
현재 기억해야 할 드리프트
lumie-infra/storage/kustomization.yaml은 레거시 Helm 기반 PgBouncer 차트가 retired되었고, 라이브 pooler는applications/lumie/**아래 CNPGPooler리소스라고 말합니다.- 저장소에는 여전히 레거시 아티팩트로
lumie-infra/storage/pgbouncer/argocd-prod.yaml이 남아 있지만, storage app-of-apps 집합의 일부는 아닙니다. - 2026년 6월 14일에 읽기 전용
kubectl get ns는Terminating상태의velero네임스페이스를 보여주었지만, 저장소에는velero/매니페스트나 ArgoCD 애플리케이션이 없습니다.
공통 장애 패턴
- local-path 또는 local-PV 스토리지는 데이터베이스와 MinIO 데이터를 특정 노드에 묶습니다. 노드 손실은 단순한 pod 재스케줄이 아니라 가용성 이벤트입니다.
- Vault 기반 시크릿 새로고침 실패는 워크로드 매니페스트가
Synced상태여도 bootstrap 자격 증명, 데이터베이스 DSN, 오브젝트 스토리지 접근을 깨뜨립니다. - pooler endpoint 드리프트는 놓치기 쉽습니다. 제품 런타임 트래픽은 primary 서비스로의 direct superuser 스타일 연결이 아니라
lumie-pooler또는lumie-dev-pooler를 사용해야 합니다. - 백업 범위는 표면마다 다릅니다. CNPG는 PostgreSQL, MinIO snapshot은 버킷을 커버하며, Velero는 현재 이 저장소가 설명하는 활성 백업 메커니즘이 아닙니다.
검증
kubectl get applications.argoproj.io -n argocd | rg 'storage|cnpg|minio|infra-db|redis|pgweb'
kubectl get clusters.postgresql.cnpg.io -A
kubectl get poolers.postgresql.cnpg.io -A
kubectl get pods -n minio
kubectl get pods -n lumie-cache