Skip to main content
The MachineConfig section defines machine-specific configuration options that control how an individual Talos node operates. This includes the node role, installation settings, networking, and kubelet configuration.

Machine Type

machine.type
string
required
Defines the role of the machine within the cluster.
machine:
  type: controlplane

Machine Identity

machine.token
string
required
The token used by a machine to join the cluster PKI. This token is used to create a certificate signing request (CSR) and obtain an identity certificate.Important: Ensure this token is correct as machine certificates have a short TTL by default.
machine:
  token: "328hom.uqjzh6jnn2eie9oi"
machine.ca
object
The root certificate authority of the PKI, composed of base64 encoded crt and key.
machine.acceptedCAs
array
Additional certificate authorities accepted for authentication, each containing a base64 encoded crt.
machine.certSANs
array
Extra Subject Alternative Names (SANs) for the machine’s certificate. By default, all non-loopback interface IPs are automatically added.
machine:
  certSANs:
    - 10.0.0.10
    - 172.16.0.10
    - 192.168.0.10

Control Plane Configuration

machine.controlPlane
object
Machine-specific control plane configuration options.

Kubelet Configuration

machine.kubelet
object
Configuration options for the kubelet.

Installation Configuration

machine.install
object
Installation instructions for the machine. This section is ignored by pre-installed Talos images.

System Configuration

machine.sysctls
object
Kernel sysctl configuration as key-value pairs.
machine:
  sysctls:
    kernel.printk: "4 4 1 7"
    net.ipv4.ip_forward: "1"
machine.sysfs
object
Sysfs configuration as key-value pairs.
machine:
  sysfs:
    devices.system.cpu.cpu0.cpufreq.scaling_governor: performance
machine.files
array
Additional files to create on the machine. The op value can be create, overwrite, or append.
machine:
  files:
    - content: |
        [Unit]
        Description=Example Service
        [Service]
        Type=oneshot
        ExecStart=/usr/local/bin/example.sh
      permissions: 0o644
      path: /etc/systemd/system/example.service
      op: create
machine.nodeLabels
object
Kubernetes node labels for the machine.Note: Worker nodes are restricted from setting labels with certain prefixes (see NodeRestriction).
machine:
  nodeLabels:
    rack: rack-1
    environment: production
machine.nodeAnnotations
object
Kubernetes node annotations for the machine.
machine:
  nodeAnnotations:
    customer.io/rack: r13a25
machine.nodeTaints
object
Kubernetes node taints for the machine. Effect is optional.Note: Worker nodes cannot modify taints by default (see NodeRestriction).
machine:
  nodeTaints:
    exampleTaint: exampleTaintValue:NoSchedule

Features Configuration

machine.features
object
Individual Talos features that can be enabled or disabled.
machine:
  features:
    rbac: true
    stableHostname: true
    kubernetesTalosAPIAccess:
      enabled: true
      allowedRoles:
        - os:reader
      allowedKubernetesNamespaces:
        - kube-system

Complete Example

version: v1alpha1
kind: Config
machine:
  type: controlplane
  token: 328hom.uqjzh6jnn2eie9oi
  ca:
    crt: LS0tLS1CRUdJTi...
    key: LS0tLS1CRUdJTi...
  certSANs:
    - 10.0.0.10
  kubelet:
    image: ghcr.io/siderolabs/kubelet:v1.28.0
    extraArgs:
      feature-gates: EphemeralContainers=true
    nodeIP:
      validSubnets:
        - 10.0.0.0/8
  install:
    disk: /dev/sda
    image: ghcr.io/siderolabs/installer:v1.6.0
    wipe: true
  sysctls:
    net.ipv4.ip_forward: "1"
  nodeLabels:
    topology.kubernetes.io/zone: us-east-1a
  features:
    rbac: true
    stableHostname: true

Build docs developers (and LLMs) love