github kedacore/http-add-on v0.14.0

16 hours ago

Breaking Changes

Interceptor timeout defaults changed (#1474)

Default timeout behavior has been redesigned. KEDA_HTTP_REQUEST_TIMEOUT now defaults to 0 (disabled), KEDA_HTTP_RESPONSE_HEADER_TIMEOUT defaults to 300s (was 500ms), and KEDA_HTTP_READINESS_TIMEOUT defaults to 0 (disabled, was 20s). Timeout errors now return 504 instead of 502.

The following environment variables have been removed: KEDA_HTTP_TLS_HANDSHAKE_TIMEOUT, KEDA_HTTP_EXPECT_CONTINUE_TIMEOUT, KEDA_HTTP_KEEP_ALIVE, KEDA_HTTP_IDLE_CONN_TIMEOUT, KEDA_HTTP_DIAL_RETRY_TIMEOUT. These now use Go's DefaultTransport defaults.

Interceptor metrics redesigned (#1563, #1590)

Metrics now use bounded labels: path/host replaced by route_name/route_namespace, and non-standard HTTP methods are normalized to _OTHER. Metrics have also been renamed to follow OTel semantic conventions: interceptor_requests_totalinterceptor_request_count_total, interceptor_pending_requestsinterceptor_request_concurrency. Dashboards must be updated.

Highlights

New documentation (#1516)

The documentation has been completely rewritten and now lives at keda.sh/http-add-on. It features versioned docs, improved navigation, a quick start and guides for different personas (developers, cluster operators). The legacy in-repo docs have been removed.

InterceptorRoute CRD (#1532)

A new InterceptorRoute CRD separates routing/interceptor configuration from scaling configuration. HTTPScaledObject remains supported but is now deprecated — a warning is logged per resource to guide migration.

See the user guide and the migration guide for details.

Per-route timeout configuration (#1562)

InterceptorRoute supports per-route timeouts via the timeouts spec with request, responseHeader, and readiness fields. When unset, global env var defaults are used.

Migration helper: orphan-scaledobject annotation (#1593)

The new httpscaledobject.keda.sh/orphan-scaledobject annotation lets you preserve the auto-created ScaledObject when deleting an HTTPScaledObject during migration to InterceptorRoute, avoiding scaling gaps.

What's Changed

  • refactor: simplify responseWriter using Unwrap pattern by @linkvt in #1555
  • feat: implement InterceptorRoute CRD by @linkvt in #1532
  • refactor: extract endpoint resolution into dedicated middleware by @linkvt in #1558
  • chore(deps): update azure/setup-helm action to v5 by @renovate[bot] in #1561
  • chore(deps): update github actions by @renovate[bot] in #1560
  • refactor: move RPS calculation from interceptor to scaler by @Fedosin in #1557
  • refactor: add new e2e test suite by @linkvt in #1545
  • fix: reduce OTEL_METRIC_EXPORT_INTERVAL from 1ms to 5s by @linkvt in #1564
  • fix(deps): update go dependencies (non-major) (patch) by @renovate[bot] in #1566
  • chore(deps): update e2e dependencies by @renovate[bot] in #1565
  • fix(deps): update go dependencies (non-major) by @renovate[bot] in #1568
  • chore(deps): update github actions by @renovate[bot] in #1567
  • refactor: extract test cert generation into a shared helper by @linkvt in #1569
  • fix: resolve semgrep findings by @linkvt in #1570
  • feat: redesign interceptor metrics with bounded labels by @linkvt in #1563
  • chore(deps): update helm release opentelemetry-collector to v0.150.0 by @renovate[bot] in #1574
  • fix(deps): update module go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp to v0.68.0 by @renovate[bot] in #1576
  • chore: switch whoami test image to ghcr.io by @linkvt in #1572
  • feat: implement per-route timeout configuration by @linkvt in #1562
  • chore(deps): update pre-commit hook thlorenz/doctoc to v2.4.1 by @renovate[bot] in #1575
  • chore(deps): bump github.com/moby/spdystream from 0.5.0 to 0.5.1 by @dependabot[bot] in #1579
  • chore: automate kind version updates via Renovate by @linkvt in #1573
  • refactor: set Content-Type in interceptor queue endpoint handler by @linkvt in #1580
  • ci: reduce lychee link checker flakiness by @linkvt in #1582
  • feat: support OTEL_TRACES_SAMPLER and OTEL_TRACES_SAMPLER_ARG settings by @Fedosin in #1577
  • chore(deps): update github actions by @renovate[bot] in #1586
  • fix(deps): update go dependencies (non-major) to v0.34.7 (patch) by @renovate[bot] in #1587
  • refactor/feat(e2e): improve test reliability and add new InterceptorRoute e2e tests by @Fedosin in #1583
  • fix: restrict metrics endpoint to /metrics path by @linkvt in #1591
  • refactor: align metric names with OTel semantic conventions by @linkvt in #1590
  • refactor: nest cold-start fallback service fields under service key by @linkvt in #1588
  • feat: log deprecation warning for HTTPScaledObject by @linkvt in #1595
  • feat: require explicit targetValue in scaling metric specs by @linkvt in #1597
  • refactor: simplify queue count types and fix RPS naming by @linkvt in #1581
  • feat: add orphan-scaledobject annotation for HTTPSO->IR migration by @linkvt in #1593
  • chore: remove kubebuilder scaffolding artifacts by @linkvt in #1598
  • chore: remove legacy in-repo docs in favor of keda.sh by @linkvt in #1594
  • chore: pin ko base image to digest and track with Renovate by @linkvt in #1605
  • chore: prepare release v0.14.0 by @linkvt in #1607

Full Changelog: v0.13.0...v0.14.0

Don't miss a new http-add-on release

NewReleases is sending notifications on new releases.