Skip to main content
Version: v1.2.x

ComputeConfig Configuration Reference

This page provides technical reference information for configuring ComputeConfig resources. For concepts, refer to Compute Configs. For step-by-step instructions, refer to Create and Manage Compute Configs. For the raw resource spec, refer to the ComputeConfig CRD documentation.

Required Fields

A valid Compute Config must include these fields:

  • spec.paletteClusterConfig.defaults.controlPlanePool - The control plane pool configuration object.
  • spec.paletteClusterConfig.defaults.controlPlanePool.nodeCount - Must be 1, 3, or 5. Use 3 or 5 for production so the cluster keeps working if a control plane node fails; use 1 only for single-node clusters.

For single-node clusters, nodeCount must be 1 and workerNodeEligible must be true.

info

The edge virtual IP (VIP) is set per-deployment on the AIWorkload or ComputePool under paletteClusterDeploymentConfig, not on the Compute Config. The Compute Config's edge section holds cluster-wide defaults only.

Examples

Minimal Configuration

The minimum fields required for a valid Compute Config:

apiVersion: spectrocloud.com/v1alpha1
kind: ComputeConfig
metadata:
name: minimal-compute-config
namespace: project-a
spec:
paletteClusterConfig:
defaults:
# Required: Control plane configuration
controlPlanePool:
nodeCount: 3 # Required: Must be 1, 3, or 5

Complete Edge Configuration

This example includes Edge defaults, SSH keys, node requirements, labels, annotations, and taints:

Example Edge Compute Config
apiVersion: spectrocloud.com/v1alpha1
kind: ComputeConfig
metadata:
name: edge-compute-config
namespace: project-a
spec:
paletteClusterConfig:
# Edge cluster defaults (optional)
edge:
ntpServers: # Optional
- 'time.google.com'
- 'time2.google.com'
networkOverlayConfig: # Optional
enabled: false
cidr: '192.168.1.0/24'
# staticIp and overlayNetworkType are deprecated and should not be used in new configurations.
# Static IP configuration is now managed per-host using the Compute resource's edgeHostStaticIPs field.
# VXLAN is the only supported overlay network type.
isTwoNode: false # Optional: Default is false

# Cluster defaults. If defaults is provided, controlPlanePool is required.
defaults:
# SSH keys for node access (optional)
sshKeys:
- 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7... test-user@test-machine'
- 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC8... admin@admin-machine'

# Deletion policy (optional, default: delete)
deletionPolicy: delete # Options: delete | orphan

# Required: Control plane configuration
controlPlanePool:
nodeCount: 3 # Required: Must be 1, 3, or 5
architecture: 'AMD64' # Optional: Default is AMD64. Options: AMD64 | ARM64
workerNodeEligible: false # Optional: Default is false
singleNodeCluster: false # Optional: Default is false

# Optional: Resource requirements per control plane node
cpu:
cpuCount: 8 # Minimum CPU cores per node
memory:
memory: '16 GB' # Minimum memory per node

# Optional: Node metadata
labels:
'palette.ai': 'true'
annotations:
'control-plane-annotation': 'control-plane-value'
'kubernetes.io/description': 'Control plane node'

# Optional: Node taints (mutually exclusive with worker pool taints)
taints:
- key: 'node-role.kubernetes.io/control-plane'
effect: 'NoSchedule' # Options: NoSchedule | PreferNoSchedule | NoExecute

# Optional: Worker pool defaults
workerPools:
- name: 'default-workers' # Optional: Auto-generated if not provided
architecture: 'AMD64' # Optional: Default is AMD64

# Optional: Resource requirements
cpu:
cpuCount: 16
memory:
memory: '32 GB'
gpu: # Optional: GPU requirements
variant: 'NVIDIA A100-SXM4-80GB | 80 GB'
gpuCount: 2
gpuMemory: '80 GB'

# Optional: Minimum worker nodes
minWorkerNodes: 2

# Optional: Node metadata
labels:
'palette.ai': 'true'
annotations:
'worker-annotation': 'worker-value'
'kubernetes.io/description': 'Worker node'

# Note: Taints cannot be set if the control plane has taints

Single-Node Cluster Configuration

For single-node clusters:

apiVersion: spectrocloud.com/v1alpha1
kind: ComputeConfig
metadata:
name: single-node-config
namespace: project-a
spec:
paletteClusterConfig:
defaults:
controlPlanePool:
nodeCount: 1 # Required for single-node
singleNodeCluster: true
workerNodeEligible: true # Required for single-node

Validation Rules

