Skip to content

fix(autoscaler): leave a Hetzner server free for the Talos snapshot build - #268

Merged
devantler merged 1 commit into
mainfrom
claude/autoscaler-snapshot-slot-267
Oct 25, 2026
Merged

devantler merged 1 commit into
mainfrom
claude/autoscaler-snapshot-slot-267

Conversation

@devantler

Copy link
Copy Markdown
Contributor

Why

KSail refuses to load the template's production cluster settings, so a new platform cannot create its production cluster and a platform that kept these settings cannot deploy to it. The settings let the cluster use every server it is allowed and leave none for the temporary server KSail needs while preparing node images.

What

The production cluster now tops out at one server fewer, keeping the same fixed nodes and allowing up to two extra nodes on demand instead of three, so KSail accepts the settings again. The autoscaling guide now gives the real node counts and explains why one server stays free.

Fixes #267

🤖 Generated with Claude Code

…uild

KSail v7.202.70 rejects the template's production settings: 3 control
planes, 4 static workers and 3 autoscaler slots reach the default limit of
10 servers and leave none for the temporary server that builds the Talos
snapshot, so `ksail cluster create` and `ksail cluster update` stop at
config load. Cap the cluster at 9 nodes and bring the autoscaling guide in
line with the 4 static workers and the reserved slot.

Fixes #267

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@codex review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-25T02:21:59.228644Z 3c9983e Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. 🚀

Reviewed commit: 3c9983e022

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer (interactive Claude Code session)

Ready for merge at 3c9983e. Review: Codex completed at this head with no findings ("Didn't find any major issues", reviewed commit 3c9983e022). CodeRabbit's included review for this repository was used up until about 02:36Z (stated on #266). 0 review threads.

  • Tried as the platform owner would hit it: loaded ksail.prod.yaml through KSail v7.202.70's own validated configuration loader, the path ksail cluster create and ksail cluster update take, using a scratch harness inside a KSail checkout. It contacts no cluster.
    • main (control): fails, "autoscaler configuration leaves no Hetzner server slot for the Talos snapshot build: reachableTotal(10) … serverLimit(10)".
    • This head: loads cleanly. Control-plane and worker machine configs validate (22/16 documents), and the only remaining output is KSail's existing advisory about the install-image patch.
    • Current main (b13d8f0, with fix(talos): start new platforms on Kubernetes v1.36.4 and Talos v1.13.11 #266's new Talos/Kubernetes pins), alone: still fails with the same error. With this change applied: loads cleanly with Talos v1.13.11, kubelet v1.36.4 and the installer at v1.13.11. That is the config a new platform gets once both are merged.
  • Why 9: 3 control planes and 4 static workers are kept. The pools still allow 3 autoscaled nodes, but the cluster total stops at 9, so one of the 10 default Hetzner servers stays free for KSail's temporary snapshot-build server. The field description in KSail (serverLimit: "Validation rejects configs whose reachable total … exceeds it") matches this reading.
  • Docs: the autoscaling guide now gives the real counts (4 static workers; it said 3) and explains the reserved slot.
  • Checks: all required checks pass. ksail workload validate for prod passes locally.
  • Not verified: a real Hetzner create, because the template runs no cluster by design. Existing platforms own their ksail.prod.yaml, so they need the same one-line edit (noted on New production platforms fail KSail's config check: no server left for the snapshot build #267).

@devantler
devantler marked this pull request as ready for review October 25, 2026 02:22
@devantler
devantler requested a review from a team as a code owner October 25, 2026 02:22
@devantler
devantler merged commit 080691e into main Oct 25, 2026
18 checks passed
@devantler
devantler deleted the claude/autoscaler-snapshot-slot-267 branch October 25, 2026 02:23
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.

New production platforms fail KSail's config check: no server left for the snapshot build

1 participant