Skip to content

v0.3.0-rc.1

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 24 Jun 06:54
· 130 commits to main since this release
67729be

What's Changed

  • docs(spec): revise specification per five-round design review by @AkashiSN in #2
  • feat: v0.2 skeleton — controller-runtime bootstrap, leader election, CI by @AkashiSN in #4
  • feat(policy): add config schema, maintenance-window, and ageThreshold derivation by @AkashiSN in #6
  • feat(selection): NodePool scope resolution + candidate selection (§3.2) by @AkashiSN in #8
  • feat(surge): placeholder Pod builder + headroom gate (§3.3, §5.2 step 3) by @AkashiSN in #10
  • feat(reconcile): rotation state machine — create/delete, freeze/cordon, drain (§5.2, §5.3) by @AkashiSN in #12
  • feat(metrics): Prometheus wiring for the §4.2 observability surface by @AkashiSN in #16
  • feat(chart): Helm chart for the v0.3 deployment surface (§4.3, §5.1, §5.4) by @AkashiSN in #18
  • perf(reconcile): watch placeholder Pod and Node to cut surge-readiness latency by @AkashiSN in #19
  • chore(ci): gate on gopls check (severity>=hint) by @AkashiSN in #20
  • feat(metrics): drain-phase duration_seconds histogram (§4.2, §5.3) by @AkashiSN in #22
  • fix(metrics): drop draining-at backfill; lock drain-anchor cleanup invariant (§4.2) by @AkashiSN in #23
  • fix(chart): grant update on nodes to match controller writes by @AkashiSN in #32
  • fix(controller): startup sweep for orphaned rotation artifacts (#25) by @AkashiSN in #33
  • fix(controller): preserve operator-owned do-not-disrupt during cleanup (#26) by @AkashiSN in #38
  • fix(controller): populate throughput inputs for schedule derivation by @AkashiSN in #39
  • fix(controller): exclude terminating placeholder from surge readiness by @AkashiSN in #41
  • fix(controller): include namespace in placeholder rollback exclusion by @AkashiSN in #42
  • fix(policy): reject non-positive surge duration settings by @AkashiSN in #43
  • fix(policy): reject explicit zero maxUnavailable in policy config by @AkashiSN in #44
  • chore(security): disable service account token automount on placeholder pods by @AkashiSN in #45
  • fix(surge): classify hostname affinity precisely for surge request sizing by @AkashiSN in #46
  • feat(surge): tolerate candidate NodePool taints on the surge placeholder by @AkashiSN in #47
  • fix(spec): drop reserved v2/v3 config fields from v1 examples by @AkashiSN in #51
  • fix(surge): honor numeric Gt/Lt NodePool requirements in placeholder parity by @AkashiSN in #52
  • fix(controller): surface non-fatal schedule findings and short-lead warnings by @AkashiSN in #53
  • fix(selection): anchor rotation lead time on per-NodeClaim terminationGracePeriod by @AkashiSN in #63
  • fix(surge): replicate candidate NodeClaim spec.requirements, not only node labels by @AkashiSN in #64
  • fix(surge): support Gte and Lte NodePool requirements when building placeholders by @AkashiSN in #65
  • fix(schedule): warn when E + tGP exceeds the Auto Mode 21d hard cap (§3.2 layer-1) by @AkashiSN in #66
  • fix(window): collapse worst-case period to ~0 for a full-week union by @AkashiSN in #67
  • feat(startup): fail fast when the required Karpenter v1 API surface is unavailable by @AkashiSN in #68
  • docs(compat): document the Karpenter v1 compatibility policy for EKS Auto Mode by @AkashiSN in #69
  • docs(readme): update project status for the v0.3 surge MVP by @AkashiSN in #70
  • docs(agents): update project status to the v0.3 MVP by @AkashiSN in #71
  • test(controller): cover the inducedClaim never-bound fallback by @AkashiSN in #83
  • test(controller): cover warning Event dedup transitions and Forget by @AkashiSN in #82
  • test(chart): assert rendered RBAC/PriorityClass and values.schema.json rejections by @AkashiSN in #84
  • test(controller): exercise production SetupWithManager watches under envtest by @AkashiSN in #85
  • test(chart): add expected-to-fail schema cases for placeholder.priorityClass.value=0 and warmup.enabled=true by @AkashiSN in #87
  • test(controller): add a multi-step end-to-end rotation lifecycle test by @AkashiSN in #88
  • perf(controller): benchmark and assess cluster-wide Pod list scalability by @AkashiSN in #89
  • docs(runbook): add production runbook and optional PrometheusRule alerts by @AkashiSN in #90
  • test: close defensive and boundary branch-coverage gaps by @AkashiSN in #91
  • feat(e2e): add KWOK-based Karpenter e2e harness for the surge mechanism by @AkashiSN in #94
  • feat(surge): make placeholder hostname exclusion a soft preference so Karpenter can provision new surge capacity by @AkashiSN in #97
  • test(e2e): add ephemeral EKS Auto Mode Terraform for real-cluster PoC by @AkashiSN in #98
  • chore: keep git worktrees under .worktrees/ inside the repo by @AkashiSN in #103
  • fix(controller): use just-stamped started-at to avoid stale-read readyTimeout misfire by @AkashiSN in #99
  • feat(controller): add debug-verbosity un-deduplicated reconcile/findings logging by @AkashiSN in #105
  • test(e2e): decouple KWOK surge assertion budget from the aging sleep to fix load-induced flake by @AkashiSN in #104
  • chore(tooling): pin CLI versions with aqua, replacing go install by @AkashiSN in #102
  • test(e2e): deliver PoC controller image to EKS Auto Mode via ECR by @AkashiSN in #107
  • docs(spec): record EKS Auto Mode PoC validation results in §7.2 by @AkashiSN in #108
  • fix(test): fail make test when envtest assets cannot be resolved by @AkashiSN in #112
  • docs(e2e): point EKS Auto Mode README invariant link to the spec by @AkashiSN in #113
  • docs: reflect EKS Auto Mode PoC validation results by @AkashiSN in #115
  • test(poc): validate capacity-absorb path on EKS Auto Mode (#109) by @AkashiSN in #116
  • test(poc): validate remaining deterministic PoC items on EKS Auto Mode (#109) by @AkashiSN in #117
  • chore(policy): drop warmup (v3) from roadmap and config schema by @AkashiSN in #121
  • feat(api): RotationPolicy CRD types, deepcopy, and manifests (#119 deliverable 1) by @AkashiSN in #126
  • feat(controller): read/watch RotationPolicy with targeting, conflict resolution, fallback (#119 deliverable 2) by @AkashiSN in #127
  • feat(controller): populate RotationPolicy status subresource (#119 deliverable 3) by @AkashiSN in #128
  • feat(helm): ship RotationPolicy CRD + sample, drop policy ConfigMap (#119 deliverable 4) by @AkashiSN in #129
  • test(policy): harden RotationPolicy resolution and CRD-schema coverage by @AkashiSN in #130
  • feat(release): tag-driven OCI distribution for chart + image by @AkashiSN in #132
  • chore(release): cut v0.3.0-rc.1 by @AkashiSN in #133

Full Changelog: https://github.com/AkashiSN/node-rotation-controller/commits/v0.3.0-rc.1