# KEDA v2.20.0 - Product: KEDA (https://whatsnew.fyi/product/keda) - Vendor: CNCF - Date: 2026-06-01 - Version: v2.20.0 - Original notes: https://github.com/kedacore/keda/releases/tag/v2.20.0 - Permalink: https://whatsnew.fyi/product/keda/releases/v2.20.0 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Introduce new OpenSearch Scaler - **added** — Introduce Elastic Forecast Scaler - **added** — Add scalingModifiers fallback behavior - **added** — Add scaler HTTP request metrics (keda_scaler_http_requests_total, keda_scaler_http_request_duration_seconds) for outbound HTTP requests made during scaler metric collection - **added** — Add --leader-election-id flag to allow configuring the leader election Lease name - **added** — Add support for AWS External ID in TriggerAuthentication podIdentity for all AWS scalers to enable cross-account access scenarios - **added** — Add groupByNode parameter to Kubernetes Workload Scaler - **added** — Add custom HTTP client timeout to Metrics API Scaler - **added** — Add Azure Workload Identity support for Azure SQL authentication in MSSQL Scaler - **added** — Add support for OAuth2 authentication for RabbitMQ over HTTP - **added** — Add support for scaling based on Worker Deployment Version backlog in Temporal Scaler via new workerDeploymentName and workerDeploymentBuildId fields - **changed** — KEDA now records Kubernetes events via the events.k8s.io API group instead of the legacy core events resource - **changed** — Allow more control of TLS versions and ciphers via KEDA_HTTP_TLS_CIPHER_LIST, KEDA_SERVICE_TLS_CIPHER_LIST and KEDA_SERVICE_MIN_TLS_VERSION environment variables - **changed** — Cap each scalers-cache reader at a per-reader budget derived from globalHTTPTimeout so ScalersCache.Close cannot block indefinitely - **changed** — Make APIService cert injections optional - **fixed** — Check updated status for Fallback condition instead of ScaledObject - **fixed** — Fail fast in GetMetrics when the gRPC connection is in Shutdown state instead of waiting for context timeout - **fixed** — Fix int64 overflow in milli-quantity conversion for very large metric values - **fixed** — Fix keda_scaler_active not being emitted for CPU and memory triggers - **fixed** — Fix race in scalers cache rebuild that caused transient scaler errors - **deprecated** — Deprecate buildId, selectAllActive, and selectUnversioned in Temporal Scaler as Rules-Based Worker Versioning was a short-lived experimental feature that has been deprecated in Temporal server since December 2024 We are happy to release KEDA 2.20.0 🎉 ###### ⚠️ Upgrade note: events moved to `events.k8s.io` ([#7781](https://github.com/kedacore/keda/pull/7781)) With the Kubernetes 0.35 dependency bump, KEDA now records Kubernetes events via the `events.k8s.io` API group instead of the legacy core `events` resource. If you deploy KEDA with **custom or restricted RBAC**, grant the operator `create`/`patch` on `events.k8s.io/events` **before upgrading**, otherwise event recording will fail. The bundled KEDA manifests and Helm chart already include the updated permissions. ###### Highlights: - Introduce new OpenSearch Scaler - Introduce Elastic Forecast Scaler - Add `scalingModifiers` fallback behavior - Add support for AWS External ID in TriggerAuthentication podIdentity for all AWS scalers - Add scaler HTTP request metrics for outbound requests made during metric collection Learn how to deploy KEDA by reading [our documentation](https://keda.sh/docs/2.20/deploy/). 🗓️ The next KEDA release is currently being estimated for 2nd week of September 2026, learn more in our [roadmap](https://github.com/kedacore/keda/blob/main/ROADMAP.md#upcoming-release-cycles). ###### New - **General**: Add `scalingModifiers` fallback behavior ([#7366](https://github.com/kedacore/keda/discussions/7366)) - **General**: Introduce Elastic Forecast Scaler ([#7494](https://github.com/kedacore/keda/issues/7494)) - **General**: Introduce new OpenSearch Scaler ([#7456](https://github.com/kedacore/keda/issues/7456)) ###### Improvements - **General**: Add cooldownPeriod and pollingInterval checks for ScaledObject ([#7271](https://github.com/kedacore/keda/pull/7271)) - **General**: Add CRD-level validation markers (Minimum, MinLength, MinItems, Enum) for ScaledObject, ScaledJob, ScaleTriggers, and TriggerAuthentication API types ([#7533](https://github.com/kedacore/keda/pull/7533)) - **General**: Add `--leader-election-id` flag to allow configuring the leader election Lease name ([#7564](https://github.com/kedacore/keda/issues/7564)) - **General**: Add scaler HTTP request metrics (`keda_scaler_http_requests_total`, `keda_scaler_http_request_duration_seconds`) for outbound HTTP requests made during scaler metric collection ([#6600](https://github.com/kedacore/keda/issues/6600)) - **General**: Allow more control of TLS versions & ciphers via `KEDA_HTTP_TLS_CIPHER_LIST`, `KEDA_SERVICE_TLS_CIPHER_LIST` and `KEDA_SERVICE_MIN_TLS_VERSION` env vars ([#7617](https://github.com/kedacore/keda/pull/7617)) - **General**: Cap each scalers-cache reader at a per-reader budget derived from `globalHTTPTimeout` so `ScalersCache.Close` cannot block indefinitely ([#7574](https://github.com/kedacore/keda/issues/7574)) - **General**: Make APIService cert injections optional ([#7559](https://github.com/kedacore/keda/pull/7559)) - **General**: Remove unconditional `json.MarshalIndent` calls from admission webhook validation hot paths; replace spec-comparison `MarshalIndent`-and-string-compare in `isRemovingFinalizer` variants with `reflect.DeepEqual`. Prevents webhook OOM under sustained admission load at large scale (observed at ~60k ScaledObjects) ([#7670](https://github.com/kedacore/keda/pull/7670)) - **AWS Scalers**: Add support for AWS External ID in TriggerAuthentication podIdentity for all AWS scalers (SQS, Kinesis, DynamoDB, CloudWatch, etc.) to enable cross-account access scenarios ([#6921](https://github.com/kedacore/keda/issues/6921)) - **Elasticsearch Scaler**: Add HTTP status check for Elasticsearch errors ([#7480](https://github.com/kedacore/keda/pull/7480)) - **Github Runner Scaler**: Handle rate limit errors by respecting X-RateLimit-Reset and Retry-After headers and returning cached queue length ([#7683](https://github.com/kedacore/keda/issues/7683)) - **Kubernetes Workload Scaler**: Add `groupByNode` parameter ([#7628](https://github.com/kedacore/keda/issues/7628)) - **Metrics API Scaler**: Add custom HTTP client timeout ([#754 _[Truncated at 4000 characters — full notes: https://github.com/kedacore/keda/releases/tag/v2.20.0]_