본문으로 건너뛰기

PgWeb

PgWeb은 클러스터 운영자를 위해 배포된 경량 PostgreSQL 웹 UI입니다. 일반 제품 런타임 경로의 일부는 아닙니다.

소스 경로

  • lumie-infra/storage/pgweb/argocd.yaml
  • lumie-infra/storage/pgweb/helm-values.yaml
  • lumie-infra/storage/pgweb/common-values.yaml
  • lumie-infra/security/teleport/agent/helm-values.yaml

런타임 계약

  • deployment는 lumie-db 네임스페이스에서 실행됩니다.
  • bjw-s/app-template 차트와 공유 charts/common overlay를 사용합니다.
  • PGWEB_DATABASE_URLpgweb-db-secrets 시크릿에서 옵니다.
  • 이 시크릿은 Vault 경로 infrastructure/postgresql에서 렌더링되며 다음을 가리킵니다.
    • 호스트 lumie-db-rw.lumie-db.svc
    • 데이터베이스 lumie

소스 경로: lumie-infra/storage/pgweb/common-values.yaml

접근 경계

  • 차트에서 ingress는 비활성화됩니다.
  • 의도된 UI 경로는 http://pgweb.lumie-db.svc.cluster.local:80을 프록시하는 pgweb이라는 Teleport 앱입니다.

이는 PgWeb을 퍼블릭 서비스가 아니라 운영자 대상 admin 표면으로 만듭니다.

왜 중요한가

  • PgWeb은 infra-db가 아니라 메인 제품 데이터베이스를 대상으로 합니다.
  • 공유 PostgreSQL Vault 경로에서 렌더링된 높은 권한의 데이터베이스 자격 증명을 사용합니다.
  • 애플리케이션 수준 테넌시와 비즈니스 규칙을 우회하므로 direct database access처럼 취급해야 합니다.

장애 지점

  • VaultStaticSecret이 새로고침을 멈추면 pod는 계속 실행되지만 비밀번호 드리프트 후 재연결하지 못합니다.
  • 도구가 lumie-db-rw를 직접 가리키므로 primary 서비스 가용성이 UI에 직접 영향을 주며, CNPG pooler를 거치지 않습니다.
  • 범용 SQL UI이기 때문에 여기서의 운영자 실수는 애플리케이션 코드가 강제하는 backend validation, RLS 컨텍스트 전파, audit 관행을 우회합니다.

검증

kubectl get applications.argoproj.io -n argocd pgweb
kubectl get pods -n lumie-db | rg pgweb
kubectl get secret -n lumie-db pgweb-db-secrets
kubectl describe deploy -n lumie-db pgweb

관측성

  • PgWeb은 저장소 로컬 values 안에 별도 observability 스택을 정의하지 않습니다.
  • 헬스는 주로 deployment, pod readiness, Teleport 앱 도달성으로 운영 측면에서 보입니다.

관련 페이지