Repository navigation
fix(crossview): stop auto-vpa OOM-killing the dashboard under load - #2472
Conversation
Crossview idles at ~14Mi but a dashboard load lists Crossplane resources cluster-wide and spikes to ~240Mi+. The Kyverno auto-vpa VPA (controlledValues: RequestsAndLimits) right-sizes the memory request to the idle histogram and, preserving the authored limit:request ratio, drags the limit down with it; at the chart's default 4:1 ratio a transient-low request recommendation pins the limit near ~400Mi, below the burst, and the pod is OOMKilled mid-request. Every dashboard widget then shows "Error loading" so Crossview looks like it lost kube-API access (SA token, RBAC and network are all fine). Author resources explicitly with a wide 8:1 memory ratio (256Mi request / 2Gi limit), mirroring the homepage HelmRelease's fix for the same auto-vpa footgun. VPA still scales the request to the working set, but the preserved 8:1 ratio keeps the limit generous at every request level, absorbing the burst. The limit is a ceiling, not a reservation; auto-vpa maxAllowed (6Gi) remains the leak guard. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
📝 WalkthroughWalkthroughThis change updates the Crossview HelmRelease configuration to explicitly define resource requests and limits for the application: requests of 250m CPU and 256Mi memory, and limits of 1 CPU and 2Gi memory. It also adds inline documentation explaining a memory sizing issue related to auto-VPA behavior and the reasoning behind the chosen request-to-limit ratio to avoid burst-time OOM kills. Changes
Sequence Diagram(s)Not applicable — this change is a configuration/documentation update with no code execution flow to diagram. Estimated code review effort: 1 (Low) Related issues: None specified. Related PRs: None specified. Suggested labels: kubernetes, configuration Suggested reviewers: None specified. Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Comment |
|
🎉 This PR is included in version 1.98.3 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
Why
The Crossview dashboard (crossview.platform.devantler.tech) shows "Error loading" on every Crossplane widget and looks like it has lost Kubernetes API access. It hasn't — the pod is repeatedly OOM-killed while a dashboard loads. Crossview sits near-empty at idle, but a dashboard load lists Crossplane resources cluster-wide and briefly needs ~17× that memory; the cluster's auto-VPA had right-sized its memory limit down toward the idle footprint, so the pod dies mid-request and every widget fails.
What
Give Crossview an explicit, generous memory limit so the auto-VPA keeps enough burst headroom — the same fix already applied to the homepage dashboard for this exact VPA behaviour. No new dependency and no behaviour change; requests are unchanged so it reserves no extra node memory at idle, and the VPA's 6Gi cap still guards against leaks.
Operational: own PR — needs a direct merge after promotion.