Skip to content

feat(base-cluster/kyverno): allow setting kyverno resources#1986

Merged
cwrau merged 1 commit intomainfrom
feat/base-cluster/allow-setting-kyverno-resources
Mar 12, 2026
Merged

feat(base-cluster/kyverno): allow setting kyverno resources#1986
cwrau merged 1 commit intomainfrom
feat/base-cluster/allow-setting-kyverno-resources

Conversation

@cwrau
Copy link
Copy Markdown
Member

@cwrau cwrau commented Feb 12, 2026

chore: migrate kyverno config

Summary by CodeRabbit

  • New Features

    • Enhanced Kyverno cluster deployment with pod disruption budgets for improved availability.
    • Extended OAuth proxy authentication configuration with resource allocation options.
  • Chores

    • Optimized resource management by consolidating resource definitions and adding critical priority scheduling for Kyverno controllers.
    • Set resource presets and constraints for improved cluster performance.

Copilot AI review requested due to automatic review settings February 12, 2026 10:56
@cwrau cwrau requested a review from teutonet-bot as a code owner February 12, 2026 10:56
@cwrau cwrau enabled auto-merge February 12, 2026 10:56
@gemini-code-assist
Copy link
Copy Markdown

Summary of Changes

Hello @cwrau, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request refactors the Kyverno configuration within the base-cluster Helm chart to provide greater flexibility and control over its resource allocation and operational parameters. By centralizing resource definitions and applying them consistently across all Kyverno controllers, it streamlines management and allows for fine-tuning performance based on deployment needs. This change enhances the chart's configurability and ensures better resource utilization for the Kyverno components.

Highlights

  • Kyverno Resource Configuration: The Kyverno chart now allows for explicit resource (CPU/memory) configuration for its controllers (admission, background, reports, cleanup) via the values.yaml file, leveraging a common resource template.
  • Controller-Specific Settings: The priorityClassName and podDisruptionBudget settings have been moved from a global Kyverno configuration to be applied individually to each Kyverno controller, providing more granular control.
  • Schema Updates: The values.schema.json has been updated to include resources and resourcesPreset properties under the Kyverno configuration, enabling validation for the new resource settings.
  • Default Resource Preset: A default resourcesPreset of nano and specific memory/CPU requests have been added to the values.yaml for Kyverno, optimizing its resource consumption by default.
Changelog
  • charts/base-cluster/templates/kyverno/kyverno.yaml
    • Removed top-level priorityClassName, podDisruptionBudget, replicaCount, resources, and initResources definitions.
    • Moved priorityClassName to be configured individually for admissionController, backgroundController, reportsController, and cleanupController.
    • Moved podDisruptionBudget to be configured under admissionController.
    • Introduced a shared resources definition using common.resources template and applied it to all Kyverno controllers.
  • charts/base-cluster/values.schema.json
    • Added resources property with a reference to #/defs/resourceRequirements under the Kyverno schema.
    • Added resourcesPreset property with a reference to #/defs/resourcesPreset under the Kyverno schema.
  • charts/base-cluster/values.yaml
    • Added resourcesPreset: nano to the Kyverno configuration.
    • Added default resources requests for memory (64Mi) and CPU (100m) under the Kyverno configuration.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Feb 12, 2026

📝 Walkthrough

Walkthrough

Kyverno Helm configuration enhanced with system-critical priority classes, pod disruption budgets, and resource management constraints. Resource definitions consolidated via YAML anchors, with schema validation and default values added for resource requirements and presets.

Changes