PaletteAI validates Compute Configs against the following rules:

Control Plane Node Count

  • Must be 1, 3, or 5. Use 3 or 5 for production so the control plane can survive node failures; use 1 only for single-node clusters.
  • For single-node clusters: Must be 1 with workerNodeEligible: true.

Taints

  • Control plane taints and worker pool taints are mutually exclusive.
  • If the control plane has any taints defined, worker pools cannot have taints.
  • Otherwise, the control plane and worker pool taints would compete during scheduling.

Resource Names

  • Compute Config name must follow standard Kubernetes resource naming rules:
    • Start with a lowercase letter or number.
    • Contain only lowercase letters, numbers, and hyphens.
    • End with a lowercase letter or number.
    • Maximum 63 characters.

Network Configuration

  • If edge.networkOverlayConfig.cidr is specified, it must be valid Classless Inter-Domain Routing (CIDR) notation, such as 192.168.1.0/24.

Static IP Configuration

Static IP configuration is managed on a per-host basis using the Compute resource's edgeHostStaticIPs field. The cluster-level static IP mode is automatically derived from per-host entries during deployment. This approach provides more granular control over network configuration for individual edge hosts.

VXLAN is the only supported overlay network type. The staticIp and overlayNetworkType fields in networkOverlayConfig are deprecated and no longer read.

Field Reference

The tables below cover the controlPlanePool and workerPools fields. For the full schema, including all edge.*, sshKeys, and deletionPolicy fields, refer to the ComputeConfig CRD reference.

Control Plane Pool Fields

FieldRequiredTypeDescriptionDefault
nodeCount1 | 3 | 5Number of control plane nodesNone
architectureAMD64 | ARM64CPU architectureAMD64
workerNodeEligiblebooleanAllow workloads on control plane nodesfalse
singleNodeClusterbooleanConfigure the cluster as single-nodefalse
cpu.cpuCountintegerMinimum CPU cores per nodeNone
memory.memorystringMinimum memory per nodeNone
gpuobjectGPU requirementsNone
labelsmapNode labelsNone
annotationsmapNode annotationsNone
taintsarrayNode taintsNone

Worker Pool Fields

FieldRequiredTypeDescriptionDefault
namestringWorker pool nameAuto-generated
architectureAMD64 | ARM64CPU architectureAMD64
minWorkerNodesintegerMinimum worker nodesNone
cpu.cpuCountintegerMinimum CPU cores per nodeNone
memory.memorystringMinimum memory per nodeNone
gpuobjectGPU requirementsNone
labelsmapNode labelsNone
annotationsmapNode annotationsNone
taintsarrayNode taints, if the control plane has no taintsNone

Sharing

Tenant-scoped and System-scoped Compute Configs control consumer access through the spec.sharedWith selector map. When the field is omitted, the webhook defaults it to share with all consumers ({"*": ["*"]}); an explicit empty map ({}) denies all. For the full selector grammar and scope semantics, refer to Sharing Resources.

Minimum Worker Node Sources

PaletteAI resolves the minimum worker node count from these sources, in order of priority:

  1. Workload Profile - The palette.ai/min-nodes: N label on the Workload Profile (highest priority).

    Example WorkloadProfile label
    apiVersion: spectrocloud.com/v1beta1
    kind: WorkloadProfile
    metadata:
    name: distributed-training
    labels:
    palette.ai/min-nodes: '3' # This workload requires at least 3 nodes
    spec:
  2. Worker Pool Config - minWorkerNodes in the worker pool configuration, either in the AIWorkload or ComputePool spec.

    Example AIWorkload minWorkerNodes
    apiVersion: spectrocloud.com/v1alpha1
    kind: AIWorkload
    metadata:
    name: my-workload
    spec:
    clusterVariant:
    dedicated:
    paletteClusterDeploymentConfig:
    cloudType: edge-native
    nodePoolRequirements:
    controlPlanePool:
    nodeCount: 3
    workerPools:
    - name: gpu-workers
    gpu:
    variant: 'NVIDIA A100-SXM4-80GB | 80 GB'
    gpuCount: 8
    minWorkerNodes: 3
  3. Compute Config Defaults - minWorkerNodes in spec.paletteClusterConfig.defaults.workerPools[*] (lowest priority).

    Example Compute Config minWorkerNodes default
    apiVersion: spectrocloud.com/v1alpha1
    kind: ComputeConfig
    spec:
    paletteClusterConfig:
    defaults:
    workerPools:
    - minWorkerNodes: 2

If none of these sources specify a minimum worker node requirement, no minimum is enforced.