github kedacore/http-add-on v0.16.0

10 hours ago

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 corresponding KEDA_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

Full Changelog: v0.15.0...v0.16.0

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

NewReleases is sending notifications on new releases.