aicam opened a new pull request, #6609: URL: https://github.com/apache/texera/pull/6609
> ⚠️ **Review-only PR — opened so the diff is easy to review on GitHub, then closed immediately. Not intended for merge as-is.** ### What changes were proposed in this PR? Roadmap item 3 from #5891 — **core-services node placement + autoscaler safety** — ported to the `base`/`aws`/`on-prem` layout. Two complementary, opt-in-by-default mechanisms so a cluster autoscaler (e.g. Karpenter) can reclaim idle nodes while core services stay available: 1. **`coreServices` placement** (`values.yaml`): a `nodeSelector` + `tolerations`, **empty by default** (no-op for local / on-prem), wired into the always-on singleton **computing-unit manager**. An AWS overlay pins it onto a dedicated core-services node pool so it never blocks consolidation of a transient node. 2. **PodDisruptionBudgets** (`maxUnavailable: 1`) for the replicated, stateless app services (webserver, access-control, agent, config, file, litellm, workflow-compiling) — new `templates/base/pod-disruption-budgets/app-service-pdbs.yaml`. They stay continuously available while remaining relocatable. Deliberately **not** using `karpenter.sh/do-not-disrupt`: on replicated services it blocks consolidation, and on singletons it can pin a node indefinitely (orphaned capacity). PDBs + node placement give the protection without that side effect. Stateful/session-affine services (`shared-editing-server`, `pylsp`) are excluded from PDBs since eviction would drop per-connection state. `values-aws.yaml` gains an example `coreServices` pin (node-pool label + toleration). ### Any related issues, documentation, discussions? Part of #5891 (item 3 of 6). Follows the object-storage work (#5932, #6295) and the template reorg (#5757). Ports a design validated downstream. ### How was this PR tested? `helm lint` passes. Rendered default vs AWS overlay: ```bash cd bin/k8s && helm dependency build # default: placement is a no-op (0 nodeSelector/tolerations on cu-manager) helm template test . | grep -c 'nodeSelector' # cu-manager: 0 # AWS overlay: cu-manager pinned, PDBs present helm template test . -f values-aws.yaml | grep 'texera.io/node-pool' ``` - **Default render:** cu-manager pod spec unchanged (empty `coreServices` renders nothing); the 7 app-service PDBs render (inert on a static cluster — a PDB only gates *voluntary* evictions). - **AWS overlay render:** cu-manager carries the `nodeSelector` + `toleration`; all 7 PDBs present. **Open question for reviewers:** the 7 PDBs render unconditionally (they change the default render by adding 7 inert objects). Happy to gate them behind a flag if the "default render strictly unchanged" guarantee should cover them too. ### Was this PR authored or co-authored using generative AI tooling? Generated-by: Claude Code (Claude Opus 4.8) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