Cohort / File(s) Summary
Kyverno HelmRelease Template
charts/base-cluster/templates/kyverno/kyverno.yaml
Added priorityClassName: system-cluster-critical to all controllers. Introduced podDisruptionBudget for admission controller with minAvailable: 1. Consolidated resource definitions using YAML anchors for reuse across background, reports, and cleanup controllers. Removed legacy standalone PDB and large default resource blocks.
Schema and Values Configuration
charts/base-cluster/values.schema.json, charts/base-cluster/values.yaml
Extended OAuth proxy authentication schema with resourcesPreset and resources properties. Added default resource constraints (resourcesPreset: nano, resources.requests: {memory: 64Mi, cpu: 100m}) to kyverno configuration.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Suggested reviewers

  • tasches
  • teutonet-bot
  • marvinWolff

Poem

🐰 Hops of joy through resource lands,
Pod disruptions now at bay,
Priority marked with critical hands,
Anchors keep the config tidy and neat,
Kyverno's feast is now complete!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat(base-cluster/kyverno): allow setting kyverno resources' directly and clearly describes the main change: enabling resource configuration for Kyverno in the base-cluster chart.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/base-cluster/allow-setting-kyverno-resources

Tip

Issue Planner is now in beta. Read the docs and try it out! Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR migrates Kyverno configuration in the base-cluster Helm chart to allow configuring Kyverno resource requests/limits (and a preset) via the chart’s values.yaml, with schema support.

Changes:

  • Add kyverno.resourcesPreset and kyverno.resources defaults to charts/base-cluster/values.yaml.
  • Extend charts/base-cluster/values.schema.json to validate the new Kyverno resource fields.
  • Update the Kyverno HelmRelease values to apply resources (and priorityClass/PDB placement) across Kyverno controllers.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
