OpenForge 문서 목차 보기
Narwhal Portal · OSS Project

Narwhal Portal

Narwhal Kubernetes Internal Developer Platform을 위한 운영·개발자 워크벤치

KubernetesIDPNext.jsReactTypeScriptKeycloakGitOpsPlatform Engineering
RepositoryGitHub ↗
Documentation5 sections
Updated2026-08-27T00:00:00.000Z
ECOSYSTEM ROLE
Platform Experience Layer

Narwhal의 GitOps, SSO, observability, security, cost, governance 신호를 하나의 developer/operator workbench로 묶는 day-0~day-2 경험 계층입니다.

Operational surfaceAuthoritative-source integrationDeveloper & operator UX
PROJECT CONFORMANCE

저장소 evidence 체크리스트

3 present · 6 missing

Present는 저장소 또는 사이트에서 명시적 artifact가 관찰됐다는 뜻입니다. Missing은 audit에서 해당 artifact를 찾지 못했다는 뜻이며 실제 practice가 없다는 증거는 아닙니다. Tracked는 가장 가까운 기존 backlog owner를 가리키며 이슈를 자동 생성하지 않습니다.

CONTRIBUTING
Missing
CODE_OF_CONDUCT
Missing
SECURITY.md
Missing
SBOM evidence
Missing
Provenance / attestation
Missing
GitHub Release
Present
Evidence 확인됨
프로젝트 상세 Docs
Present
5 sections
Evidence 확인됨
Community contributor 신호
Present
2 contributors
Evidence 확인됨
repository audit 미인덱싱
Problem

Kubernetes IDP를 구성하는 GitOps, SSO, 모니터링, 스토리지, 보안 컴포넌트는 각각의 UI를 제공하지만 플랫폼 전체 상태와 사용자 작업 흐름을 하나의 운영 화면에서 이해하기 어려움

Approach

Narwhal 클러스터의 상태·애플리케이션·노드·카탈로그·보안·비용·거버넌스 정보를 하나의 Next.js 기반 포털로 통합하고, 백엔드 API와 Kubernetes 환경을 통해 day-2 운영 경험을 단순화

ENGINEERING EVIDENCE

숫자보다 검증 가능한 근거를 보여줍니다.

Experience
Day-0 → Day-2

Combines onboarding, catalog, platform operations, security, governance, and tools in one workbench.

Platform views
10+ areas

Dashboard, onboarding, catalog/apps, nodes, cost, security/compliance, governance, architecture, tools, and settings.

Delivery
Kaniko + Skaffold

Supports in-cluster image builds and live development without requiring a local Docker daemon for the normal cluster workflow.

State boundary
Authoritative sources

Reads platform state from Kubernetes, Argo CD, Keycloak, and other source systems instead of replacing them.

START HERE

README를 처음부터 읽지 않아도 됩니다.

ENGINEERING PRINCIPLES
Source-driven

설명은 repository의 source, architecture, tests, release와 운영 기록을 근거로 유지합니다.

Independently useful

생태계에 속하더라도 가능한 한 독립 설치·검증·릴리스 가능한 경계를 유지합니다.

Evidence over claims

기능 개수보다 재현 가능한 검증, 장애 지식, upgrade gate와 운영 증거를 우선합니다.

프로젝트 소개

Narwhal Portal은 Narwhal Kubernetes Internal Developer Platform을 위한 중앙 관리 포털입니다. Narwhal이 Kubernetes, GitOps, SSO, Observability, Storage, Security와 같은 플랫폼 구성요소를 제공한다면, Portal은 사용자가 그 플랫폼을 실제로 이해하고 운영하기 위한 **통합 운영면(Operational Surface)**을 제공합니다.

포털은 특정 OSS 화면을 복제하는 대신, 플랫폼의 여러 신호를 하나의 사용자 경험으로 묶는 데 초점을 둡니다. 클러스터 상태, Argo CD 애플리케이션, 노드, 보안, 비용, 거버넌스, 서비스 카탈로그와 같은 정보는 각각의 원천 시스템을 기준으로 하되, 사용자가 문제의 위치와 다음 행동을 빠르게 파악할 수 있도록 중앙화합니다.

핵심 기능

영역역할
Dashboard클러스터 건강 상태, Argo CD 앱 상태, Alert 등 플랫폼 전반 요약
Onboarding사용자용 시작 가이드와 kubeconfig 발급 흐름
Catalog / My Apps배포된 서비스 카탈로그와 사용자별 애플리케이션 관점 제공
Nodes노드 목록과 상태, 리소스 현황 확인
Cost네임스페이스 및 워크로드 비용 가시화
Security / Compliance취약점, 보안 정책, RBAC 및 감사 관련 정보 확인
GovernanceScorecard, DORA 및 운영 성숙도 관련 정보
Architecture서비스/클러스터 관계와 구조를 시각적으로 탐색
Templates / Tools반복적인 플랫폼 작업을 위한 개발자 도구 진입점
Settings사용자, 라우트, 인증서, 정책 등 플랫폼 설정 관리

플랫폼 내 위치

