Skip to content

Releases: kedacore/http-add-on

v0.13.0

23 Mar 12:31
32c6628

Choose a tag to compare

What's Changed

  • chore: replace Dependabot with Renovate by @linkvt in #1476
  • chore: exclude existing revive var-naming lint issues by @linkvt in #1475
  • chore: remove unused CurrentNamespace from interceptor config by @Fedosin in #1484
  • fix: update roundToNDigits to use Round instead of Floor by @Fedosin in #1483
  • chore(deps): update actions/checkout action to v6 by @renovate[bot] in #1486
  • fix(deps): update module go.opentelemetry.io/otel/sdk to v1.40.0 [security] by @renovate[bot] in #1481
  • fix: replace deprecated release asset upload actions by @linkvt in #1490
  • refactor: replace kelseyhightower/envconfig with caarlos0/env by @linkvt in #1491
  • chore: move renovate config to .github dir by @linkvt in #1480
  • refactor: migrate build system from Docker to ko by @linkvt in #1465
  • refactor: modernize code with go fix by @linkvt in #1494
  • refactor: remove dead code identified by deadcode analysis by @linkvt in #1493
  • chore: remove archived pre-commit-golang hook by @linkvt in #1495
  • perf: add atomic endpoint readiness cache for O(1) hot-path checks by @Fedosin in #1472
  • chore: replace hack/tools.go with go.mod tool directive by @linkvt in #1498
  • ci: use stable Go version in CI workflows by @linkvt in #1499
  • ci: replace keda-tools container with setup-go in CodeQL workflow by @linkvt in #1502
  • chore: enable Renovate kubernetes manager for config/ and examples/ by @linkvt in #1503
  • chore(config): migrate Renovate config by @renovate[bot] in #1504
  • chore(deps): pin dependencies by @renovate[bot] in #1505
  • chore(deps): pin golang docker tag to 8bbd140 by @renovate[bot] in #1506
  • chore(deps): update pre-commit hook thlorenz/doctoc to v2.3.0 by @renovate[bot] in #1510
  • fix(deps): update k8s.io/utils digest to b8788ab by @renovate[bot] in #1508
  • chore(deps): update golang docker tag to v1.26.0 by @renovate[bot] in #1509
  • chore: improve Renovate dependency grouping by @linkvt in #1507
  • chore: remove unused .whitesource configuration by @linkvt in #1513
  • fix: reorder Renovate packageRules so specific groups override catch-all by @linkvt in #1514
  • chore: extend k8s renovate group with more related pkgs by @linkvt in #1515
  • fix(deps): update go dependencies (non-major) by @renovate[bot] in #1511
  • fix: fix flaky and skipped tracing e2e tests by @linkvt in #1517
  • chore: configure renovate post-update options for Go modules by @linkvt in #1518
  • refactor: modernize golangci-lint config and fix issues by @linkvt in #1497
  • perf: replace global queue lock with per-host atomics and eliminate counting goroutines by @Fedosin in #1482
  • fix: resolve golangci-lint v2.11.1 gosec and nolintlint issues by @Fedosin in #1522
  • chore(deps): update github actions by @renovate[bot] in #1524
  • chore(deps): update golang docker tag to v1.26.1 by @renovate[bot] in #1525
  • chore(deps): update docker/login-action action to v4 by @renovate[bot] in #1529
  • fix(deps): update go dependencies (non-major) by @renovate[bot] in #1526
  • fix: remove configurable EndpointSlice informer resync interval by @Fedosin in #1485
  • fix: drop semconv version-pinned import in favor of schemaless resources by @linkvt in #1531
  • refactor(scaler): use WaitGroup.Go for queue pinger goroutines by @Fedosin in #1535
  • docs: replace deprecated targetPendingRequests with scalingMetric in design.md by @Paul-Weaver in #1536
  • chore: track golangci-lint version with renovate by @linkvt in #1537
  • chore: group regex-managed action versions with GitHub Actions updates by @linkvt in #1539
  • chore: provide minimal devcontainer config by @linkvt in #1538
  • chore(config): migrate Renovate config by @renovate[bot] in #1540
  • chore(deps): update github actions by @renovate[bot] in #1542
  • refactor: replace homebrew endpoints cache with controller-runtime cache by @Fedosin in #1533
  • tracing: Remove B3 trace propagation by @AtharvaPakade in #1543
  • feat: add env-based TLS version, cipher suite, and curve configuration by @Fedosin in #1530
  • fix(deps): update module google.golang.org/grpc to v1.79.3 [security] by @renovate[bot] in #1546
  • chore(deps): update github actions by @renovate[bot] in #1553
  • fix(deps): update k8s.io/utils digest to 28399d8 by @renovate[bot] in #1554
  • chore: improve issue templates and add needs-triage label by @linkvt in #1552
  • chore: prepare release v0.13.0 by @Fedosin in #1556

