WORK / ACTIVE SYSTEM

ClusterDeck

변하는 VM·Kubernetes 환경을 Profile 중심으로 발견하고 SSH·kubeconfig 연결을 자동화하는 macOS 데스크톱 도구

macOS · Tauri · Rust · React · TypeScript · SSH · Kubernetes · kubeconfig · ProxyJump
01 / Problem02 / Architecture03 / Development04 / Proof05 / Knowledge06 / Record
01 / PROBLEM

로컬 VM과 Kubernetes 실습·개발 환경을 자주 생성·삭제하면 IP가 바뀌고 SSH alias, Bastion/ProxyJump, 원격 kubeconfig, context 이름을 매번 수동으로 다시 연결해야 함

RESPONSE

사용자가 IP 대신 안정적인 Profile 이름을 유지하도록 하고 host discovery → SSH bootstrap → alias/ProxyJump → kubeconfig fetch/normalize → Kubernetes connectivity check 흐름을 하나의 macOS 데스크톱 UX로 묶음

02 / ARCHITECTURE

기능보다 먼저 경계와 연결을 봅니다.

Identity, Delivery, Network, Storage, Workload 통합을 기능 목록이 아니라 운영 경계로 읽습니다.

03 / DEVELOPMENT OVER TIME

계속 발전하는 과정도 evidence입니다.

첫 commit, 누적 commit, release와 최근 활동으로 시스템이 지금도 개발되고 있는지 보여줍니다.

DEVELOPMENT OBSERVATORY
dasomel/clusterdeck

한 번 만든 결과가 아니라, 시간에 따라 계속 발전하는 시스템을 봅니다.

Contributors: 2
첫 commit
2026년 8월 24일
누적 commits
265
Releases
5
최신 release
v0.4.1
최근 push
2026년 10월 17일
개발 기간
2개월
최근 개발 활동
222 commits / 20 weeks
PAST → NOW
언어: Rust라이선스: Apache-2.0Stars: 0Forks: 0Open issues: 12최신 release
04 / PROOF, NOT BADGES
9
technology / domain signals

Declared scope and technical context

3
connected docs

Operational or implementation documentation

1
engineering notes

Knowledge produced by the project

0
digest links

External signals explicitly connected

06 / ENGINEERING RECORD

구현 세부사항, 운영 기록과 프로젝트별 맥락을 이어서 봅니다.

프로젝트 소개

ClusterDeck은 자주 재생성되는 VM 및 Kubernetes 환경에 대한 로컬 접속 경로를 안정적으로 유지하기 위한 macOS 중심 데스크톱 도구입니다.

일반적인 Kubernetes 관리자 콘솔이 아니라, 원격 환경을 발견하고 접속 가능한 상태로 만드는 workstation access layer에 집중합니다. 사용자는 매번 달라지는 IP를 기억하는 대신 Profile 이름을 유지하고, ClusterDeck이 SSH와 kubeconfig 경계를 정리합니다.

IP / Host Discovery
      ↓
SSH Connectivity
      ↓
SSH Bootstrap (optional)
      ↓
SSH Alias / ProxyJump
      ↓
Remote kubeconfig Fetch
      ↓
kubeconfig Normalization
      ↓
Local Profile
      ↓
Kubernetes Connectivity Check

핵심 설계

  • Tauri 2 + Rust: SSH orchestration, filesystem, process execution, kubeconfig 처리 등 로컬 시스템 작업의 보안 경계를 backend에 둡니다.
  • React + TypeScript: Profile, Host, Connect, Status 중심의 간결한 데스크톱 UI를 제공합니다.
  • Native OpenSSH 우선: 자체 SSH stack을 다시 구현하지 않고 ssh, scp, ssh-copy-id, ProxyJump 같은 검증된 동작을 활용합니다.
  • Profile 중심 모델: IP 주소보다 사람에게 안정적인 environment identity를 유지합니다.
  • ClusterDeck-owned config: 사용자 전체 ~/.ssh/config를 덮어쓰지 않고 ~/.clusterdeck/ 아래의 생성 파일만 소유합니다.

보안 경계

초기 비밀번호는 bootstrap용으로만 사용하고 저장하거나 로그에 남기지 않는 것을 원칙으로 합니다. 생성 kubeconfig는 제한된 파일 권한을 사용하고, 사용자 관리 SSH/Kubernetes 설정을 파괴적으로 덮어쓰지 않습니다.

ClusterDeck이 ~/.clusterdeck/ 바깥에서 실제로 건드리는 것은 세 가지뿐이며, 전부 opt-in이거나 자기 소유 블록만 씁니다.

  • 로그인 키체인 — 클러스터 내부 CA를 신뢰하도록 선택하면(엔드포인트별 opt-in, 또는 Settings → Trusted CAs) System이 아닌 로그인 키체인에 SSL/TLS 신뢰 정책 범위로만 추가합니다. Keychain Access.app에서 확인하거나 ClusterDeck에서 직접 해지할 수 있습니다.
  • /etc/hosts — 기본 off, Profile별 opt-in. 켜면 # >>> ClusterDeck BEGIN (profile: <id>) >>> 마커로 감싼 자기 블록만 admin 권한 프롬프트로 씁니다.
  • ~/.ssh/config — Include ~/.clusterdeck/ssh/*.conf 한 줄만 추가하고, 실제 per-profile SSH 옵션은 그 include 디렉터리 안에 둡니다.

다운로드

v0.1.0이 macOS(Apple Silicon) .dmg로 배포됩니다. Apple Developer ID 서명이 아직 없어 최초 실행 시 "확인되지 않은 개발자" 경고가 뜨며, 앱을 우클릭 후 열기로 실행해야 합니다.

MVP 범위

  1. Profile CRUD
  2. Multi-host discovery와 SSH bootstrap
  3. SSH alias 생성
  4. Bastion / ProxyJump
  5. Remote kubeconfig fetch 및 normalization
  6. Profile별 kubeconfig 저장
  7. Kubernetes connectivity verification
  8. 최소 클릭 중심 macOS UI

Cross-platform 지원과 provider-specific discovery는 core workflow 안정화 이후 범위입니다.

개발

pnpm install
pnpm tauri dev
 
pnpm build
cargo check --manifest-path src-tauri/Cargo.toml

소스 실행이 여전히 권장 경로이며, .dmg 배포는 개발용 실행을 대체하지 않는 보조 경로입니다.

상세 문서

주제문서내용
Overview개요문제 정의, 범위, Profile 중심 모델
Architecture아키텍처Tauri/Rust, SSH, kubeconfig 경계
Getting Started시작하기개발 환경과 기본 연결 흐름

프로젝트 관계

Local VM / Kubernetes labs
        ↓
    ClusterDeck
        ↓
SSH / Bastion / kubeconfig access
        ↓
Narwhal · Beluga · test clusters