Portal은 Narwhal 클러스터와 분리된 별도 제품이 아니라 Narwhal 플랫폼의 day-2 운영 및 개발자 경험 계층입니다. 따라서 Narwhal과 함께 사용할 때 가장 큰 가치가 발생합니다.

기술 스택

  • Next.js ^16.3.1 / React 19.2.8 — App Router 기반 포털 애플리케이션
  • TypeScript ^6.0.3 — UI와 API 경계의 타입 안전성
  • Tailwind CSS 4.3.3 / shadcn/ui — 재사용 가능한 관리 화면 구성
  • TanStack Query / Zustand — 서버 상태와 클라이언트 상태 관리
  • NextAuth 5.0.0-beta.30 + Keycloak OIDC — 인증 및 플랫폼 사용자 세션 통합
  • Valkey — 애플리케이션 캐시 계층 (전용 pub/sub 클라이언트로 fail-fast 캐시 클라이언트의 timeout/retry 제약을 분리)
  • OpenBao Agent Injector — 런타임 Secret 주입
  • Skaffold / Kaniko — Kubernetes 기반 inner-loop 개발과 클러스터 내부 이미지 빌드
  • Vitest — CI에 연결된 unit/regression suite. Playwright 기반 browser-level e2e는 아직 계획 단계로, main 구현으로 주장하지 않음(docs/IMPLEMENTATION-STATUS-ko.md, 2026-09-14 기준)
  • pnpm 10.27.0 (packageManager로 고정)

현재 상태

최신 릴리스는 v1.0.17(2026-08-09)이며, CLUSTER_BASE_DOMAIN 환경변수로 platform tool 타일의 base domain을 설정 가능하게 하고, node role을 Prometheus kube_node_role 메트릭과 K8s label(control-plane/legacy master)로 정확히 판별하며, compliance framework pass rate를 0-1 비율에서 퍼센트로 올바르게 스케일링하고, cluster-scoped clusterinfraassessmentreports까지 함께 조회해 trivy-operator node 보안 감사 결과를 반영하도록 고쳤습니다. 이 릴리스부터 태그 push 시 CHANGELOG.md로 GitHub Release 노트를 자동 발행합니다.

v1.0.17 이후 main에서는 릴리스 태그 없이 대규모 보안 하드닝이 진행 중입니다(2026-09-23 기준, 저장소 총 300 commits):

  • requireRole/requireAdmin으로 role 문자열 검사를 중앙화하고, cost/security 상세·트렌드 API에 resource-scope 강제
  • OpenBao 인증을 정적 토큰에서 Kubernetes auth login으로 전환, K8s Service Account 토큰도 projected short-lived 토큰으로 교체
  • federated logout redirect allowlist를 앵커링해 open-redirect 우회를 차단
  • Keycloak/Gitea 연동에 production TLS를 강제하고, health endpoint 인증을 cluster-admin으로 제한
  • Node-tuning 권한 작업에 exact-invocation 승인·서버 측 재계산·replay 방지를 포함한 Agent Execution Security Contract 적용(PR #90)

이 구간은 아직 발행된 릴리스가 아니라 다음 버전을 위해 main에서 검증 중인 상태입니다.

개발 및 배포 모델

# 로컬 개발
git clone https://github.com/dasomel/narwhal-portal.git
cd narwhal-portal
pnpm install
pnpm dev

운영 환경에서는 Narwhal 클러스터 내부에서 APISIX Gateway를 통해 https://portal.local.narwhal.internal로 제공됩니다. 일반적인 배포는 로컬 Docker 데몬에 의존하지 않고 Gitea → Kaniko → Harbor 흐름을 사용할 수 있으며, Skaffold 기반 HMR 개발 경로도 제공합니다.

설계 원칙

1. 원천 시스템은 계속 authoritative

Argo CD, Kubernetes, Keycloak 등 각 시스템이 소유한 상태를 Portal이 복제해 새로운 source of truth로 만들지 않습니다. Portal은 원천 상태를 조회하고 사용자에게 필요한 상관관계와 운영 맥락을 제공합니다.

2. 플랫폼 용어로 묶기

사용자가 각각의 OSS 제품 이름을 이해해야만 플랫폼을 운영할 수 있도록 만들지 않고, Application, Node, Service, Catalog, Security, Governance 같은 플랫폼 개념으로 표현합니다.

3. 운영 경계를 UI에 노출

권한, 인증서, GitOps ownership, 정책 위반, 장애 상태와 같은 제약조건을 숨기지 않고 운영 화면에 드러내어 잘못된 조작을 줄입니다.

4. 개발자 경험과 운영자 경험의 결합

Portal은 단순 관리자 Dashboard가 아니라 Onboarding, Catalog, Templates, Tools를 포함해 Day-0부터 Day-2까지 연결되는 IDP Workbench를 지향합니다.

상세 기술 문서

주제문서내용
Overview포털 개요사용자 시나리오와 플랫폼 내 역할
Architecture포털 아키텍처애플리케이션 구조와 데이터 흐름
Getting Started개발 환경pnpm, 환경 설정, Skaffold
Operations운영 가이드배포, 이미지 빌드, 상태 확인
ADR아키텍처 결정 기록개발/배포 선택과 trade-off

프로젝트 관계