fix(talos): node labels через KubeNodeConfig (Talos 1.14) #4

Closed
hermes wants to merge 2 commits from fix/talos-node-labels into main
Collaborator

just talos diff падал на применении конфига:

failed to apply config to node k8s-0: failed to apply machine config: rpc error: code = InvalidArgument
 desc = 1 error occurred:
	* .machine.nodeLabels is already set in v1alpha1 config

Причина. Кластер на Talos 1.14, а в 1.14 node labels перенесены из legacy-поля .machine.nodeLabels в типизированный документ KubeNodeConfig (вместе с nodeAnnotations, nodeTaints, skipNodeRegistration, registerWithFQDN, nodeIP, allowSchedulingOnControlPlanes). В конфиге ноды KubeNodeConfig уже есть (в talos/control-plane/00-cluster.yaml — там снимается node-role.kubernetes.io/control-plane taint), и legacy-форма с типизированной одновременно применяться не может.

Фикс. Файл talos/all/32-node-labels.yaml переписан в типизированный документ:

apiVersion: v1alpha1
kind: KubeNodeConfig
labels:
  topology.kubernetes.io/region: home-ops
  topology.kubernetes.io/zone: pve

Файл остаётся в all/, то есть применяется ко всем нодам, включая будущие worker-ноды; патч taint'а остаётся в talos/control-plane/.

Проверка после применения:

just talos diff          # конфиг должен сойтись без ошибок
just talos apply
kubectl get nodes -o custom-columns='NODE:.metadata.name,REGION:.metadata.labels.topology\.kubernetes\.io/region,ZONE:.metadata.labels.topology\.kubernetes\.io/zone'

Документация Talos: https://docs.siderolabs.com/kubernetes-guides/advanced-guides/node-labels (там же сказано, что topology.kubernetes.io/region и zone — из разрешённого для ноды набора, а role-метки node-role.kubernetes.io/* нода себе назначать не может).

`just talos diff` падал на применении конфига: ``` failed to apply config to node k8s-0: failed to apply machine config: rpc error: code = InvalidArgument desc = 1 error occurred: * .machine.nodeLabels is already set in v1alpha1 config ``` **Причина.** Кластер на Talos 1.14, а в 1.14 node labels перенесены из legacy-поля `.machine.nodeLabels` в типизированный документ `KubeNodeConfig` (вместе с `nodeAnnotations`, `nodeTaints`, `skipNodeRegistration`, `registerWithFQDN`, `nodeIP`, `allowSchedulingOnControlPlanes`). В конфиге ноды `KubeNodeConfig` уже есть (в `talos/control-plane/00-cluster.yaml` — там снимается `node-role.kubernetes.io/control-plane` taint), и legacy-форма с типизированной одновременно применяться не может. **Фикс.** Файл `talos/all/32-node-labels.yaml` переписан в типизированный документ: ```yaml apiVersion: v1alpha1 kind: KubeNodeConfig labels: topology.kubernetes.io/region: home-ops topology.kubernetes.io/zone: pve ``` Файл остаётся в `all/`, то есть применяется ко всем нодам, включая будущие worker-ноды; патч taint'а остаётся в `talos/control-plane/`. **Проверка после применения:** ``` just talos diff # конфиг должен сойтись без ошибок just talos apply kubectl get nodes -o custom-columns='NODE:.metadata.name,REGION:.metadata.labels.topology\.kubernetes\.io/region,ZONE:.metadata.labels.topology\.kubernetes\.io/zone' ``` Документация Talos: https://docs.siderolabs.com/kubernetes-guides/advanced-guides/node-labels (там же сказано, что `topology.kubernetes.io/region` и `zone` — из разрешённого для ноды набора, а role-метки `node-role.kubernetes.io/*` нода себе назначать не может).
hermes added 1 commit 2026-09-17 15:41:45 +00:00
fix(talos): node labels через KubeNodeConfig (Talos 1.14 убрал machine.nodeLabels)
Flate / Flate (pull_request) Blocked by required conditions
Flate / Flate - Success (pull_request) Blocked by required conditions
Flate / Flate - Filter (pull_request) Successful in 5s
472ecb5e6b
hermes closed this pull request 2026-09-17 16:34:05 +00:00

Pull request closed

This pull request cannot be reopened because the branch was deleted.
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: grachevko/home-ops#4