Skip to content

Release v0.4.0 with admission-time eviction holds - #1

Merged
kylan11 merged 2 commits into
mainfrom
feat/eviction-hold
Aug 7, 2026
Merged

Release v0.4.0 with admission-time eviction holds#1
kylan11 merged 2 commits into
mainfrom
feat/eviction-hold

Conversation

@kylan11

@kylan11 kylan11 commented Aug 7, 2026

Copy link
Copy Markdown
Member

Summary

  • replace owned PodDisruptionBudgets with an always-on fail-open eviction admission hold
  • remove pin detection and the janitor, and add a leader-gated legacy PDB migration sweep
  • preserve webhook certificates across upgrades and rename the webhook for enforcement
  • rename hold metrics and document the new failure posture

Compatibility

  • understudy_pdb_relaxed_total becomes understudy_hold_relaxed_total
  • understudy_node_pinned_total is removed
  • signals.evictionWebhook*, signals.pinDetection, and failsafe values are retired; webhook settings move to webhook.*
  • *-eviction-observer becomes *-eviction-hold

Validation

  • envtest, lint, build, Helm lint/template, and old-values rendering
  • live staging: same-node hold, clear-node release, TTL relaxation, voluntary-only, off, fail-open, certificate reuse, and legacy PDB sweep

kylan11 added 2 commits August 7, 2026 14:05
A PodDisruptionBudget is pre-checked: every disrupter that dry-runs
budgets refuses to start while one blocks, which pins the node. The
same not-yet answer given at admission time is invisible until the
moment of the attempt, which is the one moment delay is expected and
retried by every drainer in existence.

Behind an understudy.sh/experimental-eviction-hold annotation on the
CR: no budget is created, and the observe-only eviction webhook gains
a hold: evictions of protected pods are answered with the same 429 a
budget would return until a stand-in is ready, the phase says Relaxed,
or hostage mode is off. Protection detection moves from owned-budget
lookup to resolving the Understudy that covers the pod, which both
modes need. The held attempt itself is the doom signal, so signal and
hold are one mechanism and the state machine is untouched.
@kylan11
kylan11 merged commit 7ac0e59 into main Aug 7, 2026
2 of 3 checks passed
@kylan11
kylan11 deleted the feat/eviction-hold branch August 7, 2026 13:34
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