Getting Started
This guide will help you install StreamSpace on your Kubernetes cluster and create your first session.
Prerequisites
- Kubernetes 1.19+ - Any Kubernetes cluster (k3s recommended)
- Helm 3.x - For installation
- NFS Storage - For persistent user home directories
- Ingress Controller - Traefik, nginx, or similar
- kubectl - Configured to access your cluster
Installation
Step 1: Clone the Repository
BASH
git clone https://github.com/JoshuaAFerguson/streamspace.git
cd streamspace
Step 2: Install with Helm
BASH
helm install streamspace ./chart \\
--namespace streamspace \\
--create-namespace
Step 3: Custom Configuration (Optional)
Create a custom-values.yaml file to customize your deployment:
YAML
controller:
config:
ingressDomain: "streamspace.example.com"
ingressClass: "traefik"
postgresql:
enabled: true
auth:
postgresPassword: "changeme"
api:
replicaCount: 2
ui:
replicaCount: 2
Install with custom values:
BASH
helm install streamspace ./chart \\
--namespace streamspace \\
--create-namespace \\
--values custom-values.yaml
Verify Deployment
Check that all components are running:
BASH
# Check all pods are running
kubectl get pods -n streamspace
# Expected output:
# streamspace-controller-xxx 1/1 Running
# streamspace-api-xxx 1/1 Running
# streamspace-ui-xxx 1/1 Running
# postgresql-xxx 1/1 Running
Create Your First Session
Access the Web UI
BASH
# Port forward to UI
kubectl port-forward -n streamspace svc/streamspace-ui 3000:80
# Open in browser
open http://localhost:3000
Or Create Session with kubectl
BASH
kubectl apply -f - <
Check Session Status
BASH
# Get session details
kubectl get session my-firefox -n streamspace
# Watch session become ready
kubectl get session my-firefox -n streamspace -w
# Get session URL
kubectl get session my-firefox -n streamspace -o jsonpath='{.status.url}'
Configuration
Set Ingress Domain
Configure the domain for session ingresses:
YAML
controller:
config:
ingressDomain: "apps.example.com"
ingressClass: "traefik"
Configure Storage
Set up persistent storage for user home directories:
YAML
storage:
className: "nfs-client"
defaultSize: "50Gi"
Enable Monitoring
YAML
monitoring:
enabled: true
prometheus:
enabled: true
grafana:
enabled: true
Next Steps
- Read the full documentation
- Explore all features
- Learn about the plugin system
- Check the roadmap
- Contribute to the project
Add Template Repositories
Add more application templates from Git repositories:
BASH
kubectl apply -f - <
Configure User Quotas
Set resource limits per user via the Web UI or API:
- Maximum concurrent sessions
- CPU and memory limits
- Storage quota
- Maximum session duration