Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: connections.stream.streamspace.io
name: connections.stream.space
annotations:
controller-gen.kubebuilder.io/version: v0.11.1
spec:
group: stream.streamspace.io
group: stream.space
names:
kind: Connection
listKind: ConnectionList
Expand Down
131 changes: 131 additions & 0 deletions chart/crds/stream.space_sessions.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: sessions.stream.space
spec:
group: stream.space
versions:
- name: v1alpha1
served: true
storage: true
schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
required: [user, template, state]
properties:
user:
type: string
description: Username who owns this session
minLength: 1
maxLength: 253
pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
template:
type: string
description: Template name to use for this session
minLength: 1
maxLength: 253
pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
state:
type: string
enum: [running, hibernated, terminated]
description: Desired state of the session
resources:
type: object
properties:
memory:
type: string
description: Memory limit (e.g., 2Gi, 4Gi)
pattern: '^[0-9]+(Mi|Gi|Ti)$'
minLength: 2
maxLength: 10
cpu:
type: string
description: CPU limit (e.g., 1000m, 2000m)
pattern: '^[0-9]+(m)?$'
minLength: 1
maxLength: 10
persistentHome:
type: boolean
default: true
description: Mount persistent home directory
idleTimeout:
type: string
default: "30m"
description: Idle timeout before hibernation (e.g., 30m, 1h)
pattern: '^[0-9]+(s|m|h)$'
minLength: 2
maxLength: 10
maxSessionDuration:
type: string
default: "8h"
description: Maximum session duration before forced termination
pattern: '^[0-9]+(s|m|h)$'
minLength: 2
maxLength: 10
status:
type: object
properties:
phase:
type: string
enum: [Pending, Running, Hibernated, Failed, Terminated]
podName:
type: string
url:
type: string
lastActivity:
type: string
format: date-time
resourceUsage:
type: object
properties:
memory:
type: string
cpu:
type: string
conditions:
type: array
items:
type: object
properties:
type:
type: string
status:
type: string
lastTransitionTime:
type: string
format: date-time
reason:
type: string
message:
type: string
subresources:
status: {}
additionalPrinterColumns:
- name: User
type: string
jsonPath: .spec.user
- name: Template
type: string
jsonPath: .spec.template
- name: State
type: string
jsonPath: .spec.state
- name: Phase
type: string
jsonPath: .status.phase
- name: URL
type: string
jsonPath: .status.url
- name: Age
type: date
jsonPath: .metadata.creationTimestamp
scope: Namespaced
names:
plural: sessions
singular: session
kind: Session
shortNames:
- ss
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: templaterepositories.stream.streamspace.io
name: templaterepositories.stream.space
annotations:
controller-gen.kubebuilder.io/version: v0.11.1
spec:
group: stream.streamspace.io
group: stream.space
names:
kind: TemplateRepository
listKind: TemplateRepositoryList
Expand Down
125 changes: 125 additions & 0 deletions chart/crds/stream.space_templates.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: templates.stream.space
spec:
group: stream.space
versions:
- name: v1alpha1
served: true
storage: true
schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
required: [displayName, baseImage]
properties:
displayName:
type: string
description: Human-readable name for the application
description:
type: string
description: Detailed description of the application
category:
type: string
description: Category for organizing templates (e.g., Browsers, Development)
icon:
type: string
description: URL to icon image
baseImage:
type: string
description: Docker image to use (e.g., lscr.io/linuxserver/firefox:latest)
defaultResources:
type: object
properties:
memory:
type: string
default: "2Gi"
cpu:
type: string
default: "1000m"
ports:
type: array
items:
type: object
properties:
name:
type: string
containerPort:
type: integer
protocol:
type: string
default: TCP
env:
type: array
items:
type: object
properties:
name:
type: string
value:
type: string
volumeMounts:
type: array
items:
type: object
properties:
name:
type: string
mountPath:
type: string
vnc:
type: object
description: VNC server configuration (generic, not Kasm-specific)
properties:
enabled:
type: boolean
default: true
port:
type: integer
default: 3000
capabilities:
type: array
items:
type: string
enum: [Network, Audio, Clipboard, USB, Printing]
tags:
type: array
items:
type: string
status:
type: object
properties:
phase:
type: string
description: Current phase (Ready, Invalid, etc.)
message:
type: string
description: Additional status information
subresources:
status: {}
additionalPrinterColumns:
- name: Display Name
type: string
jsonPath: .spec.displayName
- name: Category
type: string
jsonPath: .spec.category
- name: Image
type: string
jsonPath: .spec.baseImage
- name: Memory
type: string
jsonPath: .spec.defaultResources.memory
- name: Age
type: date
jsonPath: .metadata.creationTimestamp
scope: Namespaced
names:
plural: templates
singular: template
kind: Template
shortNames:
- tpl
Loading
Loading