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