Skip to content

[K8S][HELM] Support container security context and StatefulSet annotations - #7790

Closed
akirn wants to merge 1 commit into
apache:masterfrom
akirn:helm-container-security-context-and-statefulset-annotations
Closed

akirn wants to merge 1 commit into
apache:masterfrom
akirn:helm-container-security-context-and-statefulset-annotations

Conversation

@akirn

@akirn akirn commented Oct 18, 2026

Copy link
Copy Markdown
Contributor

Why are the changes needed?

The chart only exposes a pod-level securityContext. Fields such as allowPrivilegeEscalation, readOnlyRootFilesystem and capabilities exist only on the container securityContext, so clusters whose admission policies require them (for example Pod Security Standards "restricted", or Kyverno/Gatekeeper equivalents) can't run the chart without patching the template. This adds a containerSecurityContext value applied to the kyuubi-server container, as the Apache Polaris and Dagster charts already offer.

It also adds an annotations value for the StatefulSet's own metadata. podAnnotations only reaches the pod template, but some controllers read the workload's annotations. For example, Stakater Reloader' secret.reloader.stakater.com/reload must be on the StatefulSet to roll the pods when a TLS keystore Secret is renewed, since the Kyuubi server reads its keystore only at startup.

Both values default to {}, so the rendered output is unchanged for existing users.

How was this patch tested?

The chart has no unit tests, so this was checked by rendering:

  1. helm lint charts/kyuubi passes.
  2. With default values, helm template t charts/kyuubi is byte-identical to master.
  3. With both values set:
helm template t charts/kyuubi -s templates/kyuubi-statefulset.yaml --set-json 'annotations={"secret.reloader.stakater.com/reload":"kyuubi-tls"}' --set-json
  'containerSecurityContext={"allowPrivilegeEscalation":false,"readOnlyRootFilesystem":true,"runAsNonRoot":true,"capabilities":{"drop":["ALL"]}}'
  the annotation renders under the StatefulSet's `metadata.annotations` and the security context under the `kyuubi-server` container. The output passes `kubectl apply --dry-run=client`.

Was this patch assisted by generative AI tooling?

No. The patch wasn't assisted. The description was.

cc @pan3793 @dnskr

@github-actions

Copy link
Copy Markdown

Hello @akirn,
Thanks for finding the time to submit the Pull request, the Kyuubi community thanks you!
We really appreciate the community's efforts to improve Apache Kyuubi.
If you are new to Apache Kyuubi for code changes, please take some time to read our contributing guide.

@dnskr dnskr self-assigned this Oct 25, 2026
@dnskr dnskr added this to the v1.13.0 milestone Oct 25, 2026
@dnskr dnskr closed this in 07a5a96 Oct 25, 2026
dnskr pushed a commit that referenced this pull request Oct 25, 2026
…tefulSet annotations

### Why are the changes needed?

The chart only exposes a pod-level `securityContext`. Fields such as `allowPrivilegeEscalation`, `readOnlyRootFilesystem` and `capabilities` exist only on the container `securityContext`, so clusters whose admission policies require them (for example Pod Security Standards "restricted", or Kyverno/Gatekeeper equivalents) can't run the chart without patching the template. This adds a `containerSecurityContext` value applied to the `kyuubi-server` container, as the Apache Polaris and Dagster charts already offer.

It also adds an `annotations` value for the StatefulSet's own metadata. `podAnnotations` only reaches the pod template, but some controllers read the workload's annotations. For example, Stakater Reloader' `secret.reloader.stakater.com/reload` must be on the StatefulSet to roll the pods when a TLS keystore Secret is renewed, since the Kyuubi server reads its keystore only at startup.

Both values default to `{}`, so the rendered output is unchanged for existing users.

### How was this patch tested?

The chart has no unit tests, so this was checked by rendering:

1. `helm lint charts/kyuubi` passes.
2. With default values, `helm template t charts/kyuubi` is byte-identical to master.
3. With both values set:
```
helm template t charts/kyuubi -s templates/kyuubi-statefulset.yaml --set-json 'annotations={"secret.reloader.stakater.com/reload":"kyuubi-tls"}' --set-json
  'containerSecurityContext={"allowPrivilegeEscalation":false,"readOnlyRootFilesystem":true,"runAsNonRoot":true,"capabilities":{"drop":["ALL"]}}'
  the annotation renders under the StatefulSet's `metadata.annotations` and the security context under the `kyuubi-server` container. The output passes `kubectl apply --dry-run=client`.
```
### Was this patch assisted by generative AI tooling?
No. The patch wasn't assisted. The description was.

 cc pan3793 dnskr

Closes #7790 from akirn/helm-container-security-context-and-statefulset-annotations.

Closes #7790

2477b1a [andreas.kirn] [K8S][HELM] Support container security context and StatefulSet annotations

Authored-by: Andreas Kirn <andreas.kirn@servicenow.com>
Signed-off-by: Denis Krivenko <dnskrv88@gmail.com>
(cherry picked from commit 07a5a96)
Signed-off-by: Denis Krivenko <dnskrv88@gmail.com>
@dnskr

dnskr commented Oct 25, 2026

Copy link
Copy Markdown
Contributor

Hi @akirn, thank you for taking the time to improve Kyuubi with this valuable addition to the Helm chart!

Merged to master and branch-1.12.

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.

2 participants