Conversation
There was a problem hiding this comment.
Pull request overview
This PR extends the Kyverno Helm chart to support opt-in PodSpec scheduling/runtime controls across all four controller Deployments (admission, background, cleanup, reports) by exposing schedulerName and runtimeClassName as both global defaults and per-controller overrides, consistent with the existing priorityClassName pattern.
Changes:
- Added
global.schedulerNameandglobal.runtimeClassName, plus per-controllerschedulerName/runtimeClassNamevalues for all controllers. - Wired the new values into each controller Deployment PodSpec using the same guarded rendering pattern used for
priorityClassName. - Regenerated the chart README values table to document the new settings.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| charts/kyverno/values.yaml | Adds global + per-controller schedulerName and runtimeClassName values with empty-string defaults. |
| charts/kyverno/templates/admission-controller/deployment.yaml | Conditionally renders schedulerName and runtimeClassName into the admission controller PodSpec. |
| charts/kyverno/templates/background-controller/deployment.yaml | Conditionally renders schedulerName and runtimeClassName into the background controller PodSpec. |
| charts/kyverno/templates/cleanup-controller/deployment.yaml | Conditionally renders schedulerName and runtimeClassName into the cleanup controller PodSpec. |
| charts/kyverno/templates/reports-controller/deployment.yaml | Conditionally renders schedulerName and runtimeClassName into the reports controller PodSpec. |
| charts/kyverno/README.md | Documents the new values in the generated chart values table. |
3120cd5 to
7c575a8
Compare
7c575a8 to
7fdaa6c
Compare
| # -- Global scheduler name used to schedule the pods. Non-global values will override the global value. | ||
| schedulerName: '' | ||
|
|
||
| # -- Global runtime class name applied to the pods. Non-global values will override the global value. | ||
| runtimeClassName: '' |
There was a problem hiding this comment.
You're right about the default semantics — | default .Values.global.* treats an empty string as unset, so a per-controller "" won't disable a non-empty global value.
I kept the wording as-is deliberately, for consistency: these two entries mirror the existing global.priorityClassName directly above them, which uses the identical | default .Values.global.priorityClassName pattern and the identical description (added in #15712). Rewording only the two new lines would leave three entries with identical semantics described three different ways.
Happy to go either way if a maintainer prefers:
- leave as-is (current) — consistent with the established convention, or
- reword all three
global.*entries together — accurate, but touches a line outside this PR's scope.
Just let me know which you'd prefer.
| | global.schedulerName | string | `""` | Global scheduler name used to schedule the pods. Non-global values will override the global value. | | ||
| | global.runtimeClassName | string | `""` | Global runtime class name applied to the pods. Non-global values will override the global value. | |
There was a problem hiding this comment.
Same as the values.yaml thread — replied there. Note this README table is generated by helm-docs from the values.yaml comments, so it isn't hand-edited; it would follow automatically from whichever wording we settle on.
e8703a7 to
7aba370
Compare
a9691bb to
8f2d63f
Compare
|
Gentle ping — this has been open for four weeks with no human review yet. It's a small, self-contained chart change (+64/−0): @realshuting @fjogeleit — would one of you have a moment to take a look? Happy to rebase if you'd prefer the branch up to date before merging. |
8f2d63f to
ae1ea95
Compare
…roller pods Signed-off-by: somaz <genius5711@gmail.com>
99a3c25 to
66fac88
Compare
|
Correction to my ping above: I said "all checks green", which wasn't right. The workflow runs on this PR have never actually executed — they're all sitting at action_required waiting for a first-time-contributor approval, and the ones from 30 Jul show as failures only because they expired unrun (0 jobs each). So there's no test failure here, but there's no CI signal either, and I shouldn't have implied there was. Could a maintainer approve the queued runs? That's the only thing standing between this and a real signal. I've left the branch alone rather than rebasing to clear the behind label, since a new head just re-arms the gate — that's happened six times already, most recently when kyverno-pr-updater merged main on 18 Aug. @realshuting @fjogeleit — could one of you take a look? |
Explanation
Adds two optional pod-spec fields —
schedulerNameandruntimeClassName— to all four Kyverno controllers (admission, background, cleanup, reports). They let operators run the Kyverno pods with a non-default scheduler or under a specific RuntimeClass (e.g. gVisor / Kata), which some clusters require for sandboxing or custom scheduling. This is an additive, opt-in change: both fields are exposed as aglobal.*default plus per-controller overrides, mirroring the existingpriorityClassNamepattern, and default to an empty string so existing installs render identically.Related issue
No existing issue; this mirrors the existing
priorityClassName/topologySpreadConstraintsvalues to complete the pod scheduling/runtime surface across the controllers.Documentation (required for features)
The new values are self-documented in the chart README via helm-docs (regenerated with helm-docs v1.14.2). Happy to open a kyverno/website PR if maintainers prefer the values pages updated too.
What type of PR is this
/kind feature
Proposed Changes
global.schedulerName/global.runtimeClassName+ per-controller overrides (<controller>.schedulerName|runtimeClassName | default .Values.global.*) for admission / background / cleanup / reports controllers, mirroringpriorityClassName.{{- with ... }}/{{ . | quote }}guard aspriorityClassName.make codegen-helm-docs.Validation:
helm templatedefault render byte-identical tomainct lint --charts charts/kyvernopassed