A SvelteKit-based control panel for monitoring and managing various services and platforms.
- Real-time eVault Discovery: Automatically discovers eVault pods across all Kubernetes namespaces
- Pod Information: Displays comprehensive pod details including status, readiness, restarts, age, IP, and node
- Live Logs: View real-time logs from eVault pods with automatic refresh
- Pod Details: Access detailed pod information including YAML configuration and resource usage
- Metrics: View pod performance metrics (when metrics-server is available)
- W3DS login flow:
/loginusesw3ds://authoffer + wallet signature callback - Signature verification: Auth callback verifies signatures with
signature-validatoragainstPUBLIC_REGISTRY_URL - Static admin allowlist: Access is granted only if the authenticated eName exists in
config/admin-enames.json - No local DB: Admin authorization is file-based and reloaded from disk when changed
kubectlmust be installed and configured- Access to the Kubernetes cluster where eVaults are running
- Proper RBAC permissions to list and describe pods
- Node.js 18+
- Access to execute
kubectlcommands
- Install dependencies:
npm install- Ensure kubectl is configured:
kubectl cluster-infonpm run devnpm run buildThe main page displays a table of all eVault pods found across your Kubernetes cluster:
- Name: Clickable link to detailed pod view
- Namespace: Kubernetes namespace where the pod is running
- Status: Current pod status (Running, Pending, Failed, etc.)
- Ready: Number of ready containers vs total containers
- Restarts: Number of container restarts
- Age: How long the pod has been running
- IP: Pod IP address
- Node: Kubernetes node where the pod is scheduled
Click on any eVault name to access detailed monitoring:
- Real-time pod logs with automatic refresh
- Configurable log tail length
- Terminal-style display for easy reading
- Complete pod description from
kubectl describe pod - YAML configuration from
kubectl get pod -o yaml - Resource requests and limits
- Environment variables and volume mounts
- CPU and memory usage (requires metrics-server)
- Resource consumption trends
- Performance monitoring data
Returns a list of all eVault pods across all namespaces.
Returns the most recent logs from a specific pod.
Returns detailed information about a specific pod.
- Copy
.env.exampleto.envand configure:
PUBLIC_REGISTRY_URL=https://registry.staging.metastate.foundation
PUBLIC_CONTROL_PANEL_URL=http://localhost:5173
CONTROL_PANEL_JWT_SECRET=replace-with-a-strong-secret
CONTROL_PANEL_ADMIN_ENAMES_FILE=config/admin-enames.json- Add admin eNames to
config/admin-enames.json:
{
"admins": ["@admin1.w3id", "@admin2.w3id"]
}- Start the app and open
/loginto authenticate with eID Wallet.
The system automatically detects eVault pods by filtering for pods with names containing:
evaultvaultweb3
You can modify the filter in src/routes/api/evaults/+server.ts to adjust detection criteria.
Default log tail length is 100 lines. This can be configured via the tail query parameter.
- Verify kubectl is configured:
kubectl cluster-info - Check if eVault pods are running:
kubectl get pods --all-namespaces - Verify pod names contain expected keywords
- Check RBAC permissions for pod listing
Ensure your kubectl context has permissions to:
- List pods across namespaces
- Describe pods
- Access pod logs
- View pod metrics (if using metrics-server)
If the metrics tab shows no data:
- Verify metrics-server is installed:
kubectl get pods -n kube-system | grep metrics - Check metrics-server logs for errors
- Ensure HPA (Horizontal Pod Autoscaler) is configured if needed
- The control panel executes kubectl commands on the server
- Ensure proper access controls and authentication
- Consider implementing role-based access control
- Monitor and audit kubectl command execution
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
[Add your license information here]