본문으로 건너뛰기

스토리지 개요

스토리지 슬라이스는 lumie-infra 안에서 세 개의 소유권 계층에 걸쳐 있습니다.

  • storage/**는 CloudNativePG operator, 공유 Redis 릴리스, infra-db, PgWeb 같은 공유 스토리지 operator와 유틸리티를 소유합니다.
  • bootstrap/minio/**는 이후 GitOps 애플리케이션이 오브젝트 스토리지를 사용할 수 있으려면 MinIO가 먼저 있어야 하므로 MinIO를 소유합니다.
  • applications/lumie/**는 공유 스토리지 operator에 의존하더라도 제품 데이터베이스 클러스터와 CNPG 네이티브 pooler를 소유합니다.

경계

표면주요 소스 경로네임스페이스 또는 범위비고
CNPG operatorlumie-infra/storage/cnpg/**, lumie-infra/charts/cnpg/**cnpg, 클러스터 범위 CRDCluster, Pooler, ScheduledBackup 리소스를 reconcile합니다.
제품 PostgreSQLlumie-infra/applications/lumie/cnpg-values.yaml, lumie-infra/applications/lumie/**/pooler.yamllumie-db, lumie-dev제품 데이터베이스는 storage/** 아래에 정의되지 않습니다.
공유 인프라 데이터베이스lumie-infra/storage/infra-db/**infra-dbGrafana, Keycloak, Umami, Coder, Gitea, OpenClaw, Teleport 관련 상태를 호스팅합니다.
Redislumie-infra/storage/redis/**lumie-cache, lumie-devprod는 replication + Sentinel, dev는 standalone입니다.
MinIOlumie-infra/bootstrap/minio/**, lumie-infra/provision/ansible/roles/storage-setup/**minioVault, Zot, 백업이 의존하므로 bootstrap 소유입니다.
PgWeblumie-infra/storage/pgweb/**lumie-db제품 데이터베이스용 read/write admin UI입니다.
Velerolumie-infra 아래 활성 저장소 경로 없음레거시 네임스페이스만현재 저장소는 라이브 Velero 배포를 관리하지 않습니다.

운영 흐름

  1. ArgoCD가 lumie-infra/storage/application.yaml을 적용하고, 이는 storage/kustomization.yaml의 app-of-apps 집합으로 퍼집니다.
  2. lumie-infra/storage/cnpg/argocd.yaml의 CNPG operator가 저장소 다른 영역에 소유된 데이터베이스 ClusterPooler CR을 reconcile합니다.
  3. MinIO는 lumie-infra/bootstrap/minio/argocd.yaml에서 오며, 제품 업로드, Vault 스토리지, CNPG dump job, Thanos 관련 시크릿에 오브젝트 스토리지를 제공합니다.
  4. Redis는 백엔드와 워커 서비스를 위한 캐시 및 coordination endpoint를 제공합니다.
  5. 백업 경로는 저장소별로 나뉩니다.
    • CNPG 클러스터는 lumie-dbinfra-db에 대해 Cloudflare R2로 WAL과 base backup을 아카이브합니다.
    • MinIO는 CronJob 스케줄에 따라 lumie, lumie-dev, vault 버킷을 R2로 snapshot합니다.

현재 기억해야 할 드리프트

  • lumie-infra/storage/kustomization.yaml은 레거시 Helm 기반 PgBouncer 차트가 retired되었고, 라이브 pooler는 applications/lumie/** 아래 CNPG Pooler 리소스라고 말합니다.
  • 저장소에는 여전히 레거시 아티팩트로 lumie-infra/storage/pgbouncer/argocd-prod.yaml이 남아 있지만, storage app-of-apps 집합의 일부는 아닙니다.
  • 2026년 6월 14일에 읽기 전용 kubectl get nsTerminating 상태의 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

관련 페이지