New Contributors

Full Changelog: v0.12.2...v0.13.0

v0.12.2

19 Feb 13:25
480a415

Choose a tag to compare

Upgrade Notes

  • Interceptor health probe endpoints moved to the admin port (9090). No action needed if using the Helm chart. If you use custom external health checks (e.g., GCP HealthCheckPolicy), update them to target port 9090 for /readyz and /livez.

Improvements

  • Interceptor: Increase default connection pool sizes for higher throughput (#1469)

Fixes

  • Interceptor: Fix health probes failing when HTTPScaledObject has no hosts configured (#1447)
  • Interceptor: Rework dial retry to tolerate slow Service IP propagation and add KEDA_HTTP_DIAL_RETRY_TIMEOUT (#1449)
  • Interceptor: Set endpoint informer resync default to 1s to suppress warning (#1455)

Full Changelog: v0.12.1...v0.12.2

v0.12.1

03 Feb 12:44
c03d9e2

Choose a tag to compare

What's Changed

Full Changelog: v0.12.0...v0.12.1

v0.12.0

29 Jan 09:38
8f2e332

Choose a tag to compare

Breaking Changes

HTTPScaledObject CRD must be updated (#1419)

You must update the HTTPScaledObject CRD before upgrading the operator. The .status.conditions field now uses the standard Kubernetes metav1.Condition format.

If you have tooling that parses HTTPScaledObject conditions, update it to expect standard fields (lastTransitionTime, observedGeneration).

This fixes duplicate Ready conditions that caused issues with GitOps tools like ArgoCD and Flux.

Highlights

Wildcard host matching (#1411)

Use wildcard patterns like *.example.com to match any subdomain with a single HTTPScaledObject.

spec:
  hosts:
    - "*.example.com"  # matches foo.example.com, bar.foo.example.com, etc.

HTTP header-based routing (#1289)

Route requests to different backends based on HTTP headers. Multiple HTTPScaledObjects can now match the same host and path with different header requirements.

apiVersion: http.keda.sh/v1alpha1
kind: HTTPScaledObject
spec:
  hosts:
    - api.example.com
  headers:
    - name: X-API-Version
      value: v2
  scaleTargetRef:
    name: api-v2

Performance improvements (#1404)

The interceptor now uses significantly less memory under load, with reduced memory growth over time. Latency is also improved for high-throughput workloads.

Full-duplex HTTP/1.1 support (#1386)

Bidirectional streaming now works correctly - response bodies can start streaming while request bodies are still being sent.

Configurable request logging (#1375)

Request logging in the interceptor is now optional. Disable it to reduce log volume in high-traffic environments.

What's Changed

  • Update ADOPTERS.md for IMVARIA inc. by @dcb-imvaria in #1366
  • interceptor: make request logging optional by @wozniakjan in #1375
  • feat: add environment variables for leader election timing configuration by @nader-ziada in #1365
  • fix broken link to propulsion ai by @wozniakjan in #1381
  • chore: fix devcontainer build by updating deprecated Go tools by @linkvt in #1384
  • ci: use GitHub-hosted ARM64 runners for e2e tests by @linkvt in #1389
  • chore(deps): bump the all-updates group across 1 directory with 5 updates by @dependabot[bot] in #1377
  • chore(deps): bump github.com/expr-lang/expr from 1.17.6 to 1.17.7 by @dependabot[bot] in #1401
  • Improve interceptor performance and allocations by @linkvt in #1404
  • ci: replace stale bot with official GitHub Actions stale action by @linkvt in #1398
  • fix: spaces are allowed in project basepath (#1392) by @khauser in #1393
  • fix: decouple connection retry backoff from TCP dial timeout by @linkvt in #1387
  • fix: consolidate HTTPScaledObject status updates to prevent conflicts by @Fedosin in #1408
  • fix: prevent duplicate conditions by matching on Type instead of Reason by @linkvt in #1395
  • chore(deps): update OpenTelemetry semconv version to v1.37.0 by @jochbru in #1407
  • ci: update e2e test k8s and kind versions by @linkvt in #1413
  • feat: add wildcard host matching for HTTPScaledObject by @linkvt in #1411
  • feat: expose and secure controller-runtime metrics by @khauser in #1369
  • chore: Fix codeowner and add the notification flow by @JorTurFer in #1416
  • refactor: simplify TableMemory and remove dead code by @linkvt in #1412
  • Support full-duplex http1.1 by @jackkleeman in #1386
  • chore(deps): bump the all-updates group across 1 directory with 3 updates by @dependabot[bot] in #1414
  • Bump golang to 1.25.5 + small fixes by @JorTurFer in #1418
  • chore(deps): bump github.com/kedacore/keda/v2 from 2.18.0 to 2.18.3 by @dependabot[bot] in #1406
  • interceptor: support for HTTP header routing by @wozniakjan in #1289
  • refactor(operator)!: migrate to standard metav1.Condition by @linkvt in #1419
  • e2e test: header routing by @wozniakjan in #1420
  • feat: Add FOSSA to monitor licenses by @JorTurFer in #1422
  • chore: update dependencies and remove version pinning by @linkvt in #1424
  • chore(deps): bump actions/checkout from 6.0.1 to 6.0.2 in the all-updates group by @dependabot[bot] in #1426
  • chore: prepare for release 0.12.0 by @linkvt in #1429

New Contributors

Full Changelog: v0.11.1...v0.12.0

v0.11.1

20 Oct 14:53
c343977

Choose a tag to compare

What's Changed

  • Update Kubernetes compatibility documentation to include v1.33, v1.34, and v0.11.0 release by @Copilot in #1349
  • fix: check endpoint readiness before forwarding by @wozniakjan in #1348
  • chore: update k8s versions by @zroubalik in #1351
  • chore(deps): bump the all-updates group across 1 directory with 5 updates by @dependabot[bot] in #1343
  • ci: bump go to 1.24.7 and fix link checker by @wozniakjan in #1357
  • feat: add environment variable to control X-KEDA-HTTP-Cold-Start response header by @sean-redmond in #1354
  • e2e: deploy zipkin as part of testsuite setup by @wozniakjan in #1358
  • chore: bump deps to k8s 0.33.4 & KEDA core 2.18.0 by @zroubalik in #1353
  • release v0.11.1 prep by @wozniakjan in #1360

New Contributors

Full Changelog: v0.11.0...v0.11.1

v0.11.0

18 Sep 12:56
1e7295c

Choose a tag to compare

What's Changed

  • chore(deps): bump the all-updates group with 4 updates by @dependabot[bot] in #1263
  • Update ADOPTERS.md by @rd-zahari-aleksiev in #1265
  • chore(deps): bump the all-updates group across 1 directory with 11 updates by @JorTurFer in #1268
  • chore(deps): bump golang.org/x/net from 0.35.0 to 0.36.0 by @dependabot[bot] in #1269
  • chore(deps): bump github.com/expr-lang/expr from 1.16.9 to 1.17.0 by @dependabot[bot] in #1272
  • chore(deps): bump the all-updates group with 2 updates by @dependabot[bot] in #1271
  • chore(deps): bump github.com/prometheus/common from 0.62.0 to 0.63.0 in the all-updates group by @dependabot[bot] in #1270
  • Change path in walkthrough call to match httpscaledobject from example by @GilbertBckr in #1266
  • chore(deps): bump the all-updates group with 3 updates by @dependabot[bot] in #1275
  • e2e tests: use ghcr registry for otel images by @wozniakjan in #1284
  • feat: Add support for tracing for http addon by @bhussain91 in #1021
  • chore: reformat scaler code to match KEDA go style by @zroubalik in #1295
  • chore: get the correct HTTPScaledObject reference in the scaler by @zroubalik in #1296
  • e2e: fix nginx installation via helm by @zroubalik in #1300
  • scaler: allow using HSO and SO with different names by @zroubalik in #1299
  • Add a way to turn off the profiling for all three http add-on components by @jkremser in #1308
  • feat(interceptor): Add possibility to skip tls verification for upstreams by @ilia-medvedev-codefresh in #1307
  • Implement HTTPScaledObject scoped timeout by @AlexPykavy in #1285
  • chore: Bump go version and deps by @JorTurFer in #1305
  • feat: failover route on cold-start time out by @yyewolf in #1280
  • feat(middleware-logging): implement http.Hijacker by @guilhem in #835
  • chore(deps): bump the all-updates group across 1 directory with 6 updates by @dependabot[bot] in #1325
  • migrate from v1.Endpoints to discoveryv1.EndpointSlices by @jkremser in #1298
  • ci: fix semver release trigger by @wozniakjan in #1336

New Contributors

Full Changelog: v0.10.0...v0.11.0

v0.10.0

21 Feb 13:15
6fa0b98

Choose a tag to compare

What's Changed

New

  • General: Fix infrastructure crashes when deleting ScaledObject while scaling (#1245)
  • General: Fix kubectl active printcolumn (#1211)
  • General: Support InitialCooldownPeriod for HTTPScaledObject #1213

Other

  • Documentation: Correct the service name used in the walkthrough documentation (#1244)
All merged PRs

New Contributors

Full Changelog: v0.9.0...v0.10.0

v0.9.0

26 Dec 17:10
317d474

Choose a tag to compare

We are happy to release KEDA HTTP Add-on v0.9.0 🎉

Breaking Changes

  • General: Drop support for deprecated field spec.scaleTargetRef.deployment (#1061)

New

  • General: Support portName in HTTPScaledObject service scaleTargetRef (#1174)
  • General: Support setting multiple TLS certs for different domains on the interceptor proxy (#1116)
  • Interceptor: Add support for for AWS ELB healthcheck probe (#1198)

Fixes

  • General: Align the interceptor metrics env var configuration with the OTEL spec (#1031)
  • General: Include trailing 0 window buckets in RPS calculation (#1075)

Other

  • General: Sign images with Cosign (#1062)

New Contributors

Full Changelog: v0.8.0...v0.9.0

v0.8.0

02 May 06:18
1c9f734

Choose a tag to compare

We are happy to release KEDA HTTP Add-on v0.8.0 🎉

New

  • General: Add configurable TLS on the wire support to the interceptor proxy (#907)
  • General: Add support for collecting metrics using a Prometheus compatible endpoint or by sending metrics to an OpenTelemetry's HTTP endpoint (#910)
  • General: Propagate HTTPScaledObject labels and annotations to ScaledObject (#840)
  • General: Provide support for allowing HTTP scaler to work alongside other core KEDA scalers (#489)
  • General: Support aggregation windows (#882)

Fixes

  • General: Ensure operator is aware about changes on underlying ScaledObject (#900)

Deprecations

You can find all deprecations in this overview and join the discussion here.

  • General: Deprecated targetPendingRequests in favor of spec.scalingMetric.*.targetValue (#959)

Other

  • General: Align with the new format of Ingress in the example demo (#979)
  • General: Unify loggers (#958)

New Contributors

Full Changelog: v0.7.0...v0.8.0

v0.7.0

22 Jan 10:39
a59daf2

Choose a tag to compare

Breaking Changes

  • General: host field has been removed in favor of hosts in HTTPScaledObject (#552|#888)

New

  • General: Support any resource which implements /scale subresource (#438)

Improvements

  • General: Improve Scaler reliability adding probes and 3 replicas (#870)

Fixes

  • General: Add new user agent probe (#862)
  • General: Fix external scaler getting into bad state when retrieving queue lengths fails. (#870)
  • General: Increase ScaledObject polling interval to 15 seconds (#799)
  • General: Set forward request RawPath to original request RawPath (#864)

Deprecations

You can find all deprecations in this overview and join the discussion here.

New deprecation(s):

  • General: Deprecated KEDA_HTTP_DEPLOYMENT_CACHE_POLLING_INTERVAL_MS in favor of KEDA_HTTP_ENDPOINTS_CACHE_POLLING_INTERVAL_MS (#438)

New Contributors

Full Changelog: v0.6.0...v0.7.0