Skip to content

perf-sentinel chart v0.2.29

Choose a tag to compare

@github-actions github-actions released this 06 May 20:59
· 543 commits to main since this release

What's new in chart-v0.2.29

This is a daemon-version-only chart bump: appVersion advances from 0.5.25 to 0.5.26, the default image.tag now resolves to ghcr.io/robintra/perf-sentinel:0.5.26, and the artifacthub.io/images annotation is updated in lockstep so the Artifact Hub listing advertises the matching image. No chart-level template diff, no values.yaml schema change, no new RBAC, no new optional ConfigMap or Secret. The chart-v0.2.28 surface is preserved byte-for-byte.

The 0.5.26 daemon image starts the soft deprecation of eight legacy top-level configuration keys that have been silently shadowing their [detection] and [daemon] section equivalents since the early versions. The keys are n_plus_one_threshold, window_duration_ms, listen_addr, listen_port, max_active_traces, trace_ttl_ms, max_events_per_trace, max_payload_size. Behavior is preserved bit-for-bit, the sectioned form keeps winning over the flat form when both are set, and configurations using only the section form stay completely silent. What changes is the signal: when an operator's mounted .perf-sentinel.toml only carries the flat form, perf-sentinel now logs a WARN-level event at config load (and at every daemon restart) pointing to the recommended sectioned key.

From a chart perspective, this surface is automatic. The [daemon.ack] ConfigMap-and-Secret plumbing renders the same TOML body as before, no new template, no new key required. Operators who mount a custom .perf-sentinel.toml via the chart's daemon.config value (or a sidecar ConfigMap) and use the flat form will see one WARN event per deprecated key per pod boot in the daemon's structured logs. The event carries tracing fields legacy_key and replacement alongside the human-readable message, so log shippers can count occurrences per flat or alert on operators who still ship deprecated configurations without regex extraction. Cardinality is bounded at eight, one event per legacy key per Config::from(RawConfig) call. No values.yaml change is required to silence the warnings, the migration is a config-file edit (or sectioned values in the chart's daemon.config block).

Three of the eight keys migrate to a renamed sectioned key (n_plus_one_threshold to [detection] n_plus_one_min_occurrences, listen_addr to [daemon] listen_address, listen_port to [daemon] listen_port_http), the other five keep the same name under their section. The full migration table with before/after examples is in docs/CONFIGURATION.md and the FR mirror.

The HTTP API surface, the v0.5.21 ack Prometheus counters, the v0.5.23 [daemon.cors] config section, the v0.5.25 Scaphandre scrape counters on /metrics, the ServiceMonitor rendering, the NetworkPolicy rendering, and the optional [daemon.ack] ConfigMap-and-Secret plumbing all keep their prior contracts. A helm upgrade from chart-v0.2.28 to chart-v0.2.29 is metadata-only: the new image rolls out, the daemon restarts, and operators using the sectioned config see no log line from this release.

Changed

  • appVersion bumped from 0.5.25 to 0.5.26, default image.tag now resolves to ghcr.io/robintra/perf-sentinel:0.5.26. The artifacthub.io/images annotation tracks the bump.
  • No chart-level config change. values.yaml, every template, the ServiceMonitor rendering, the NetworkPolicy rendering, the optional [daemon.ack] ConfigMap-and-Secret plumbing, the optional [daemon.cors] plumbing, and the ack-toml-baseline mount are byte-for-byte identical to chart-v0.2.28.

Behavior

  • WARN-level deprecation events on the daemon stdout when the mounted .perf-sentinel.toml carries any of the eight legacy flat keys without a section override. The event contains structured tracing fields legacy_key (the deprecated top-level key) and replacement (the recommended sectioned path, for example [detection] n_plus_one_min_occurrences). Operators using only the sectioned format see no behavior change and no log output from this release.
  • Resolution priority is preserved bit-for-bit. When both the flat and the sectioned form are set for the same setting, the sectioned form wins exactly as before, no warning is emitted in that case. When neither form is set, the default applies silently. Existing helm install and helm upgrade flows produce the same effective daemon configuration as on chart-v0.2.28.
  • No HTTP-shape change on the daemon side. The three ack endpoints, the v0.5.21 ack /metrics counters, the v0.5.25 Scaphandre scrape counters, the /api/findings, /api/status, /api/correlations, /api/explain/*, /api/export/report routes, and every other route keep their v0.5.25 status codes and JSON shapes. Existing scrapers, dashboards, and automation continue to work without adjustment.
  • No upgrade hook required, no on-disk migration. The runtime ack store JSONL schema is unchanged. A helm upgrade from chart-v0.2.28 keeps the daemon's existing acks.jsonl intact, the daemon replays and atomically rewrites it at startup as it did before.
  • Removal is not scheduled for a specific version. The flat form will be removed from the daemon binary in a future release once the community has had time to migrate. The current contract is "warn only", with no hard error or runtime rejection. helm upgrade flows pinning chart-v0.2.29 today will keep working through the deprecation window without operator intervention.

Install

helm install perf-sentinel oci://ghcr.io/robintra/charts/perf-sentinel --version 0.2.29

Upgrade an existing release:

helm upgrade perf-sentinel oci://ghcr.io/robintra/charts/perf-sentinel --version 0.2.29

Migrating a deprecated .perf-sentinel.toml mounted via the chart. Before:

n_plus_one_threshold = 5
listen_port = 4318
max_payload_size = 2097152

After:

[detection]
n_plus_one_min_occurrences = 5

[daemon]
listen_port_http = 4318
max_payload_size = 2097152

See docs/CONFIGURATION.md "Deprecated keys" for the full migration table covering all eight legacy flats.

Full Changelog: chart-v0.2.28...chart-v0.2.29