Skip to content

Upgrade all dependencies to latest versions - #86

Open
kondratyevd wants to merge 11 commits into
mainfrom
upgrade-dependency-versions
Open

Upgrade all dependencies to latest versions#86
kondratyevd wants to merge 11 commits into
mainfrom
upgrade-dependency-versions

Conversation

@kondratyevd

Copy link
Copy Markdown
Collaborator

Upgrades all pinned SuperSONIC dependencies to their latest released versions (as of 2026-09-01).

Component images

Component Old New
Triton server (default + site values + SDK test jobs) 26.04 26.08
Envoy v1.30.9 v1.39.1
OpenTelemetry Collector contrib image 0.120.0 0.159.0
Python helper images (admission server, metrics collector) 3.11-slim 3.14-slim

Helm chart dependencies

Chart Old New App version
grafana 8.9.0 10.5.15 Grafana 12.3.1
prometheus 27.3.0 29.27.0 Prometheus v3.14.0
tempo 1.18.2 1.24.4 Tempo 2.9.0
opentelemetry-collector 0.115.0 0.172.0 0.159.0

Chart.lock regenerated with helm dependency update.

Not changed: fastml/triton-torchgeo references stay at 26.04-py3-geometric — that is still the newest published tag.

Compatibility notes

  • Prometheus chart 28.0 moved serverFiles scrape configs to a new scrapeConfigs map — does not affect us, since SuperSONIC supplies its entire Prometheus config via configMapOverrideName. Our scrape config is compatible with Prometheus 3.x, and useExistingClusterRoleName / releaseNamespace / configMapOverrideName all still exist in chart 29.
  • Grafana chart 10.0 breaking change only affects alerting.*.files, which we do not use.
  • Envoy v1.39: all extensions used in the generated config (HCM, Lua, jwt_authn, local_ratelimit, router, OpenTelemetry tracer, upstream TLS) are stable v3 APIs, unchanged since v1.30.
  • Verified locally: helm lint, helm template with default values, and a full render with values-minimal-full.yaml (all components enabled) — new image tags appear correctly in the rendered manifests.

🤖 Generated with Claude Code

kondratyevd and others added 11 commits September 1, 2026 12:43
- Triton server: 26.04 -> 26.08 (default image, SDK test jobs, site values)
- Envoy: v1.30.9 -> v1.39.1
- Grafana chart: 8.9.0 -> 10.5.15 (Grafana 12.3.1)
- Prometheus chart: 27.3.0 -> 29.27.0 (Prometheus v3.14.0)
- Tempo chart: 1.18.2 -> 1.24.4 (Tempo 2.9.0)
- OpenTelemetry Collector chart: 0.115.0 -> 0.172.0, contrib image 0.120.0 -> 0.159.0
- Python helper images: 3.11-slim -> 3.14-slim

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Tempo chart 1.24 moved the HTTP listen/service port from 3100 to Tempo's
standard 3200; update the Grafana datasource URL and Prometheus scrape
config accordingly. Also dump pod state and logs in ci-full when a step
fails, so readiness timeouts are debuggable.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Tempo 2.9 rejects the flat metrics_generator_processors key inside
overrides.defaults ("field defaults not found in type
overrides.legacyConfig"), causing a CrashLoopBackOff. Use the nested
metrics_generator.processors form expected by the new overrides format.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Fail fast with a migration message when site values still use the
  legacy tempo.tempo.overrides.defaults.metrics_generator_processors
  key, which Tempo 2.9 rejects at startup after helm merges it into
  the new-format defaults.
- Rename otel-collector exporters otlp/otlphttp -> otlp_grpc/otlp_http
  (chart 0.172 rewrites the old names only via a shim scheduled for
  removal) and migrate spanmetrics dimensions_cache_size to
  aggregation_cardinality_limit.
- Migrate Envoy removal-track fields: admin.access_log_path ->
  admin.access_log, cluster-level http2_protocol_options ->
  typed_extension_protocol_options (template + external-config test).
- Pin the Tempo HTTP port via tempo.tempo.server.http_listen_port and
  read it in the Prometheus scrape config, so a tempo chart default
  change can no longer silently desync the port.
- Single-source the python helper image: metricsCollector.image value
  replaces the hardcoded template pin, and the dead template-side
  default for scaleFromZero.admissionImage is removed.
- Pin metrics-collector requirements (flask 3.1.3, requests 2.34.2,
  gunicorn 26.2.0) and add a CI readiness wait for its pod.
- Harden the CI diagnostics step (no early abort under bash -e, use
  events instead of describe, silence --previous errors) and run
  Cleanup with if: always().

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- spanmetrics: aggregation_cardinality_limit 1000 -> 0; the migrated key
  is a hard cardinality cap (overflow folding), not a cache like the old
  dimensions_cache_size, so 0 preserves pre-migration behavior.
- Validate tempo port consistency: fail render when
  tempo.tempo.server.http_listen_port != 3200 (the tempo subchart
  hardcodes Service/probes to 3200) or when the Grafana tempo datasource
  URL uses another port; drop the dead `default 3200` in the scrape
  template and document the constraint.
- Add a /health readinessProbe to the metrics-collector so its CI
  readiness wait (and production rollouts) actually gate on the runtime
  pip install + gunicorn startup.
- Fail fast with `required` when admission/metrics-collector images are
  set to empty strings.
- Move metrics-collector requirements to cfg/requirements.txt (loaded
  via .Files.Get like serve.py, visible to dependency tooling) and pin
  the full transitive closure.
- Deduplicate the Envoy HttpProtocolOptions block behind a named
  template; comment the deliberate dns_refresh_rate scope cut.
- Extract failure diagnostics into a reusable composite action
  (.github/actions/k8s-diagnostics) with per-container termination
  reasons and KEDA state; use it in ci-full and ci-external-config,
  and make ci-external-config cleanup run with if: always().

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Fix the tempo datasource validator both ways: only datasources
  pointing at this chart's tempo service are validated, and those must
  match the exact expected URL (substring check passed :32000 and
  external Tempo URLs were wrongly rejected).
- Gate the legacy-overrides guard on tempo.enabled so stale values keys
  no longer fail renders for disabled Tempo.
- Remove the must-be-3200 http_listen_port pseudo-knob from values:
  the port is now a supersonic.tempoHttpPort template constant consumed
  by the scrape config, with a guard kept for values passed straight to
  the subchart; validator messages reduced to one line each.
- k8s-diagnostics action: add Deployment status dump (restores the
  describe-deploy signal), split so/hpa queries so a missing KEDA CRD
  no longer swallows HPA output, stop suppressing their stderr; mirror
  the same diagnostics in ci-local.sh; ci-installation Cleanup now runs
  with if: always().
- Add __pycache__/ to .helmignore; note in cfg/requirements.txt that
  the runtime pip install is a stopgap (bake a metricsCollector.image
  for air-gapped/production use).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The 26.08-py3-sdk image pull alone can exceed 5 minutes on a cold
runner (observed via the new failure diagnostics); ci-full already
uses 800s for the same job.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants