Cluster Configuration
ClusterConfig acts the sole source of truth for all global configurations and settings for the Cordium Cluster. It controls Space ownership policy, Workspace storage class selection, cluster-wide resource limits, and Workspace timeouts. There is exactly one ClusterConfig per Cordium Cluster. It is created automatically at installation time and updated via cordium man apply.
cordium man apply </PATH/TO/CONFIG.YAML>Space
Ownership
The ownership field defines a policy that controls which users are allowed to create Spaces. It contains a list of rules, each with an effect (ALLOW or DENY) and a condition expressed in CEL. Rules are evaluated in order. The first rule whose condition matches the requesting user determines the outcome. If no rule matches, the request is denied by default.
This field is optional. If omitted, Space creation is unrestricted.
spec:
space:
ownership:
rules:
# Allow users in the "engineers" group to create Spaces
- effect: ALLOW
condition:
match: '"engineers" in ctx.user.spec.groups'
- effect: DENY
condition:
match: "true"Here is another example of permissive configuration that allows all Users to create Spaces:
spec:
space:
ownership:
rules:
- effect: ALLOW
condition:
allowAny: trueWorkspace
Storage
Storage class selection is rule-based. Cordium evaluates the storageClass and volumeSnapshotClass rule lists in order and uses the first matching rule. This allows different storage tiers to be assigned based on Workspace attributes such as requested storage size, user identity, or Space type.
Selects the Kubernetes StorageClass used to provision the Workspace PVC. Each rule has a CEL condition evaluated against the Workspace context and a storageClass string naming the target StorageClass.
spec:
workspace:
storage:
storageClass:
rules:
# Use fast NVMe-backed storage for large Workspaces
- condition:
match: "ctx.workspace.spec.limit.storage.megabytes > 51200"
storageClass: longhorn-nvme
# Default to standard storage for everything else
- condition:
matchAny: true
storageClass: longhorn-standardYou can also set the VolumeSnapshotClass used for Template pre-build snapshots. If no rule matches or this field is omitted, Template pre-builds are disabled. Here is an example:
spec:
workspace:
storage:
volumeSnapshotClass:
rules:
- condition:
matchAny: true
volumeSnapshotClass: longhorn-snapshot-vscLimit
You can set Cluster-wide Workspace limits. All fields are optional. Omitting a field means no cluster-level restriction is applied for that dimension. Here is an example:
spec:
workspace:
limit:
maxPerUser: 30
maxActivePerUser: 5
# Resource limits for Template pre-build Workspaces
buildLimit:
cpu:
millicores: 4000
memory:
megabytes: 8192
storage:
megabytes: 51200
# Default limits for Workspaces in user-owned Spaces
defaultUserSpaceLimit:
cpu:
millicores: 2000
memory:
megabytes: 4096
storage:
megabytes: 20480
# Hard cap where no Workspace in the cluster can exceed these values
maxLimit:
cpu:
millicores: 16000
memory:
megabytes: 32768
storage:
megabytes: 204800Timeout
You can also set Cluster-wide Workspace active duration limits. These define how long a Workspace can remain running before it is automatically stopped. All fields are optional. Here is an example:
spec:
workspace:
timeout:
defaultDuration:
hours: 24
userSpaceDuration:
hours: 24
maxActiveDuration:
days: 30