Cluster Templates
Reference documentation for cluster templates.
Cluster templates are parsed, validated, and converted to Omni resources, which are then created or updated via the Omni API. Omni guarantees backward compatibility for cluster templates, so the same template can be used with any future version of Omni.
All referenced files in machine configuration patches should be stored relative to the current working directory.
Structure
The Cluster Template is a YAML file consisting of multiple documents, with each document having a kind
field that specifies the type of the document. Some documents might also have a name
field that specifies the name (ID) of the document.
Each cluster template should have exactly one document of kind: Cluster
, kind: ControlPlane
, and any number of kind: Workers
with different name
s.
Every Machine
document must be referenced by either a ControlPlane
or Workers
document.
Document Types
Cluster
Cluster
The Cluster
document specifies the cluster configuration, labels, defines the cluster name and base component versions.
kind
string
Cluster
name
string
Cluster name: only letters, digits and -
and _
are allowed. The cluster name is used as a key by all other documents, so if the cluster name changes, a new cluster will be created.
labels
map[string]string
Labels to be applied to the cluster.
annotations
map[string]string
Annotations to be applied to the cluster.
kubernetes.version
string
Kubernetes version to use, vA.B.C
.
talos.version
string
Talos version to use, vA.B.C
.
features.enableWorkloadProxy
boolean
Whether to enable the workload proxy feature. Defaults to false
.
features.useEmbeddedDiscoveryService
boolean
Whether to use the embedded discovery service that runs inside the Omni instance instead of the public one (discovery.talos.dev
). Defaults to false
. It is only valid if the Omni instance has the feature enabled.
features.diskEncryption
boolean
Whether to enable disk encryption. Defaults to false
.
features.backupConfiguration.interval
string
patches
array
systemExtensions
array
The list of system extensions to be installed on every machine in the cluster.
ControlPlane
ControlPlane
The ControlPlane
document specifies the control plane configuration, defines the number of control plane nodes, and the list of machines to use.
As control plane machines run an etcd
cluster, it is recommended to use a number of machines for the control plane that can achieve a stable quorum (e.g., 1, 3, 5, etc.). Changing the set of machines in the control plane will trigger a rolling scale-up/scale-down of the control plane.
The control plane should have at least a single machine, but it is recommended to use at least 3 machines for the control plane for high-availability.
kind
string
ControlPlane
labels
map[string]string
Labels to be applied to the control plane machine set.
annotations
map[string]string
Annotations to be applied to the control plane machine set.
machines
array
List of machine IDs to use for control plane nodes (mutually exclusive with machineClass
).
patches
array
machineClass
Machine Class configuration (mutually exclusive with machines
).
systemExtensions
array
The list of system extensions to be installed on every machine in the machine set.
Workers
Workers
The Workers
document specifies the worker configuration, defines the number of worker nodes, and the list of machines to use.
kind
string
Workers
name
string
Worker machine set name: only letters, digits and -
and _
are allowed. Defaults to workers
when omitted. Must be unique and not be control-planes
.
labels
map[string]string
Labels to be applied to the worker machine set.
annotations
map[string]string
Annotations to be applied to the worker machine set.
machines
array
List of machine IDs to use as worker nodes in the machine set (mutually exclusive with machineClass
).
patches
array
machineClass
Machine Class configuration (mutually exclusive with machines
).
updateStrategy
Update strategy for the machine set. Defaults to type: Rolling
with maxParallelism: 1
.
deleteStrategy
Delete strategy for the machine set. Defaults to type: Unset
.
systemExtensions
array
The list of system extensions to be installed on every machine in the machine set.
MachineClass
MachineClass
The MachineClass
section of the Control Plane or the Workers defines the rule for picking the machines in the machine set.
name
string
Name of the machine class to use.
size
number
Number of machines to pick from the matching machine class.
size
field supports keyword unlimited|infinity
which makes the machine set pick all available machines from the specified machine class. {}
UpdateStrategy
UpdateStrategy
The UpdateStrategy
section of the Workers defines the update and/or the delete strategy for the machine set.
type
string
Strategy type. Can be Rolling
or Unset
. Defaults to Rolling
for updateStrategy
and Unset
for the deleteStrategy
. When Unset
, all updates and/or deletes will be applied at once.
rolling.maxParallelism
number
Maximum number of machines to update and/or delete in parallel. Only used when the type
is Rolling
. Defaults to 1
.
Machine
Machine
The Machine
document specifies the install disk and machine-specific configuration patches. They are optional, but every Machine
document must be referenced by either a ControlPlane
or Workers
document.
kind
string
Machine
name
string
Machine ID.
labels
map[string]string
Labels to be applied to the machine set node.
annotations
map[string]string
Annotations to be applied to the machine set node.
locked
string
Whether the machine should be marked as locked. Can be true
only if the machine is used as a worker.
install.disk
string
Disk to install Talos on. Matters only for Talos running from ISO or iPXE.
patches
array
systemExtensions
array
The list of system extensions to be installed on the machine.
When Talos is not installed and the install disk is not specified, Omni will try to pick the install disk automatically. It will find the smallest disk which is larger than 5GB. {}
Common Fields
patches
patches
The patches
field is a list of machine configuration patches to apply to a cluster, a machine set, or an individual machine. Config patches modify the configuration before it is applied to each machine in the cluster. Changing configuration patches modifies the machine configuration which gets automatically applied to the machine.
file
string
Path to the patch file. Path is relative to the current working directory when executing omnictl
. File should contain Talos machine configuration strategic patch.
name
string
Name of the patch. Required for inline
patches when idOverride
is not set, optional for file
patches (default name will be based on the file path).
idOverride
string
Override the config patch ID, so it won't be generated from the name
or file
.
labels
map[string]string
Labels to be applied to the config patch.
annotations
map[string]string
Annotations to be applied to the config patch.
inline
object
Inline patch containing Talos machine configuration strategic patch.
A configuration patch may be either inline
or file
based. Inline patches are useful for small changes, file-based patches are useful for more complex changes, or changes shared across multiple clusters.
Last updated