[0.0.24] - 2026-02-26
Enhanced
- Comprehensive AKS check improvements and message quality
- Improved all AKS best-practice checks with more actionable recommendations (Azure CLI snippets, implementation guidance, and remediation context).
- Expanded AKS failure messages with clearer risk/impact context (security, availability, performance, and compliance implications).
Technical Details
- AKS check files updated:
- Private/aks/checks/SecurityChecks.ps1
- Private/aks/checks/IdentityAndAccessChecks.ps1
- Private/aks/checks/NetworkingChecks.ps1
- Private/aks/checks/ResourceManagementChecks.ps1
- Private/aks/checks/BestPracticesChecks.ps1
- Private/aks/checks/DisasterRecoveryChecks.ps1
- Private/aks/checks/MonitoringLoggingChecks.ps1
Added
-
Prometheus node sizing insights (
PROM006)- Added a new capacity check that classifies nodes as
Underutilized,Right-sized, orSaturatedusing p95 CPU/memory trends from Prometheus. - Added configurable sizing thresholds in
kubebuddy-config.yaml:node_sizing_downsize_cpu_p95node_sizing_downsize_mem_p95node_sizing_upsize_cpu_p95node_sizing_upsize_mem_p95
- Added a new capacity check that classifies nodes as
-
Prometheus pod sizing insights (
PROM007)- Added per-container recommendations for CPU/memory requests and memory limits using p95 usage.
- CPU limit recommendation defaults to
none, with explicit rationale included in findings output. - Added configurable pod sizing knobs:
pod_sizing_profile(conservative|balanced|aggressive)pod_sizing_compare_profilespod_sizing_target_cpu_utilizationpod_sizing_target_mem_utilizationpod_sizing_cpu_request_floor_mcorespod_sizing_mem_request_floor_mibpod_sizing_mem_limit_buffer_percent
-
Profile comparison mode for pod sizing
- Added optional comparison mode to emit all three profiles in HTML and JSON outputs.
- Added an HTML selector on
PROM007findings to filter by profile. - Kept CLI/text output focused on the single active profile for readability.
-
Gateway API networking checks
- Added
NET013to flag Ingress usage where Gateway API resources are not yet adopted. - Added
NET014to detect HTTPRoutes with missing parentRefs or not Accepted by any parent Gateway. - Added
NET015to detect Gateways that have no attached HTTPRoutes.
- Added
Changed
-
Minimum Prometheus history gate for sizing recommendations
PROM006andPROM007now require at least 7 days of Prometheus history before recommendations are emitted.- When history is insufficient, reports show explicit informational rows indicating required vs available days.
- Improved history-span detection to use cluster-level coverage queries, reducing false low
Available Daysvalues in high pod-churn environments.
-
PROM007 output simplification and UX
- Reduced pod sizing findings columns to core current-vs-recommended CPU/memory request/limit values.
- Removed action/rationale columns from findings table; CPU-limit rationale remains in the recommendation section.
- Kept multi-profile comparison support and improved profile selector behavior in HTML reports.
- Updated sizing analysis to a fixed 7-day window for Prometheus reliability, and surfaced the active window in check summaries.
- Added PROM007 findings filters for
NamespaceandProfilein HTML; pagination now respects these filters. - Updated PROM007 current request/limit values to read directly from live pod specs, improving reliability when kube-state-metrics resource series are unavailable.
- Updated all HTML paginations to compact mode with ellipses for large page counts, reducing oversized pager rows.
- Updated PROM007 to suppress rows where recommendations do not materially differ from current values, and sort remaining rows by highest potential sizing impact first.
- Optimized Prometheus sizing queries to reduce query-memory pressure (429 responses): added label aggregation for pod sizing and fixed lower-cost 7-day query windows.
-
AKS best-practice output improvements
- Added
ObservedValueto AKS check results and surfaced it in CLI, text, HTML, and JSON outputs. - Updated AKS HTML view to group findings by category in collapsible sections for easier remediation workflows.
- Removed the extra outer "Show Findings" wrapper so category sections are visible immediately.
- Added
-
Multi-output report generation
- Updated
Invoke-KubeBuddyto support generating multiple outputs (-HtmlReport,-txtReport,-jsonReport) in a single run using one shared data collection pass. - Added YAML check-result caching across output modes to avoid re-running checks when generating HTML + JSON in the same invocation.
- Updated
-
Networking deprecation handling
- Switched data collection/check flow to prefer
EndpointSliceand avoid always querying deprecatedv1 Endpointson modern Kubernetes versions. - Retained legacy
Endpointsfallback only when needed.
- Switched data collection/check flow to prefer
-
HTML dark-mode readability fixes
- Improved contrast for overview cards and summary surfaces:
- black text on orange backgrounds
- black text on blue info/default cards
- fixed warning progress-bar label contrast
- fixed low-contrast hover text in passed/failed status box
- improved Top-5
+ ptstext visibility
- fixed compatibility warning banner text contrast on orange backgrounds
- updated PROM007 filter labels/dropdowns and pagination controls to use on-brand styling with light/dark theme support
- Improved contrast for overview cards and summary surfaces:
-
Namespace exclusion controls
-ExcludeNamespacesnow correctly honors configuredexcluded_namespaces.- Added
-AdditionalExcludedNamespacesto merge extra runtime namespaces with configured exclusions for a single invocation.
Fixed
- Module import parser issue
- Fixed truncated syntax in
Private/aks/checks/NetworkingChecks.ps1that preventedImport-Module .\KubeBuddy.psm1 -Force.
- Fixed truncated syntax in
- WRK001 findings table rendering
- Removed
Format-TablefromWRK001script output so HTML/JSON render proper columns instead of PowerShell formatting metadata fields.
- Removed
- Recommendation URL rendering stability
- Fixed a null-array indexing error in recommendation docs-link display-name parsing when a URL has an empty/short path.
- PROM007 memory unit conversion
- Fixed decimal memory quantity conversion (
K/M/G/T/P/E) to MiB for current request/limit display, correcting values like1500Mfrom1.5 Mito ~1430.5 Mi.
- Fixed decimal memory quantity conversion (
- AKS cached object reuse error
- Fixed duplicate-member error by making AKS
KubeDatanote-property assignment idempotent (Add-Member -Force) during multi-output runs.
- Fixed duplicate-member error by making AKS
- Secret reference false positives (
SEC016)- Updated check logic to ignore optional secret references (
optional: true) forsecretKeyRef,envFrom.secretRef, andvolume.secret.
- Updated check logic to ignore optional secret references (
- Prometheus timeout resiliency
- Standardized Prometheus query behavior to use configurable timeout and retry settings across summary metrics, YAML Prometheus checks, and sizing insights (
PROM006/PROM007). - Added consistent retry logging so timeout failures are clearer in CLI output.
- Standardized Prometheus query behavior to use configurable timeout and retry settings across summary metrics, YAML Prometheus checks, and sizing insights (
- Prometheus sizing history gate accuracy
- Updated
PROM006/PROM007history coverage queries to use cluster-level series for day-span detection, avoiding false lowAvailable Daysvalues in high pod-churn environments.
- Updated
Docs
- Updated docs for:
- Prometheus integration and sizing guidance (
PROM006/PROM007) - new sizing thresholds and profile options in
kubebuddy-config.yaml - checks reference entries for new Prometheus sizing checks
- Prometheus integration and sizing guidance (