[helm] `render-jaas-config` init container has no resources, so SASL-enabled pods can never reach Guaranteed QoS
- Dominant language
- Java
- Stars
- 2.1k
- Forks
- 625
- Avg merge
- 3d 14h
- Merged PRs (30d)
- 97
Description
### Search before asking
- [x] I searched in the [issues](https://github.com/apache/fluss/issues) and found nothing similar.
### Description
### Problem
The Helm chart's JAAS init container has no `resources` block.
It is defined in `helm/templates/_jaas.tpl` (`fluss.security.jaas.initContainer`, the `render-jaas-config` container) and rendered into both StatefulSets (`sts-coordinator.yaml`, `sts-tablet.yaml`) whenever `fluss.security.jaas.required` evaluates true, i.e. on every SASL-enabled install.
Kubernetes computes the pod Quality of Service (QoS) class over init containers as well as regular containers. A container with no requests and limits makes the whole pod `Burstable`, even when every main container sets `requests == limits`.
So a SASL enabled Fluss cluster cannot reach `Guaranteed` QoS, whatever the user puts in `values.yaml` `resources`. The `Guaranteed` matters for benchmark and production placement: it puts the server pods last in the eviction order under node pressure.
There is no workaround through values: `coordinator.initContainers` / `tablet.initContainers` only append extra containers, they cannot modify the chart-injected one.
### Proposal
Give the container `requests == limits`.
Two options:
1. A fixed small default (for example `100m` CPU / `128Mi` memory). The container only runs `envsubst` plus two file copies, so a small constant is safe. Downside: it contradicts the chart's stated policy of not defaulting`resources`.
2. A values knob, for example `security.jaasInitContainer.resources`, empty by default, applied to the container when set. This matches the existing `resources: {}` philosophy and is fully backwards compatible.
Either way the pod's effective request does not grow for scheduling: init containers run before the main containers, and the scheduler uses `max(any init container, sum of main containers)`, so any value at or below the main container's size changes nothing except the QoS class.
### Willingness to contribute
- [x] I'm willing to submit a PR!
Contributor guide
No contributing guide indexed for this repository
Research direction
Start in helm/templates/_jaas.tpl at fluss.security.jaas.initContainer and inspect how the render-jaas-config container is rendered into sts-coordinator.yaml and sts-tablet.yaml when JAAS is required. Review the chart's existing resources values and rendering checks, then verify a SASL-enabled render gives the init container the intended resource behavior without changing ordinary installs.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- helm, kubernetes
- Domain
- devops, infrastructure
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 68/100