본문으로 건너뛰기

인프라 DB

infra-db는 플랫폼 애플리케이션을 위한 공유 PostgreSQL 클러스터입니다. 메인 제품 데이터베이스와 분리되어 있으며 lumie-infra/storage/infra-db/** 아래에 있습니다.

소스 경로

  • lumie-infra/storage/infra-db/argocd.yaml
  • lumie-infra/storage/infra-db/manifests/cluster.yaml
  • lumie-infra/storage/infra-db/manifests/scheduled-backup.yaml
  • lumie-infra/storage/infra-db/manifests/r2-barman-vss.yaml
  • lumie-infra/storage/infra-db/manifests/vault-static-secret.yaml
  • 활성 소비자:
    • lumie-infra/observability/grafana/common-values.yaml
    • lumie-infra/bootstrap/gitea/**
    • lumie-infra/security/teleport/manifests/vault-static-secret.yaml
  • Bootstrap SQL은 Umami, Keycloak, Coder 같은 비활성 도구용 레거시 데이터베이스도 여전히 생성합니다.

런타임 역할

클러스터 계약

  • instances: 1
  • imageName: zot.lumie-infra.com/storage/postgresql-wal2json:18.1
  • enableSuperuserAccess: true
  • wal_level: logical
  • max_replication_slots: "8"
  • storageClass: local-path-retain
  • R2 기반 Barman 백업 활성화, 04:00 KST에 scheduled backup 1회

소스 경로: lumie-infra/storage/infra-db/manifests/cluster.yaml

부트스트랩 SQL과 현재 드리프트

저장소 매니페스트는 inline postInitSQL로 서비스 데이터베이스를 부트스트랩합니다. 예를 들면 다음과 같습니다. 소스 앵커: lumie-infra/storage/infra-db/manifests/cluster.yamlspec.bootstrap.initdb.postInitSQL.

- "CREATE USER grafana WITH PASSWORD 'VAULT_PASSWORD'"
- "CREATE DATABASE grafana OWNER grafana"

이는 현재 소비자가 POSTGRES_PASSWORD 같은 Vault 시크릿에서 DSN을 렌더링하는 방식과 일치하지 않습니다. 이를 저장소의 계약 드리프트로 취급하세요.

  • 소비자 측은 분명히 Vault 관리 자격 증명을 기대합니다.
  • 클러스터 부트스트랩 측은 여전히 리터럴 VAULT_PASSWORD placeholder를 보여줍니다.

운영 작업에서 이를 덮어쓰듯 설명하지 마세요. 플랫폼 앱 자격 증명을 바꾸거나 부트스트랩 재생성 동작에 의존하기 전에 라이브 클러스터 상태를 검증해야 합니다.

소유권 경계

  • infra-db는 제품 애플리케이션 데이터베이스가 아니라 플랫폼 데이터베이스입니다.
  • lumie-db가 사용하는 공유 CNPG Helm 템플릿이 아니라 원시 매니페스트에서 직접 조정됩니다.
  • 여전히 CloudNativePG에서 설치한 공유 CNPG operator에 의존합니다.

장애 지점

  • R2 자격 증명 시크릿 r2-barman-creds가 갱신되지 않으면 데이터베이스는 다른 면에서 healthy해도 백업이 멈춥니다.
  • 부트스트랩 SQL 드리프트는 fresh-cluster 복구와 정상 상태 소비자 자격 증명이 같은 소스 파일에서 설명되지 않을 수 있음을 뜻합니다.
  • enableSuperuserAccess: true는 플랫폼 관리를 위해 필요하지만, 이 클러스터는 테넌트-safe runtime data plane처럼 취급되어서는 안 됩니다.

검증

kubectl get applications.argoproj.io -n argocd infra-db
kubectl get clusters.postgresql.cnpg.io -n infra-db
kubectl get scheduledbackups.postgresql.cnpg.io -n infra-db
kubectl get backups.postgresql.cnpg.io -n infra-db
kubectl get pods -n infra-db

관측성

  • CNPG 클러스터 모니터링은 PodMonitor로 활성화됩니다.
  • Grafana에는 infra-db에도 유용한 CloudNativePG 대시보드 JSON이 포함되어 있습니다.
  • infra-db에 의존하는 플랫폼 애플리케이션이 상위 계층에서 먼저 실패하는 경우가 많으므로, 클러스터 점검과 소비자 로그를 함께 보세요.

관련 페이지