26Z24e

QK·2026년 8월 24일

Headlamp란

  • Kubernetes SIG UI 하위 프로젝트 (구 Kubernetes Dashboard가 2026년 초 아카이브되면서 공식 후속으로 자리잡음), CNCF Sandbox
  • React 기반, 플러그인으로 확장 가능, RBAC을 그대로 존중 (사용자가 볼 수 있는 것만 보여줌)
  • CRD를 기본으로 자동 인식합니다 — 플러그인 없이 설치만 해도 CNPG Cluster, StarRocks StarRocksCluster가 "Custom Resources" 메뉴에 나타나고, 모든 namespace를 가로지르는 테이블로 보여줍니다. 즉 최소 요건은 설치만으로 이미 충족됩니다.

위 4개 파일은 거기서 한 단계 더 나아가 "DB Fleet"이라는 전용 사이드바 메뉴 + 이상 인스턴스만 걸러 보여주는 요약 대시보드를 추가하는 플러그인입니다.

만든 파일

파일용도
db-fleet-plugin/src/index.tsxCNPG+StarRocks 통합 헬스 대시보드 플러그인 핵심 로직
db-fleet-plugin/README.md스캐폴딩·빌드·검증 방법
headlamp-values.yamlHelm 배포 values (OIDC, plugin 자동 설치 등)
headlamp-db-viewer-rbac.yamlHeadlamp이 CR을 읽을 수 있는 최소권한 RBAC

반드시 확인해야 할 두 가지 (그대로 복붙하면 안 되는 이유)

  1. K8s.crd.makeCustomResourceClass의 정확한 파라미터는 Headlamp 버전마다 조금씩 다를 수 있어요 → API 문서공식 Flux 플러그인 소스를 실제 동작 예시로 대조하세요.
  2. status.readyInstances, status.feStatus.phase 같은 필드명은 제 쪽에서 CNPG/StarRocks operator 문서 기준으로 추정한 값입니다. 배포 전에 kubectl get cluster.postgresql.cnpg.io <name> -o yaml / kubectl get starrockscluster <name> -o yaml로 실제 스키마를 확인해 맞춰주세요.

구성 방법 (요약)

# 1. Helm repo 추가
helm repo add headlamp https://kubernetes-sigs.github.io/headlamp/
helm repo update

# 2. RBAC 먼저 적용
kubectl apply -f headlamp-db-viewer-rbac.yaml

# 3. Headlamp 설치
helm install headlamp headlamp/headlamp \
  -n headlamp --create-namespace \
  -f headlamp-values.yaml

# 4. 플러그인 로컬 개발
npx --yes @kinvolk/headlamp-plugin create db-fleet
cd db-fleet && npm install
# src/index.tsx를 db-fleet-plugin/src/index.tsx 내용으로 교체
npm run start   # 핫리로드 개발
npm run build && npm run package   # 배포용 tarball 생성

6000+ namespace 규모라 특히 신경 쓴 부분: 지난 대화에서 나온 API 서버 부담 우려를 반영해, 대시보드 기본값을 "이상 인스턴스만 표시"로 뒀습니다. useList()는 watch 기반이라 API 서버 부담 자체는 크지 않지만, 브라우저에서 수천 개 row를 한 번에 렌더링하면 클라이언트가 느려지므로 필터링을 기본으로 넣었습니다.

또한 OIDC 로그인을 권장 설정으로 넣었습니다 — 다수 팀이 공유하는 6000+ namespace 환경에서 Headlamp 서비스 계정에 클러스터 전체 읽기 권한을 몰아주기보다, 사용자 각자의 그룹 RBAC이 그대로 적용되게 하는 게 안전합니다.

profile
engineer

0개의 댓글