Releases: kedacore/http-add-on
v0.13.0
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
- @renovate[bot] made their first contribution in #1486
- @Paul-Weaver made their first contribution in #1536
- @AtharvaPakade made their first contribution in #1543
Full Changelog: v0.12.2...v0.13.0
v0.12.2
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., GCPHealthCheckPolicy), update them to target port9090for/readyzand/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
What's Changed
- chore: cleanup old docs and examples by @linkvt in #1430
- fix(interceptor): preserve upstream X-Forwarded headers by @linkvt in #1434
- chore(deps): bump docker/login-action from 3.6.0 to 3.7.0 in the all-updates group by @dependabot[bot] in #1438
- Add CodeQL by @JorTurFer in #1437
- chore: prepare release v0.12.1 by @linkvt in #1441
Full Changelog: v0.12.0...v0.12.1
v0.12.0
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-v2Performance 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
- @dcb-imvaria made their first contribution in #1366
- @nader-ziada made their first contribution in #1365
- @linkvt made their first contribution in #1384
- @khauser made their first contribution in #1393
- @Fedosin made their first contribution in #1408
- @jochbru made their first contribution in #1407
- @jackkleeman made their first contribution in #1386
Full Changelog: v0.11.1...v0.12.0
v0.11.1
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
- @Copilot made their first contribution in #1349
- @sean-redmond made their first contribution in #1354
Full Changelog: v0.11.0...v0.11.1
v0.11.0
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
- @rd-zahari-aleksiev made their first contribution in #1265
- @GilbertBckr made their first contribution in #1266
- @bhussain91 made their first contribution in #1021
- @jkremser made their first contribution in #1308
- @ilia-medvedev-codefresh made their first contribution in #1307
- @AlexPykavy made their first contribution in #1285
- @yyewolf made their first contribution in #1280
- @guilhem made their first contribution in #835
Full Changelog: v0.10.0...v0.11.0
v0.10.0
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
- chore(deps): bump golangci/golangci-lint-action from 6.1.1 to 6.2.0 in the all-updates group by @dependabot in #1237
- chore(deps): bump the all-updates group across 1 directory with 11 updates by @dependabot in #1238
- chore: add missing examples for 0.9.0 by @brunopadz in #1240
- Readme: update status message by @zroubalik in #1243
- fix(doc): use correct service name by @ldvc in #1244
- chore(deps): bump actions/setup-go from 5.2.0 to 5.3.0 in the all-updates group by @dependabot in #1242
- chore(deps): bump the all-updates group with 2 updates by @dependabot in #1241
- Update compatibility documentation for v0.9.0 by @Spenhouet in #1247
- chore(deps): bump the all-updates group with 3 updates by @dependabot in #1249
- fix kubectl active printcolumn selector by @wozniakjan in #1248
- Fix KEDA Interceptor/Scaler issues when deleting ScaledObject while scaling by @kmd922 in #1245
- chore(deps): bump golangci/golangci-lint-action from 6.3.2 to 6.5.0 in the all-updates group by @dependabot in #1253
- fix: ingnore Make link in the linkinator workflow by @zroubalik in #1255
- chore: run e2e tests against k8s 1.32 by @zroubalik in #1257
- chore: fix kind action by @zroubalik in #1259
- bump k8s deps to 1.31.6 by @zroubalik in #1256
- bump go to 1.23.6 by @zroubalik in #1258
- fix: Rename keda-http-add-on-interceptor-proxy to keda-add-ons-http-interceptor-proxy by @kahirokunn in #1037
- Add support for initialCooldownPeriod On httpScaledObjects by @shayrybak in #1212
- Prepare release v0.10.0 by @wozniakjan in #1260
New Contributors
- @brunopadz made their first contribution in #1240
- @ldvc made their first contribution in #1244
- @Spenhouet made their first contribution in #1247
- @kmd922 made their first contribution in #1245
- @shayrybak made their first contribution in #1212
Full Changelog: v0.9.0...v0.10.0
v0.9.0
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
- @wozniakjan made their first contribution in #1040
- @d4nyll made their first contribution in #1071
- @kahirokunn made their first contribution in #1093
- @kek-Sec made their first contribution in #1137
- @boillodmanuel made their first contribution in #1199
- @step-security-bot made their first contribution in #1217
Full Changelog: v0.8.0...v0.9.0
v0.8.0
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
targetPendingRequestsin favor ofspec.scalingMetric.*.targetValue(#959)
Other
- General: Align with the new format of Ingress in the example demo (#979)
- General: Unify loggers (#958)
New Contributors
- @rohithzr made their first contribution in #913
- @nikhilchintawar made their first contribution in #953
- @devopsdynamo made their first contribution in #929
- @fmarani made their first contribution in #967
- @JoeyC-Dev made their first contribution in #979
- @zorocloud made their first contribution in #927
Full Changelog: v0.7.0...v0.8.0
v0.7.0
Breaking Changes
New
- General: Support any resource which implements
/scalesubresource (#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_MSin favor ofKEDA_HTTP_ENDPOINTS_CACHE_POLLING_INTERVAL_MS(#438)
New Contributors
- @maxmoeschinger made their first contribution in #863
- @worldspawn made their first contribution in #873
- @werdnum made their first contribution in #876
Full Changelog: v0.6.0...v0.7.0