Skip to content

fix(deploy): hcloud server-limit wedges the ENTIRE merge queue (autoscaler snapshot build needs a free server slot)Β #2419

Description

@devantler

πŸ€– Generated by the Daily AI Assistant

Problem

Every merge_group πŸš€ Deploy to Prod run fails while ensuring the autoscaler Talos snapshot:

βœ— failed to apply updates: failed to ensure autoscaler config secret: looking up snapshot image for
autoscaler secret: failed to ensure Talos snapshot: talos snapshot build failed: creating the temporary
server failed: server limit reached (resource_limit_exceeded)

The snapshot build spins up a temporary hcloud server, but the project is at its server limit (10 servers: 3 control-plane + 3 static workers + 4 autoscale-cx33). With no free slot the temp server can't be created, so the snapshot (Talos v1.13.5, schematic df884f4f…) never builds.

This wedges the ENTIRE merge queue, not just Talos-config PRs. deploy-prod ensures the autoscaler config secret on every deploy, and that ensure step always looks up (and, when missing, builds) the snapshot image β€” independent of what the PR changed. Live proof today: it evicted #2416 and #2417 (Talos-config), and also #2418 β€” a workflows-only pin bump with a zero manifest diff β€” all with the identical resource_limit_exceeded on schematic df884f4f. So the earlier "non-Talos/workflows-only PRs still merge" assumption was wrong.

Acute impact: main is currently red (the TODOs workflow, healed by #2418β†’actions v9.0.0) and there is no path to green until a server slot frees, because #2418 itself cannot clear the queue. The autoscale pool has decayed 7β†’4 nodes (VPA recovery is underway) but is still at the project limit.

Proposed directions (pick one/combine)

  1. Raise the hcloud project server limit by a couple of slots (maintainer-only account action) β€” immediate unblock; the v1.13.5 snapshot builds once, then is reused and pressure eases.
  2. Check for / clean orphaned temp snapshot-build servers from prior failed builds accumulating against the limit (needs hcloud access).
  3. Pre-build/cache the Talos snapshot out-of-band (scheduled job, or make deploy reuse an existing image and only build when genuinely absent) so the prod hot path never has to create a temp server against a full project β€” the durable fix (ksail deploy-mechanism hardening).
  4. Shed over-provisioning β€” the node inflation is the underlying cause; continue letting VPA/autoscaler decay so a slot frees naturally.

Rough size

S–M. Direction 1/2 is a one-off maintainer/account action (immediate); 3 is deploy-mechanism hardening in ksail; 4 is operational and already trending down.

Impact

Blocks all merges to main (queue fully wedged) and keeps main red until a server slot frees. Highest-priority acute blocker.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    βœ… Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions