What's new in chart-v0.17.1
One template changes and values.yaml gains one key. appVersion stays on 0.17.0, so no image moves and no pod rolls: this is a chart-only release, and it fixes a label collision between the ServiceMonitor and the daemon it scrapes.
The service label was being renamed
Prometheus Operator attaches its own target labels to every ServiceMonitor endpoint, one of them named service and taken from the Service name. With honor_labels off, which is the default, Prometheus renames a colliding label the target exposes:
exposed by the daemon perf_sentinel_service_io_ops_total{service="checkout"}
stored by Prometheus {service="<release fullname>", exported_service="checkout"}
The Grafana dashboard this repo ships reads that metric. Its Service variable offered the release name as its only value, and its per-service I/O panel collapsed every analysed service into a single line. Found on an install running the shipped chart, not in a lab.
The endpoint now sets honorLabels: true, through the new serviceMonitor.honorLabels key.
What it moves, and what it leaves alone
- One metric.
perf_sentinel_service_io_ops_totalis the only series the daemon exposes carrying aservicelabel of its own. Honor labels settles a collision rather than replacing anything, so every other metric still takes the operator'sservicefrom the target, and whatever routes or groups on that label is untouched. - There is no second collision. The daemon exposes no
job,instance,namespace,pod,endpointorcontainerlabel, so the operator's own keep landing as before, and thenamespacelabel comes from the scrape either way. upis produced by the scrape, not by the daemon, soPerfSentinelDownreads exactly what it read inchart-v0.17.0. None of the five shipped alerts selects onservice.
Upgrade impact
- A query written against the broken shape stops matching.
perf_sentinel_service_io_ops_total{service="<release fullname>"}comes back empty, with the real service names in its place. Grep your own panels and rules for it before upgrading. - Stored series are not rewritten. Samples scraped before the upgrade keep their
exported_serviceand the first scrape after it is correct, so a dashboard opened on a long range shows both shapes until the old part of the range ages out. - No pod rolls. The image tag falls back to
.Chart.AppVersion, still0.17.0, so the pod spec and itschecksum/configannotation are unchanged. The ServiceMonitor is the only object rewritten. - Reverting is one key.
serviceMonitor.honorLabels: falseputs the operator's labels back in front, and the previous behaviour with them. - A no-op without the operator.
serviceMonitor.enabled: falserenders no ServiceMonitor, so nothing in this release reaches that install.
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.17.1Upgrade an existing release:
helm upgrade perf-sentinel oci://ghcr.io/robintra/charts/perf-sentinel --version 0.17.1Read docs/HELM-DEPLOYMENT.md for the ServiceMonitor section, sizing and Ingress postures. The daemon image does not move on this release, so the v0.17.0 binary notes still describe what runs in the pod.
If you are upgrading from chart-v0.16.0 or earlier, read the chart-v0.17.0 notes first: that release drops the shipped PrometheusRule from seven alerts to five and is breaking for prometheusRule.enabled: true.
Full Changelog: chart-v0.17.0...chart-v0.17.1