🤖 Generated by the Agentic Engineer
Evidence
#3626 establishes that Kubernetes cannot advance past v1.36 until Talos moves to the v1.14 line, and states the prerequisite as "Talos moves to the v1.14 line first". That prerequisite has never been specified, and it is considerably more than a version bump.
#3713 (chore(deps): update dependency siderolabs/talos to v1.14.0) now demonstrates what it actually costs. With the stale talosctl digest fixed (commit a8203d4d, so setup-talosctl.sh succeeds and talosctl gen config runs), 🧪 Validate Talos Machine Config fails on the talos (cloud) overlay with 8 conflicts — job 104627163211:
8 errors occurred:
* UnattendedInstallConfig config is incompatible with v1alpha1 config (.machine.install)
* .machine.nodeAnnotations is already set in v1alpha1 config
* kubelet config is already set in v1alpha1 config (.machine.kubelet)
* cluster network config is already set in the v1alpha1 config (.machine.cluster.network). Please remove it and use only the new KubeNetworkConfig document to avoid conflicts
* kube-apiserver config is already set in v1alpha1 config (.cluster.apiServer)
* kube-controller-manager config is already set in v1alpha1 config (.cluster.controllerManager)
* cluster proxy config in v1alpha1 config (.machine.cluster.proxy) can't be used with KubeProxyConfig document, please remove it to avoid conflicts
* cluster network config in v1alpha1 config (.machine.cluster.network) can't be used with KubeFlannelCNIConfig document, please remove it to avoid conflicts
Preceded by WARNING: .machine.files is deprecated; use dedicated configuration documents instead.
Every other check on that head is green — 🔐 Validate Production Authorization, 🧪 Validate Manifests, kubescape, CodeQL and the rest. This one check, and CI - Required Checks as its consequence, are the only failures.
The problem
Talos v1.14 moves settings out of the monolithic v1alpha1 document into dedicated configuration documents, and refuses to validate when both describe the same thing. Our machine-config patches still set all eight in v1alpha1. So the Talos upgrade cannot land as a version bump, and while it cannot land, #3534 (Kubernetes v1.37) stays permanently unmergeable — that is the whole of #3626's cost, and this is its root.
The same upstream restructuring is breaking KSail independently (ksail#6776 — MachineConfig.Kubelet and seven sibling accessors removed), so this is one upstream change surfacing in two products.
Expected behaviour
The Talos machine-config patches are migrated onto the v1.14 documents, talosctl validate passes for both overlays, and #3713 (or its successor) can go green on the version bump alone.
Acceptance criteria
.machine.install → UnattendedInstallConfig
.machine.kubelet → the dedicated kubelet document
.machine.cluster.network → KubeNetworkConfig (and the KubeFlannelCNIConfig conflict resolved with it)
.machine.cluster.proxy → KubeProxyConfig
.cluster.apiServer → the dedicated kube-apiserver document
.cluster.controllerManager → the dedicated kube-controller-manager document
.machine.nodeAnnotations moved off v1alpha1
.machine.files moved off the deprecated field
🧪 Validate Talos Machine Config passes for both the talos (cloud) and talos-local (container) overlays
- The rendered config is diffed against the current one to show the migration is settings-preserving — no grant, no mount, no network setting silently dropped
Size and risk
Medium, and higher risk than its size suggests: this rewrites the machine config that provisions production nodes. It wants its own reviewed change with a rendered before/after diff — not an adaptation commit folded into a Renovate version bump.
Part of #3626.
Evidence
#3626 establishes that Kubernetes cannot advance past v1.36 until Talos moves to the v1.14 line, and states the prerequisite as "Talos moves to the
v1.14line first". That prerequisite has never been specified, and it is considerably more than a version bump.#3713 (
chore(deps): update dependency siderolabs/talos to v1.14.0) now demonstrates what it actually costs. With the staletalosctldigest fixed (commita8203d4d, sosetup-talosctl.shsucceeds andtalosctl gen configruns),🧪 Validate Talos Machine Configfails on thetalos (cloud)overlay with 8 conflicts — job 104627163211:Preceded by
WARNING: .machine.files is deprecated; use dedicated configuration documents instead.Every other check on that head is green —
🔐 Validate Production Authorization,🧪 Validate Manifests,kubescape, CodeQL and the rest. This one check, andCI - Required Checksas its consequence, are the only failures.The problem
Talos v1.14 moves settings out of the monolithic
v1alpha1document into dedicated configuration documents, and refuses to validate when both describe the same thing. Our machine-config patches still set all eight inv1alpha1. So the Talos upgrade cannot land as a version bump, and while it cannot land, #3534 (Kubernetes v1.37) stays permanently unmergeable — that is the whole of #3626's cost, and this is its root.The same upstream restructuring is breaking KSail independently (ksail#6776 —
MachineConfig.Kubeletand seven sibling accessors removed), so this is one upstream change surfacing in two products.Expected behaviour
The Talos machine-config patches are migrated onto the v1.14 documents,
talosctl validatepasses for both overlays, and #3713 (or its successor) can go green on the version bump alone.Acceptance criteria
.machine.install→UnattendedInstallConfig.machine.kubelet→ the dedicated kubelet document.machine.cluster.network→KubeNetworkConfig(and theKubeFlannelCNIConfigconflict resolved with it).machine.cluster.proxy→KubeProxyConfig.cluster.apiServer→ the dedicated kube-apiserver document.cluster.controllerManager→ the dedicated kube-controller-manager document.machine.nodeAnnotationsmoved offv1alpha1.machine.filesmoved off the deprecated field🧪 Validate Talos Machine Configpasses for both thetalos (cloud)andtalos-local (container)overlaysSize and risk
Medium, and higher risk than its size suggests: this rewrites the machine config that provisions production nodes. It wants its own reviewed change with a rendered before/after diff — not an adaptation commit folded into a Renovate version bump.
Part of #3626.