Skip to content

config: support per-node kubelet policy - #200

Merged
Zariel merged 2 commits into
mainfrom
agent/per-node-kubelet
Aug 5, 2026
Merged

config: support per-node kubelet policy#200
Zariel merged 2 commits into
mainfrom
agent/per-node-kubelet

Conversation

@Zariel

@Zariel Zariel commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • add a bounded node-specific native KubeletConfiguration input
  • apply it through kubeadm's node-local patch path without updating the shared kubelet ConfigMap
  • expose effective values, provenance, generated paths, schema help, and kubeadm-aware diff classification

Why

Specialized kubelet policy previously required cluster-wide native kubeadm configuration or writing Katl-owned runtime paths. This gives each node a supported upstream-native surface while preserving Katl's ownership and rollout safety boundaries.

Add a bounded native KubeletConfiguration input on individual nodes and
compile it into a node-local kubeadm patch. Carry local intent through
generation metadata so online reconciliation never uploads the overlay
cluster-wide, and expose the effective input through validation, schema,
resolve, diff, and operator documentation.
@Zariel
Zariel enabled auto-merge (squash) August 5, 2026 21:09
@Zariel
Zariel disabled auto-merge August 5, 2026 21:09
@greptile-apps

greptile-apps Bot commented Aug 5, 2026

Copy link
Copy Markdown

Greptile Summary

The PR adds bounded per-node native kubelet configuration and carries its node-local mode through bundle compilation, inventory, and kubeadm-aware application without updating shared cluster configuration.

  • Adds validation, layering, provenance, inspection, and diff classification for node-specific kubelet inputs.
  • Generates and applies node-local kubeadm patches during bootstrap and online reconciliation.
  • Restores compatibility with bundles that predate the new node-local annotation by preserving the historical false default.

Confidence Score: 5/5

The PR appears safe to merge because the previously reported compatibility regression is fixed and no blocking failure remains.

No blocking failure remains; absent node-local kubelet metadata now retains the historical false behavior, and focused regression coverage exercises that contract.

Important Files Changed

Filename Overview
internal/installer/configbundle/consume.go Decodes node-local kubelet metadata while correctly defaulting an absent annotation to the legacy non-node-local behavior.
internal/installer/configbundle/bundle.go Packages node-specific kubeadm input and consistently records whether its kubelet configuration is node-local.
internal/installer/configbundle/kubeadm.go Builds bounded per-node kubelet plans and generated kubeadm patch material.
internal/installer/clusterplan/compile.go Propagates the selected node-local kubelet mode into compiled inventory.
internal/katlc/agent/kubeadm_control_plane_config.go Applies node-local kubelet changes through kubeadm patches while enforcing request and active-generation consistency.
cmd/katlctl/kubeadm_control_plane_config.go Marks node-local kubelet operations and suppresses coordinator upload for that mode.
internal/installer/configbundle/bundle_test.go Covers per-node kubelet bundle generation, validation, and compatibility with missing legacy annotations.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  A[Node kubelet configFile] --> B[Validate native KubeletConfiguration]
  B --> C[Compile node-specific kubeadm plan]
  C --> D[Bundle annotation and inventory flag]
  D --> E[Node-local kubeadm patch path]
  E --> F[Refresh local kubelet configuration]
  F --> G[Restart kubelet and verify node health]
  E -. no upload .-> H[Shared kubelet ConfigMap]
Loading

Reviews (2): Last reviewed commit: "config: default missing kubelet mode met..." | Re-trigger Greptile

Comment thread internal/installer/configbundle/consume.go Outdated
Treat bundles that predate the node-local kubelet annotation as ordinary
cluster-wide kubeadm inputs. Explicit malformed annotation values remain
rejected, and a regression test covers the absent-field fallback.
@Zariel
Zariel enabled auto-merge (squash) August 5, 2026 21:16
@Zariel
Zariel merged commit 51c23a4 into main Aug 5, 2026
6 checks passed
@Zariel
Zariel deleted the agent/per-node-kubelet branch August 5, 2026 21:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant