Highlights
Static routes (#1622)
InterceptorRoute now supports staticRoutes for requests that should not trigger autoscaling, including health checks, redirects, and maintenance pages.
responseMode: WhenUnavailable forwards requests when the backend is ready and serves a static response otherwise.
responseMode: Always always serves the configured static response.
Direct-to-pod routing (#1473)
The interceptor can route requests directly to ready pod IPs instead of through the Service ClusterIP.
This can bypass kube-proxy and Service-layer behavior such as session affinity, topology-aware routing, and Service-level NetworkPolicy.
Bounded cold-start requests (#1732)
Cold-start pending requests can now be bounded per interceptor replica with coldStart.maxPendingRequests and coldStart.overflow.
Requests exceeding the limit receive 503 or the configured placeholder response.
The global KEDA_HTTP_COLD_START_MAX_PENDING_REQUESTS environment variable provides a default.
Cold-start observability (#1721, #1776)
The interceptor now exposes interceptor_cold_start_duration_seconds with ready, timeout, and cancelled outcomes.
Request duration metrics also include a cold_start label, with histogram buckets extended to 300s.
TLS and supply-chain improvements (#1728, #1715, #1604)
The release adds custom CA support for outbound backend TLS, automatic serving-certificate reloads, and SLSA Build Level 2 provenance attestations for release and canary images.
Deprecations
- TLS policy environment variables using the
KEDA_HTTP_PROXY_TLS_*prefix are deprecated in favor of the correspondingKEDA_HTTP_TLS_*variables.
The old names remain supported but emit deprecation warnings. (#1718)
What's Changed
- test: add benchmark test suite for interceptor performance by @linkvt in #1675
- chore(deps): update e2e dependencies by @renovate[bot] in #1681
- ci: pin Helm version in benchmark workflow by @linkvt in #1691
- test: remove unused deps from legacy e2e tests by @linkvt in #1685
- feat: add static route support to interceptor by @linkvt in #1689
- feat(interceptor): add direct-to-pod routing for upstreams by @AtharvaPakade in #1585
- chore(deps): update github actions (major) by @renovate[bot] in #1694
- fix(deps): update module github.com/cert-manager/cert-manager to v1.19.6 by @renovate[bot] in #1700
- chore(deps): update github actions by @renovate[bot] in #1699
- chore(deps): update fossas/fossa-action action to v2 by @renovate[bot] in #1702
- fix(deps): update go dependencies (non-major) by @renovate[bot] in #1701
- fix: allow timer jitter in TestForwarderConnectionRetryAndTimeout by @Fedosin in #1696
- fix: don't log error when no interceptor endpoints are ready by @Fedosin in #1695
- fix(deps): update module golang.org/x/sync to v0.22.0 by @renovate[bot] in #1707
- chore(deps): update e2e dependencies by @renovate[bot] in #1698
- chore(deps): update dependency helm/helm to v4.2.3 by @renovate[bot] in #1705
- chore(deps): update github actions by @renovate[bot] in #1706
- fix(deps): update k8s.io/utils digest to cf1189d by @renovate[bot] in #1693
- fix: prevent requestRate rounding to zero after long idle by @linkvt in #1708
- refactor: align scaler main.go with interceptor main.go pattern by @linkvt in #1709
- fix(deps): update module google.golang.org/grpc to v1.82.1 by @renovate[bot] in #1712
- chore(deps): update github/codeql-action action to v4.37.1 by @renovate[bot] in #1711
- chore(deps): update ghcr.io/wolfi-dev/static:alpine docker digest to d054581 by @renovate[bot] in #1710
- chore(deps): update actions/setup-go action to v7 by @renovate[bot] in #1714
- fix(interceptor): clean up direct-pod routing TLS and defaults by @Fedosin in #1697
- chore(deps): update module golang.org/x/text to v0.39.0 [security] by @renovate[bot] in #1717
- fix(interceptor): accept TLS12/TLS13 version format by @linkvt in #1720
- feat(interceptor): use certwatcher for TLS certificate hot-reload by @linkvt in #1716
- refactor: separate TLS policy env vars from per-listener config by @linkvt in #1719
- chore(deps): update github actions by @renovate[bot] in #1722
- chore(deps): update helm release jaeger to v4.11.2 by @renovate[bot] in #1723
- fix(deps): update go dependencies (non-major) by @renovate[bot] in #1724
- fix(deps): update go dependencies (non-major) to v0.34.10 by @renovate[bot] in #1725
- chore(deps): update module github.com/google/cel-go to v0.29.0 [security] by @renovate[bot] in #1727
- fix(scaler): bound queue counts requests to interceptor pods by @Fedosin in #1729
- feat: add custom CA trust for outbound backend TLS by @linkvt in #1731
- chore(deps): update e2e dependencies by @renovate[bot] in #1735
- chore(deps): update github actions by @renovate[bot] in #1736
- chore(deps): update actions/stale action to v11 by @renovate[bot] in #1738
- fix(deps): update module google.golang.org/grpc to v1.83.0 by @renovate[bot] in #1737
- chore: auto-install dev tools via Makefile by @linkvt in #1739
- feat(interceptor): bound the cold-start hold queue by @Fedosin in #1733
- feat: add SLSA Build L2 provenance attestations for release images by @linkvt in #1743
- ci: add artifact-metadata:write permission by @linkvt in #1744
- chore(deps): update helm release opentelemetry-collector to v0.169.0 by @renovate[bot] in #1748
- chore(deps): update ghcr.io/wolfi-dev/static:alpine docker digest to 2782077 by @renovate[bot] in #1745
- fix(deps): update go dependencies (non-major) by @renovate[bot] in #1749
- chore(deps): update github actions by @renovate[bot] in #1747
- fix(deps): update google.golang.org/protobuf digest to 644d026 by @renovate[bot] in #1746
- ci: use actions/attest directly instead of the wrapper by @linkvt in #1750
- chore(deps): update module golang.org/x/mod to v0.40.0 [security] by @renovate[bot] in #1753
- fix(deps): update go dependencies (non-major) by @renovate[bot] in #1758
- chore(deps): update ghcr.io/wolfi-dev/static:alpine docker digest to c0c3216 by @renovate[bot] in #1754
- chore(deps): update github/codeql-action action to v4.37.7 by @renovate[bot] in #1756
- test: harden e2e test pods and helpers for restricted PSS by @linkvt in #1751
- chore(deps): update dependency golangci/golangci-lint to v2.13.1 by @renovate[bot] in #1761
- chore(deps): update dependency helm/helm to v4.2.4 by @renovate[bot] in #1755
- fix(deps): update go dependencies (non-major) by @renovate[bot] in #1765
- chore(deps): update infra dependencies by @renovate[bot] in #1757
- chore(deps): update github/codeql-action action to v4.37.8 by @renovate[bot] in #1763
- fix(deps): update go dependencies (non-major) to v0.34.11 by @renovate[bot] in #1764
- chore(deps): update module github.com/google/cel-go to v0.30.0 [security] by @renovate[bot] in #1760
- refactor: extract e2e-deps-external make target by @linkvt in #1766
- chore: scan test dependencies with Renovate by @linkvt in #1767
- chore(deps): update registry.k8s.io/e2e-test-images/agnhost docker tag to v2.61 by @renovate[bot] in #1775
- chore(deps): update ghcr.io/traefik/whoami docker tag to v1.12.0 by @renovate[bot] in #1774
- chore(deps): update ghcr.io/hatoo/oha docker tag to v1.16.0 by @renovate[bot] in #1773
- chore(deps): update dependency kubernetes-sigs/kind to v0.33.0 by @renovate[bot] in #1772
- chore(deps): update github/codeql-action action to v4.37.9 by @renovate[bot] in #1770
- chore(deps): update alpine/socat docker tag to v1.8.1.3 by @renovate[bot] in #1768
- chore: configure Renovate groups and monthly schedule by @linkvt in #1759
- fix(ci): track kind version in the HTTPSO e2e job by @Fedosin in #1778
- chore(deps): update infra dependencies by @renovate[bot] in #1771
- fix(interceptor): report 499 instead of 502 for client-cancelled requests by @pujitha24 in #1780
- fix(deps): update module google.golang.org/grpc to v1.83.2 [security] by @renovate[bot] in #1786
- fix: avoid TLS e2e certificate mount collision by @linkvt in #1781
- ci: track patch updates for older Kubernetes versions by @linkvt in #1782
- chore: validate only unreleased changelog by default by @linkvt in #1787
- fix: extend duration buckets and classify cold-start requests by @linkvt in #1783
- feat: add cold-start duration metric by @linkvt in #1784
- chore(deps): update helm/kind-action action to v1.15.0 by @renovate[bot] in #1790
- chore(deps): update infra dependencies (patch) by @renovate[bot] in #1788
- chore(deps): update infra dependencies by @renovate[bot] in #1791
- fix(deps): update go dependencies (non-major) by @renovate[bot] in #1789
- chore(deps): update infra dependencies by @renovate[bot] in #1795
- chore(deps): update github actions by @renovate[bot] in #1796
- ci: use slim runner for e2e summary by @linkvt in #1797
- fix(scaler): suppress duplicate external-push activation events by @linkvt in #1793
- chore: prepare release v0.16.0 by @linkvt in #1798
New Contributors
- @pujitha24 made their first contribution in #1780
Full Changelog: v0.15.0...v0.16.0