charts/base-cluster/values.yaml Adds default Kyverno resource preset + requests.
charts/base-cluster/values.schema.json Adds schema entries for kyverno.resources and kyverno.resourcesPreset.
charts/base-cluster/templates/kyverno/kyverno.yaml Wires resource configuration into Kyverno controller values (but currently has a blocking bug in how common.resources is called).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread charts/base-cluster/templates/kyverno/kyverno.yaml
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@charts/base-cluster/templates/kyverno/kyverno.yaml`:
- Line 76: The resources helper is being called with only
.Values.kyverno.resources which omits resourcesPreset and causes presets (e.g.,
nano) to be ignored; update the include call to pass the whole kyverno values
object instead (use include "common.resources" .Values.kyverno | nindent 8) so
the common.resources helper receives both .resources and .resourcesPreset; keep
the surrounding key (resources:) and nindent 8 unchanged.

Comment thread charts/base-cluster/templates/kyverno/kyverno.yaml
Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request makes Kyverno resources configurable, which is a good improvement. However, the changes introduce two potential issues. Firstly, the resource configuration for the critical Kyverno init container has been removed, which could lead to startup failures. Secondly, the new default resource values for Kyverno's main containers are significantly lower than before and lack memory limits, posing a risk of instability and OOMKills for this essential cluster component. I have provided two review comments with high severity to address these concerns, including code suggestions to rectify them.

Comment thread charts/base-cluster/templates/kyverno/kyverno.yaml
Comment thread charts/base-cluster/values.yaml
@cwrau cwrau added this pull request to the merge queue Mar 12, 2026
Merged via the queue into main with commit 71b9db4 Mar 12, 2026
38 of 39 checks passed
@cwrau cwrau deleted the feat/base-cluster/allow-setting-kyverno-resources branch March 12, 2026 08:35
github-merge-queue Bot pushed a commit that referenced this pull request Mar 17, 2026
🤖 I have created a release *beep* *boop*
---


##
[11.1.0](base-cluster-v11.0.1...base-cluster-v11.1.0)
(2026-03-16)


### Features

* **base-cluster/ingress:** add auto detection of need for proxy
protocol
([#1951](#1951))
([a94de1a](a94de1a))
* **base-cluster/ingress:** allow external ingress controller
([#1859](#1859))
([1442431](1442431))
* **base-cluster/kyverno:** allow setting kyverno resources
([#1986](#1986))
([71b9db4](71b9db4))
* **base-cluster/monitoring:** add alert about base-cluster updates
([#1937](#1937))
([a3c63a7](a3c63a7))
* **base-cluster/monitoring:** add alert about deprecated APIs
([#2021](#2021))
([cb334dd](cb334dd))


### Bug Fixes

* **base-cluster/deadMansSwitch:** fix alertmanager healthchecks URL
([#2019](#2019))
([d874a56](d874a56))
* **base-cluster/ingress:** disable traefik apiCheck
([#1902](#1902))
([d45bd69](d45bd69))
* **base-cluster/ingress:** they now have the redirections nested under
http
([#1952](#1952))
([dca2502](dca2502))
* **base-cluster/monitoring:** adjust for short-lived certificates
([#1921](#1921))
([41062b2](41062b2))
* **base-cluster/monitoring:** only roll out alloy tracing ports if
enabled
([#2005](#2005))
([ea44c4d](ea44c4d))
* **base-cluster:** Revert "chore(base-cluster/dependencies): update
helm release traefik to v39
([#1936](#1936))"
([#1954](#1954))
([5d2ae36](5d2ae36))


### Miscellaneous Chores

* **base-cluster/dependencies:** update common docker tag to v1.8.0
([#1939](#1939))
([38b1c7e](38b1c7e))
* **base-cluster/dependencies:** update docker.io/curlimages/curl docker
tag to v8.18.0
([#1896](#1896))
([f046977](f046977))
* **base-cluster/dependencies:** update
docker.io/grafana/grafana-image-renderer docker tag to v5.0.13
([#1885](#1885))
([474e903](474e903))
* **base-cluster/dependencies:** update
docker.io/grafana/grafana-image-renderer docker tag to v5.2.3
([#1897](#1897))
([84b647b](84b647b))
* **base-cluster/dependencies:** update
docker.io/grafana/grafana-image-renderer docker tag to v5.3.0
([#1922](#1922))
([ef6f80f](ef6f80f))
* **base-cluster/dependencies:** update
docker.io/grafana/grafana-image-renderer docker tag to v5.4.0
([#1931](#1931))
([50171d8](50171d8))
* **base-cluster/dependencies:** update
docker.io/grafana/grafana-image-renderer docker tag to v5.5.0
([#1968](#1968))
([ee276e2](ee276e2))
* **base-cluster/dependencies:** update
docker.io/grafana/grafana-image-renderer docker tag to v5.5.1
([#1988](#1988))
([f765f5e](f765f5e))
* **base-cluster/dependencies:** update docker.io/vladgh/gpg docker tag
to v1.3.7
([#1886](#1886))
([4b2c33b](4b2c33b))
* **base-cluster/dependencies:** update helm release alloy to v1.5.2
([#1891](#1891))
([41b25e9](41b25e9))
* **base-cluster/dependencies:** update helm release alloy to v1.5.3
([#1949](#1949))
([d8bda90](d8bda90))
* **base-cluster/dependencies:** update helm release alloy to v1.6.0
([#1975](#1975))
([76632e4](76632e4))
* **base-cluster/dependencies:** update helm release external-dns to
v1.20.0
([#1905](#1905))
([ff53477](ff53477))
* **base-cluster/dependencies:** update helm release
kube-prometheus-stack to v80.13.3
([#1892](#1892))
([9775868](9775868))
* **base-cluster/dependencies:** update helm release
kube-prometheus-stack to v80.14.4
([#1906](#1906))
([f62458d](f62458d))
* **base-cluster/dependencies:** update helm release
kube-prometheus-stack to v81
([#1923](#1923))
([9e9915d](9e9915d))
* **base-cluster/dependencies:** update helm release
kube-prometheus-stack to v81.2.1
([#1934](#1934))
([30fa0dd](30fa0dd))
* **base-cluster/dependencies:** update helm release
kube-prometheus-stack to v81.3.2
([#1950](#1950))
([95a9398](95a9398))
* **base-cluster/dependencies:** update helm release
kube-prometheus-stack to v81.5.0
([#1962](#1962))
([1a9bab8](1a9bab8))
* **base-cluster/dependencies:** update helm release
kube-prometheus-stack to v81.5.2
([#1982](#1982))
([07c2249](07c2249))
* **base-cluster/dependencies:** update helm release
kube-prometheus-stack to v81.6.6
([#1989](#1989))
([2bf4f3c](2bf4f3c))
* **base-cluster/dependencies:** update helm release
kube-prometheus-stack to v82
([#1995](#1995))
([45ef213](45ef213))
* **base-cluster/dependencies:** update helm release loki to v6.49.0
([#1908](#1908))
([f36dd6d](f36dd6d))
* **base-cluster/dependencies:** update helm release loki to v6.51.0
([#1928](#1928))
([6ac27d6](6ac27d6))
* **base-cluster/dependencies:** update helm release loki to v6.53.0
([#1974](#1974))
([0bc6e68](0bc6e68))
* **base-cluster/dependencies:** update helm release oauth2-proxy to v10
([#1913](#1913))
([7e551b5](7e551b5))
* **base-cluster/dependencies:** update helm release oauth2-proxy to
v10.1.1
([#1944](#1944))
([3f97108](3f97108))
* **base-cluster/dependencies:** update helm release oauth2-proxy to
v10.1.2
([#1961](#1961))
([c0bc91d](c0bc91d))
* **base-cluster/dependencies:** update helm release oauth2-proxy to
v10.1.3
([#1979](#1979))
([9b95c4b](9b95c4b))
* **base-cluster/dependencies:** update helm release oauth2-proxy to
v10.1.4
([#2001](#2001))
([8ffa211](8ffa211))
* **base-cluster/dependencies:** update helm release reflector to v10
([#1924](#1924))
([0051c34](0051c34))
* **base-cluster/dependencies:** update helm release reflector to
v10.0.19
([#1999](#1999))
([a2b5189](a2b5189))
* **base-cluster/dependencies:** update helm release reflector to
v10.0.2
([#1935](#1935))
([333393e](333393e))
* **base-cluster/dependencies:** update helm release reflector to
v10.0.4
([#1956](#1956))
([3eef9a0](3eef9a0))
* **base-cluster/dependencies:** update helm release reflector to
v10.0.8
([#1978](#1978))
([b2f97f9](b2f97f9))
* **base-cluster/dependencies:** update helm release reflector to
v9.1.45
([#1893](#1893))
([ff100d9](ff100d9))
* **base-cluster/dependencies:** update helm release tempo to v1.24.3
([#1904](#1904))
([99099bf](99099bf))
* **base-cluster/dependencies:** update helm release tempo to v1.24.4
([#1957](#1957))
([7d67bf3](7d67bf3))
* **base-cluster/dependencies:** update helm release tempo to v1.26.1
([#1976](#1976))
([517da93](517da93))
* **base-cluster/dependencies:** update helm release tempo to v1.26.7
([#2000](#2000))
([6cabd54](6cabd54))
* **base-cluster/dependencies:** update helm release traefik to v38
([#1914](#1914))
([106c7cf](106c7cf))
* **base-cluster/dependencies:** update helm release traefik to v39
([#1936](#1936))
([5b39257](5b39257))
* **base-cluster/dependencies:** update helm release traefik to v39
([#1959](#1959))
([6efe111](6efe111))
* **base-cluster/dependencies:** update helm release traefik to v39.0.1
([#1992](#1992))
([27d7316](27d7316))
* **base-cluster/monitoring:** migrate helm repo to new URL
([#1955](#1955))
([9263d6a](9263d6a))
* **base-cluster/tetragon:** update flux apiVersion
([#1900](#1900))
([ff93afb](ff93afb))
* **base-cluster:** update kyverno
([#1918](#1918))
([a503ef6](a503ef6))
* migrate kyverno config
([71b9db4](71b9db4))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants