What's new in chart-v0.27.0
appVersion moves to 0.27.0 and image.tag follows it to :0.27.0. No template, values.yaml key or schema changes. Under the default values the rendered perf-sentinel.toml differs from what chart-v0.26.3 rendered by comments only, 5353 bytes against 5036: the configuration the daemon loads is the same. The other manifest changes are the image, the version labels and checksum/config.
What moves inside the pod
The daemon can now put every read of its query API behind a key. [daemon] require_read_key = true, set through config or fragments, makes every GET and HEAD under /api answer 401 unless the request carries [daemon] read_api_key (PERF_SENTINEL_READ_API_KEY) or the write key the route already accepts, as X-API-Key or Authorization: Bearer. It is off by default, so a release that does not set it behaves as before. /metrics, /health and OTLP ingest stay outside the gate, so probes, the ServiceMonitor and the collectors keep working.
The comments of the default config.toml and of the ingress block in values.yaml now describe the switch. The ingress comment no longer claims that every other read stays open, which is false once the switch is on.
The perf-sentinel CLI in the image gains login, logout and hub for PerfSentinelHub 0.4.0, and query --api-key-file on every subcommand. Its SARIF logs and the footer of its TUI point at the repository's new home.
The v0.27.0 binary notes describe the changes.
Upgrade impact
- Pods roll on the image.
helm upgradereplaces them becauseappVersionandimage.tagmove together. - Turning
require_read_keyon cuts off every reader without the key. The Hub source needsAuthHeaderName=X-API-KeyandAuthHeaderValue=<read_api_key>, or it shows unreachable. Grafana datasources,perf-sentinel query, the live HTML report and the JetBrains plugin need it too, and earlier plugin releases send none. Behind an Ingress, every reader that goes through it needs the key as well. - A daemon with the switch on but no read key, or with
[daemon.cors] allowed_origins = ["*"], does not start. The config load fails and the pod stays inCrashLoopBackOff. checksum/configmoves, and not because your configuration changed. The renderedperf-sentinel.tomldiffers by comments only, and the ConfigMap carrieshelm.sh/chartandapp.kubernetes.io/versionlabels that bump with the chart.- No
values.yamlkey is added or removed, no template changes, and the shippedPrometheusRuleis untouched.
Verifying this chart
Charts signed before the move carry the original account's identity, so the regex accepts both owners:
cosign verify \
--certificate-identity-regexp '^https://github.com/(robintra|Institut-du-Numerique-Responsable)/perf-sentinel/\.github/workflows/helm-release\.yml@refs/tags/chart-v' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
ghcr.io/institut-du-numerique-responsable/charts/perf-sentinel:0.27.0
helm pull oci://ghcr.io/institut-du-numerique-responsable/charts/perf-sentinel --version 0.27.0
gh attestation verify perf-sentinel-0.27.0.tgz \
--repo Institut-du-Numerique-Responsable/perf-sentinelcosign 3.0 or newer is required, the signature is an OCI 1.1 referrer bundle.
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/institut-du-numerique-responsable/charts/perf-sentinel --version 0.27.0Upgrade an existing release:
helm upgrade perf-sentinel oci://ghcr.io/institut-du-numerique-responsable/charts/perf-sentinel --version 0.27.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.26.3...chart-v0.27.0