What's new in chart-v0.25.0
Nothing in the chart moves but the image. No template changes, no values.yaml key is added or removed, the shipped PrometheusRule is untouched, and the rendered perf-sentinel.toml is byte-for-byte what chart-v0.24.0 rendered, same 5477 bytes and the same digest. appVersion moves to 0.25.0 and image.tag follows it to :0.25.0.
What moves inside the pod
An incident carrying a namespace froze the findings of its service in every namespace. On a cluster where each tenant runs the same service in its own namespace, a rollout that fired one alert per namespace recorded one incident per namespace, each holding every tenant's findings. The freeze now leaves out a finding whose k8s.namespace.name grouping attribute names another namespace, and keeps one that carries no such attribute. The chart sets no [detection] grouping_attributes, so the daemon's default list applies, and it puts k8s.namespace.name first: nothing to change in config.toml unless you override that list. The daemon warns at startup when [daemon.incidents] is enabled without the attribute.
GET /api/incidents takes findings=false, which returns each incident without its frozen findings and with finding_count in their place, by id as well as by page. The default response is unchanged, so perf-sentinel query incidents and the Incidents tab of perf-sentinel query monitor see no difference.
The v0.25.0 binary notes describe both.
Upgrade impact
- Pods roll on the image.
helm upgradereplaces them becauseappVersionandimage.tagmove together. - An incident with a namespace freezes fewer findings. Findings that name another namespace no longer land in it. Incidents already recorded, in the ring or the
[daemon.incidents] archive_pathfile, keep what they froze. checksum/configmoves too, and not because your configuration changed. The renderedperf-sentinel.tomlis identical, but the ConfigMap carrieshelm.sh/chartandapp.kubernetes.io/versionlabels that bump with the chart, so the checksum over it differs on every version bump.- The example findings dashboard lives outside this chart and moves to
version12. ItsIncidentstable asks withfindings=falseand readsfinding_count, where it pulled every frozen finding of 50 incidents on each refresh, which Grafana's Infinity backend parser inflated past a 1 GiB memory limit until Grafana was OOM-killed. It still counts the findings of a daemon that ignores the parameter, and__inputsis unchanged. Re-import it wherever you provision it.
Install
The chart is published as an OCI artifact on GHCR, install it directly with no helm repo add step:
helm install perf-sentinel oci://ghcr.io/robintra/charts/perf-sentinel --version 0.25.0Upgrade an existing release:
helm upgrade perf-sentinel oci://ghcr.io/robintra/charts/perf-sentinel --version 0.25.0Read docs/HELM-DEPLOYMENT.md for the ServiceMonitor section, sizing and Ingress postures.
If you are upgrading from chart-v0.23.0 or earlier, read the chart-v0.24.0 notes first: that release raises the default workload.statefulset.persistence.size to 2Gi, which an existing StatefulSet does not pick up on its own. From chart-v0.18.0 or earlier, read the chart-v0.19.0 notes as well: that release adds a grouping label to five metrics and is breaking for an unaggregated alert on any of them. From chart-v0.16.0 or earlier, the chart-v0.17.0 notes change the shipped PrometheusRule.
Full Changelog: chart-v0.24.0...chart-v0.25.0