Kubernetes multi-cluster management UI — SvelteKit + Connect RPC.
graph LR
Browser -->|HTTP/SSR| SvelteKit[SvelteKit]
Browser -->|Connect RPC<br/>same-origin + x-proxy-target| SvelteKit
SvelteKit -->|OAuth 2.0 / OIDC| Keycloak[Keycloak]
SvelteKit -->|Session / refresh lock| Redis[Redis]
SvelteKit -->|Proxy + Bearer| API[OtterScale API]
API --> K8s[Kubernetes Clusters]
API --> Prometheus[Prometheus]
subgraph Connect RPC used by Dashboard
API --- LinkService[LinkService]
API --- ResourceService[ResourceService]
API --- RuntimeService[RuntimeService]
end
# Clone
git clone https://github.com/otterscale/dashboard.git && cd dashboard
# Configure
cp .env.example .env # edit .env
# Dev
pnpm install && pnpm dev
# Production (Docker)
docker build -t otterscale/dashboard .
docker run -p 3000:3000 --env-file .env otterscale/dashboardENV_VAR |
Default | Description |
|---|---|---|
PUBLIC_WEB_URL |
http://localhost:3000 |
Public URL (required) |
PUBLIC_HARBOR_URL |
http://localhost:5000 |
Public Harbor URL (required) |
API_URL |
http://localhost:8299 |
OtterScale API endpoint (required) |
REDIS_URL |
— | Redis connection string (required) |
KEYCLOAK_REALM_URL |
— | Keycloak realm URL (required) |
KEYCLOAK_CLIENT_ID |
— | OAuth client ID (required) |
KEYCLOAK_CLIENT_SECRET |
— | OAuth client secret (required) |
- Multi-cluster K8s management — scopes, resources, RBAC
- Storage orchestration — Ceph pools, OSD, NFS, SMB, object gateway
- VM lifecycle — create, manage, console via xterm.js
- AI/ML model serving — LLM deployment & inference proxy
- Prometheus monitoring — built-in metrics & dashboards