Skip to main content
Version: v1.1.x

Compute Config

A Compute Config defines the default settings PaletteAI uses to deploy Kubernetes clusters. Platform administrators capture infrastructure details such as networking, Secure Shell (SSH) keys, and node configuration in a Compute Config. Data scientists and ML engineers then deploy against those defaults without repeating boilerplate.

Every Project must reference a Compute Config. When users deploy artificial intelligence and machine learning (AI/ML) applications or models, PaletteAI provisions clusters from the Compute Config so the same settings apply every time. These settings live under spec.paletteClusterConfig, which contains cluster-wide defaults for control plane and worker pool configuration. It can also include an edge block for Edge deployments.

tip

Compute Config stores the cluster settings you would otherwise enter manually in Palette's cluster deployment workflow. For Edge clusters, it covers most settings from the Cluster Config and Nodes Config pages.

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
staticIp: true
cidr: '192.168.1.0/24'
overlayNetworkType: 'VXLAN'
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
family: 'NVIDIA A100'
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.

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
nodeCountYes1 | 3 | 5Number of control plane nodesNone
architectureNoAMD64 | ARM64CPU architectureAMD64
workerNodeEligibleNobooleanAllow workloads on control plane nodesfalse
singleNodeClusterNobooleanConfigure the cluster as single-nodefalse
cpu.cpuCountNointegerMinimum CPU cores per nodeNone
memory.memoryNostringMinimum memory per nodeNone
gpuNoobjectGPU requirementsNone
labelsNomapNode labelsNone
annotationsNomapNode annotationsNone
taintsNoarrayNode taintsNone

Worker Pool Fields

FieldRequiredTypeDescriptionDefault
nameNostringWorker pool nameAuto-generated
architectureNoAMD64 | ARM64CPU architectureAMD64
minWorkerNodesNointegerMinimum worker nodesNone
cpu.cpuCountNointegerMinimum CPU cores per nodeNone
memory.memoryNostringMinimum memory per nodeNone
gpuNoobjectGPU requirementsNone
labelsNomapNode labelsNone
annotationsNomapNode annotationsNone
taintsNoarrayNode taints, if the control plane has no taintsNone

Worker Node Eligibility

The controlPlanePool.workerNodeEligible setting determines whether control plane nodes can run workloads in addition to managing the cluster.

For single-node clusters, the node functions as both control plane and worker. Scheduling follows the worker pool's requirements, and control plane labels, taints, and annotations are merged into the pool and override worker pool values where they conflict.

Set workerNodeEligible to true for single-node deployments, and false for multi-node deployments so control plane nodes stay dedicated to cluster management.

info

Refer to Deploy a Single-Node Compute Pool for a step-by-step guide on configuring and deploying single-node clusters with worker-eligible control planes.

Minimum Worker Nodes

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:
    family: 'NVIDIA A100'
    gpuCount: 8
    minWorkerNodes: 3
    info

    Each worker pool requires a name field. If you do not specify one, PaletteAI automatically generates a unique identifier for the worker pool.

  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.

Resources

Refer to the following articles to learn more about the role Compute Config plays in PaletteAI:

  • Compute - Discovers available machines for cluster deployment.
  • Compute Pool - Allocates machines and provisions clusters using Compute Config settings.
  • Project - References a Compute Config for all workloads in the project.