KEDA is a Kubernetes-based Event Driven Autoscaling component. It provides event driven scale for any container running in Kubernetes

Overview

Kubernetes-based Event Driven Autoscaling

main build nightly e2e Twitter

KEDA allows for fine-grained autoscaling (including to/from zero) for event driven Kubernetes workloads. KEDA serves as a Kubernetes Metrics Server and allows users to define autoscaling rules using a dedicated Kubernetes custom resource definition.

KEDA can run on both the cloud and the edge, integrates natively with Kubernetes components such as the Horizontal Pod Autoscaler, and has no external dependencies.

We are a Cloud Native Computing Foundation (CNCF) sandbox project.

Table of contents

Getting started

You can find several samples for various event sources here.

Deploying KEDA

There are many ways to deploy KEDA including Helm, Operator Hub and YAML files.

Documentation

Interested to learn more? Head over to keda.sh.

Governance & Policies

You can learn about the governance of KEDA here.

Community

If interested in contributing or participating in the direction of KEDA, you can join our community meetings.

Just want to learn or chat about KEDA? Feel free to join the conversation in #KEDA on the Kubernetes Slack!

Become a listed KEDA user!

We are always happy to list users who run KEDA in production, learn more about it here.

Releases

You can find the latest releases here.

Contributing

You can find contributing guide here.

Building & deploying locally

Learn how to build & deploy KEDA locally here.

Comments
  • Provide support for explicitly pausing autoscaling of workloads.

    Provide support for explicitly pausing autoscaling of workloads.

    Provide support for explicitly stating workloads to scale to zero without the option of scaling up.

    This can be useful for manually scaling-to-zero instances because:

    • You want to do maintenance
    • Your cluster is suffering from resource starvation and you want to remove non-mission-critical workloads

    Why not delete the deployment? Glad you've asked! Because we don't want to touch the applications themselves but merely remove the instances it is running from an operational perspective. Once everything is good to go, we can enable it to scale again.

    Suggestion

    Introduce a new CRD, for example ManualScaleToZero, which targets a given deployment/workload and provides a description why it's scaled to 0 for now.

    If scaled objects/jobs are configured, they are ignored in favor of the new CRD.

    help wanted needs-discussion feature-request 
    opened by tomkerkhove 119
  • feat: Azure AD Workload Identity support for Azure Scalers and Key Vault

    feat: Azure AD Workload Identity support for Azure Scalers and Key Vault

    Signed-off-by: Vighnesh Shenoy [email protected]

    Support for Workload Identity as a pod identity provider.

    Related PRs - Helm Changes - https://github.com/kedacore/charts/pull/263, https://github.com/kedacore/charts/pull/264 Doc changes - https://github.com/kedacore/keda-docs/pull/752

    Checklist

    • [x] Commits are signed with Developer Certificate of Origin (DCO - learn more)
    • [x] Tests have been added
    • [x] Changelog has been updated and is aligned with our changelog requirements
    • [x] A PR is opened to update our Helm chart (repo) (if applicable, ie. when deployment manifests are modified)
    • [x] A PR is opened to update the documentation on (repo) (if applicable)

    Relates to #2487

    opened by v-shenoy 61
  • Improve e2e test reliability

    Improve e2e test reliability

    Signed-off-by: jorturfer [email protected]

    This PR increases some timeouts across different e2e test and does these relevant changes:

    • Azure Pipelines: e2e tests now check scaling from/to 0 instead of between 1 and 3 because otherwise we have random fails if the removed pods during the scale in are still executing an AzDO job.
    • New Relic: e2e test has changed a bit to maintain the load till the scaling out is done.
    • Selenium: e2e test has changed, now nodes starts from 0 and check scaling to 0 instead of job status because sometimes the job started before the hub is ready and has more than 1 result (and the test fails)
    • Global: The timeout for each scaler e2e tests has been increased from 10m to 30m.
    • Global: Removed all the resources except for cpu e2e tests
    • Global: Failing e2e tests are retried one more time

    Checklist

    • [x] Commits are signed with Developer Certificate of Origin (DCO - learn more)
    • [x] Tests have been added
    • [x] A PR is opened to update our Helm chart (repo) (if applicable, ie. when deployment manifests are modified)
    • [x] A PR is opened to update the documentation on (repo) (if applicable)
    • [x] Changelog has been updated
    opened by JorTurFer 58
  • Allow HPA minReplicas other than 1 while still scaling to 0

    Allow HPA minReplicas other than 1 while still scaling to 0

    Proposal

    We currently have a scenario where we need to scale our deployments to 0 or have at least, e.g., 5 replicas available. We were not able to achieve this by overriding the HPA scale behavior. In the code, the HPA minReplicas are always set to 1 if we want to scale to 0.

    Therefore, we propose to be able to explicitly configure HPA minReplicas.

    Use-Case

    We are running Kafka Streams apps on Kubernetes and automatically scale them using KEDA. If there is no message lag, we can safely scale to 0. However, when process messages, we use Kafka Streams state stores, which are loaded into the memory of our pods. Because the resources of a single pod are insufficient, we replicate our deployment and thus distribute the state and require less resources per pod.

    Anything else?

    No response

    needs-discussion feature-request 
    opened by philipp94831 53
  • ARM Support

    ARM Support

    I am trying to install KEDA on K3S running on RPi 4, it seems the latest version does not support ARM. The kedacore/keda:arm seems to be dead and is not available from Docker Hub. I also tried to compile it manually but I ran into many issues compiling Operator-SDK.

    ARM support is necessary nowadays since most of the Edge devices are ARM-based. It would be great if the ARM image can be made available on Docker Hub.

    Open items

    • [x] Automatically build container image on ARM for PRs
    • [x] Automatically run unit tests on ARM
    • [x] https://github.com/kedacore/keda/issues/2262
    • [x] https://github.com/kedacore/keda/issues/2263
    feature arm 
    opened by krvarma 51
  • KEDA scaler not working on AKS with trigger authentication using  pod identity

    KEDA scaler not working on AKS with trigger authentication using pod identity

    Report

    KEDA scaler not scales with scaled object defined with trigger using pod identity for authentication for service bus queue. I'm following this KEDA service bus triggered scaling project.
    The scaling works fine with the connection string, but when I try to scale using the pod identity for KEDA scaler the keda operator fails to get the azure identity bound to it with the following keda operator error message log:

    github.com/kedacore/keda/v2/pkg/scaling.(*scaleHandler).isScaledObjectActive
            /workspace/pkg/scaling/scale_handler.go:228
    github.com/kedacore/keda/v2/pkg/scaling.(*scaleHandler).checkScalers
            /workspace/pkg/scaling/scale_handler.go:211
    github.com/kedacore/keda/v2/pkg/scaling.(*scaleHandler).startScaleLoop
            /workspace/pkg/scaling/scale_handler.go:145
    2021-10-10T17:35:53.916Z        ERROR   azure_servicebus_scaler error   {"error": "failed to refresh token, error: adal: Refresh request failed. Status Code = '400'. Response body: {\"error\":\"invalid_request\",\"error_description\":\"Identity not found\"}\n"}
    
    

    My scaler objects' definition is as below:

    apiVersion: keda.sh/v1alpha1
    kind: TriggerAuthentication
    metadata:
      name: trigger-auth-service-bus-orders
    spec:
      podIdentity:
        provider: azure
    ---
    apiVersion: keda.sh/v1alpha1 
    kind: ScaledObject
    metadata:
      name: order-scaler
    spec:
      scaleTargetRef:
        name: order-processor
      # minReplicaCount: 0 Change to define how many minimum replicas you want
      maxReplicaCount: 10
      triggers:
      - type: azure-servicebus
        metadata:
          namespace: demodemobus
          queueName: orders
          messageCount: '5'
        authenticationRef:
          name: trigger-auth-service-bus-orders
    

    Im deploying the azure identity to the namespace keda where my keda deployment resides. And installs KEDA with the following command to set the pod identity binding using helm:

    helm install keda kedacore/keda --set podIdentity.activeDirectory.identity=app-autoscaler --namespace keda
    

    Expected Behavior

    The KEDA scaler should have worked fine with the assigned pod identity and access token to perform scaling

    Actual Behavior

    The KEDA operator could not be able to find the azure identity assigned and scaling fails

    Steps to Reproduce the Problem

    1. Create the azure identity and bindings for the KEDA
    2. Install KEDA with the aadpodidentitybinding
    3. Create the scaledobject and triggerauthentication using KEDA pod identity
    4. The scaler fails to authenticate and scale

    Logs from KEDA operator

    github.com/kedacore/keda/v2/pkg/scaling.(*scaleHandler).isScaledObjectActive
            /workspace/pkg/scaling/scale_handler.go:228
    github.com/kedacore/keda/v2/pkg/scaling.(*scaleHandler).checkScalers
            /workspace/pkg/scaling/scale_handler.go:211
    github.com/kedacore/keda/v2/pkg/scaling.(*scaleHandler).startScaleLoop
            /workspace/pkg/scaling/scale_handler.go:145
    2021-10-10T17:41:54.909Z        ERROR   azure_servicebus_scaler error   {"error": "failed to refresh token, error: adal: Refresh request failed. Status Code = '400'. Response body: {\"error\":\"invalid_request\",\"error_description\":\"Identity not found\"}\n"}
    

    KEDA Version

    No response

    Kubernetes Version

    1.20

    Platform

    Microsoft Azure

    Scaler Details

    Azure Service Bus

    Anything else?

    No response

    bug stale 
    opened by iarunpaul 48
  • External metric provider via HTTP

    External metric provider via HTTP

    • Scaler Source: This scaler will send a GET request to an API that returns a JSON response.

    • How do you want to scale: Users can access numeric value in the API response that will be used as a current value.

    • Authentication: Not sure about this one but probably some headers. Not sure if we want to authenticate with each request. Eventually, we can start with public endpoints.

    Let's consider an example. My application has an endpoint that returns some useful statistics which I would love to use as a source of information for HPA. When requested it returns the following response:

    {"stats": {"magic_resource": {"value": 42}}}
    

    To access this value I have to specify valueLocation (as in jq). Example ScaledObject:

    apiVersion: keda.k8s.io/v1alpha1
    kind: ScaledObject
    metadata:
      name: api-scaledobject
      namespace: my-project
    spec:
      scaleTargetRef:
        deploymentName: worker
      triggers:
      - type: api-request
        metadata:
          targetValue: 42
          url: http://my-resource:3001/some/stats/endpoint
          valueLocation: stats.magic_resource.value
    

    This scaler is inspired by slack question: https://kubernetes.slack.com/archives/C09R1LV8S/p1594244628163800

    scaler feature scaler-metrics-api 
    opened by turbaszek 46
  • Provide support for Azure Key Vault in TriggerAuthentication.

    Provide support for Azure Key Vault in TriggerAuthentication.

    Authentication via Azure Key Vault is now supported.
    Sample for the new TriggerAuthenticationSpec -

    apiVersion: keda.sh/v1alpha1
    kind: TriggerAuthentication
    metadata:
      name: triggerAuthName
      namespace: default
    spec:
      azureKeyVault:
        vaultUri: <vault-address>
        credentials:  
          clientId: <azureAD-clientID>
          clientSecret:
            valueFrom:
              secretKeyRef:
                name: <secret-name>
                key: <key-within-secret>
          tenantId: <azureAD-tenantID>
        secrets: 
        - parameter: <param-name-for-authenticating>
          name: <secret-name-in-key-vault>
          version: <secret-version> # Optional
    
    

    Edit 1 - Updated spec and checklist. Edit 2- Raised documentation PR. Edit 3 - Update checklist with tests added.

    Checklist

    • [x] Commits are signed with Developer Certificate of Origin (DCO - learn more)
    • [x] Tests have been added
    • [x] A PR is opened to update our Helm chart (repo) (if applicable, ie. when deployment manifests are modified)
    • [x] A PR is opened to update the documentation on (repo) (if applicable)
    • [x] Changelog has been updated and is aligned with our changelog requirements

    Fixes #900

    opened by v-shenoy 41
  • Start migrating e2e tests to Go.

    Start migrating e2e tests to Go.

    Signed-off-by: Vighnesh Shenoy [email protected]

    Provide a description of what has been changed

    Start migrating e2e tests to Go for code parity.

    Sample Logs

    Checklist

    • [x] Commits are signed with Developer Certificate of Origin (DCO - learn more)
    • [x] Tests have been added
    • [x] A PR is opened to update our Helm chart (repo) (if applicable, ie. when deployment manifests are modified)
    • [x] A PR is opened to update the documentation on (repo) (if applicable)
    • [x] Changelog has been updated and is aligned with our changelog requirements

    Relates to #2737

    opened by v-shenoy 39
  • Add github action to run e2e command

    Add github action to run e2e command "on-demand"

    Signed-off-by: jorturfer [email protected]

    We have been discussing how to run e2e test in PRs before merge them when anyone with writing permissions requests it. There are several options to achieve this behavior, in this PR I propose to use several actions in a row to allow it.

    When someone with writing permissions comment the PR with the message /e2e, automatically this action will be executed reacting the comment with ๐Ÿš€ to refer that the pipeline is in process, and also with ๐Ÿ‘ / ๐Ÿ‘Ž to notify if the e2e tests have passed or not.

    Also, the trigger supports setting the e2e test discovery regex using if you want, using this format /e2e REGEX, ex:

    • /run-e2e *.test.ts
    • /run-e2e cron*

    Note: To use this feature, we should build and push this image ghcr.io/kedacore/build-tools:main because a few extra packages are needed like up-to-dated git, or hub pr Note2: Because of this, a PAT with delete permissions in the packages should be added also in order to be able to drop the e2e-test-tag from ghcr. GITHUB_TOKEN is not enough. The expected secret name is GHCR_AUTH_PAT

    Achievements:

    • [x] Execute e2e test on demand using a command
    • [x] Allow providing the regex to select a subset of the tests
    • [x] Execute the process to ensure that it works

    Checklist

    • [x] Commits are signed with Developer Certificate of Origin (DCO - learn more)
    • [x] Tests have been added
    • [x] A PR is opened to update our Helm chart (repo) (if applicable, ie. when deployment manifests are modified)
    • [x] A PR is opened to update the documentation on (repo) (if applicable)
    • [x] Changelog has been updated

    Fixes https://github.com/kedacore/keda/discussions/2224

    opened by JorTurFer 39
  • add annotation to pause autoscaling at a fixed count

    add annotation to pause autoscaling at a fixed count

    Signed-off-by: Sanskar Jaiswal [email protected]

    This PR adds a user configurable annotation autoscaling.keda.sh/paused-replicas, which lets users scale the target to a fixed replica count and pauses autoscaling.

    Checklist

    • [x] Commits are signed with Developer Certificate of Origin (DCO - learn more)
    • [x] Tests have been added
    • [ ] A PR is opened to update our Helm chart (repo) (if applicable, ie. when deployment manifests are modified)
    • [x] A PR is opened to update the documentation on (repo) (if applicable)
    • [x] Changelog has been updated and is aligned with our changelog requirements

    Relates to #944

    opened by aryan9600 37
  • wrong calc of the remaining items

    wrong calc of the remaining items

    as the scenario covered in this line is for the case in which the partition reached maxInt and started from zero. the calc is done wrongly. image

    Signed-off-by: Yoav Dobrin [email protected]

    the calc of the remaining items to process is wrong

    Checklist

    • [x] Commits are signed with Developer Certificate of Origin (DCO - learn more)
    • [ ] Tests have been added
    • [ ] Changelog has been updated and is aligned with our changelog requirements

    Fixes #

    Relates to #

    opened by yodobrin 4
  • [Datadog scaler] Failed to get the metrics for some specific datadog query

    [Datadog scaler] Failed to get the metrics for some specific datadog query

    Report

    I reported similar issue 3448 before, the root cause was null latest data point to cause the exception. Recently I finally have time to test the query again. This time, I make sure all data points have data and with the same number of data points within the period

    Query 1: sum:trace.express.request.hits{service:foo,env:bar}.as_rate() , keda can get the metrics of this query without any problem

    # curl result of query 1
    {
      "status": "ok",
      "resp_version": 1,
      "series": [
        {
          "end": 1669106969000,
          "attributes": {},
          "metric": "trace.express.request.hits",
          "interval": 10,
          "tag_set": [],
          "start": 1669106910000,
          "length": 6,
          "query_index": 0,
          "aggr": "sum",
          "scope": "env:bar,service:foo",
          "pointlist": [
            [
              1669106910000,
              417.3
            ],
            [
              1669106920000,
              465.4
            ],
            [
              1669106930000,
              447.1
            ],
            [
              1669106940000,
              440.9
            ],
            [
              1669106950000,
              440.8
            ],
            [
              1669106960000,
              748.5000000000001
            ]
          ],
          "expression": "sum:trace.express.request.hits{env:bar,service:foo}.as_rate()",
          "unit": [
            {
              "family": "cache",
              "scale_factor": 1,
              "name": "hit",
              "short_name": null,
              "plural": "hits",
              "id": 39
            },
            {
              "family": "time",
              "scale_factor": 1,
              "name": "second",
              "short_name": "s",
              "plural": "seconds",
              "id": 11
            }
          ],
          "display_name": "trace.express.request.hits"
        }
      ],
      "to_date": 1669106966000,
      "query": "sum:trace.express.request.hits{service:foo,env:bar}.as_rate()",
      "message": "",
      "res_type": "time_series",
      "times": [],
      "from_date": 1669106906000,
      "group_by": [],
      "values": []
    }
    

    Query 2: avg:kubernetes.cpu.requests{service:foo,env:bar}.rollup(10) , keda can get the metrics of this query without any problem```

    # curl result of query 2
    {
      "status": "ok",
      "resp_version": 1,
      "series": [
        {
          "end": 1669106969000,
          "attributes": {},
          "metric": "kubernetes.cpu.requests",
          "interval": 10,
          "tag_set": [],
          "start": 1669106910000,
          "length": 6,
          "query_index": 0,
          "aggr": "avg",
          "scope": "env:bar,service:foo",
          "pointlist": [
            [
              1669106910000,
              0.11999999731779099
            ],
            [
              1669106920000,
              0.11999999731779099
            ],
            [
              1669106930000,
              0.11999999731779099
            ],
            [
              1669106940000,
              0.11999999731779099
            ],
            [
              1669106950000,
              0.11999999731779099
            ],
            [
              1669106960000,
              0.11999999731779099
            ]
          ],
          "expression": "avg:kubernetes.cpu.requests{env:bar,service:foo}.rollup(10)",
          "unit": [
            {
              "family": "cpu",
              "scale_factor": 1,
              "name": "core",
              "short_name": null,
              "plural": "cores",
              "id": 31
            },
            null
          ],
          "display_name": "kubernetes.cpu.requests"
        }
      ],
      "to_date": 1669106966000,
      "query": "avg:kubernetes.cpu.requests{service:foo,env:bar}.rollup(10)",
      "message": "",
      "res_type": "time_series",
      "times": [],
      "from_date": 1669106906000,
      "group_by": [],
      "values": []
    }
    

    If I combine above two queries into "query 1 / query 2" Query 3: sum:trace.express.request.hits{service:foo,env:bar}.as_rate()/avg:kubernetes.cpu.requests{service:foo,env:bar}.rollup(10) The curl result looks ok but KEDA is failed to get the metrics

    # curl result if query 3
    {
      "status": "ok",
      "resp_version": 1,
      "series": [
        {
          "end": 1669106969000,
          "attributes": {},
          "metric": "(trace.express.request.hits / kubernetes.cpu.requests)",
          "interval": 10,
          "tag_set": [],
          "start": 1669106910000,
          "length": 6,
          "query_index": 0,
          "aggr": "sum",
          "scope": "env:bar,service:foo",
          "pointlist": [
            [
              1669106910000,
              3477.500077728184
            ],
            [
              1669106920000,
              3878.3334200208405
            ],
            [
              1669106930000,
              3725.8334166122
            ],
            [
              1669106940000,
              3674.166748790693
            ],
            [
              1669106950000,
              3673.3334154387335
            ],
            [
              1669106960000,
              6237.500139418993
            ]
          ],
          "expression": "(sum:trace.express.request.hits{env:bar,service:foo}.as_rate() / avg:kubernetes.cpu.requests{env:bar,service:foo}.rollup(10))",
          "unit": null,
          "display_name": "(trace.express.request.hits / kubernetes.cpu.requests)"
        }
      ],
      "to_date": 1669106966000,
      "query": "sum:trace.express.request.hits{service:foo,env:bar}.as_rate()/avg:kubernetes.cpu.requests{service:foo,env:bar}.rollup(10)",
      "message": "",
      "res_type": "time_series",
      "times": [],
      "from_date": 1669106906000,
      "group_by": [],
      "values": []
    }
    

    HPA events

      Warning  FailedGetExternalMetric       31m (x8 over 23h)  horizontal-pod-autoscaler  unable to get external metric development/s0-datadog-sum-trace-express-request-hits/&LabelSelector{MatchLabels:map[string]string{scaledobject.keda.sh/name: foo,},MatchExpressions:[]LabelSelectorRequirement{},}: unable to fetch metrics from external metrics API: no matching metrics found for s0-datadog-sum-trace-express-request-hits
      Warning  FailedComputeMetricsReplicas  31m (x8 over 23h)  horizontal-pod-autoscaler  invalid metrics (1 invalid out of 1), first error is: failed to get s0-datadog-sum-trace-express-request-hits external metric: unable to get external metric development/s0-datadog-sum-trace-express-request-hits/&LabelSelector{MatchLabels:map[string]string{scaledobject.keda.sh/name: foo,},MatchExpressions:[]LabelSelectorRequirement{},}: unable to fetch metrics from external metrics API: no matching metrics found for s0-datadog-sum-trace-express-request-hits
    

    If I remove as_rate() from Query 3 Query 4: sum:trace.express.request.hits{service:foo,env:bar}/avg:kubernetes.cpu.requests{service:foo,env:bar}.rollup(10) KEDA can get the metrics without any problem

    # curl result of query 4
    
      "status": "ok",
      "resp_version": 1,
      "series": [
        {
          "end": 1669106960000,
          "attributes": {},
          "metric": "(trace.express.request.hits / kubernetes.cpu.requests)",
          "interval": 1,
          "tag_set": [],
          "start": 1669106910000,
          "length": 6,
          "query_index": 0,
          "aggr": "sum",
          "scope": "service:foo,env:bar",
          "pointlist": [
            [
              1669106910000,
              64426.34634984409
            ],
            [
              1669106920000,
              66898.41915361531
            ],
            [
              1669106930000,
              65685.75394920415
            ],
            [
              1669106940000,
              66132.75977946246
            ],
            [
              1669106950000,
              66287.59952733
            ],
            [
              1669106960000,
              66472.42117646785
            ]
          ],
          "expression": "(sum:trace.express.request.hits{service:foo,env:bar} / avg:kubernetes.cpu.requests{service:foo,env:bar}.rollup(10))",
          "unit": null,
          "display_name": "(trace.express.request.hits / kubernetes.cpu.requests)"
        }
      ],
      "to_date": 1669106966000,
      "query": "sum:trace.express.request.hits{service:foo,env:bar}/avg:kubernetes.cpu.requests{service:foo,env:bar}.rollup(10)",
      "message": "",
      "res_type": "time_series",
      "times": [],
      "from_date": 1669106906000,
      "group_by": [],
      "values": []
    }
    

    Expected Behavior

    KEDA can get the metrics without any problem as long as it is working with curl for same query

    Actual Behavior

    Explained above

    Steps to Reproduce the Problem

    Explained above

    Logs from KEDA operator

    E1123 09:05:17.876484       1 datadog_scaler.go:318] keda_metrics_adapter/datadog_scaler "msg"="error getting metrics from Datadog" "error"="error when retrieving Datadog metrics: Get \"https://api.datadoghq.com/api/v1/query?from=1669194254&query=sum%3Atrace.express.request.hits%7Bservice%3Afoo%2Cenv%3Abar%7D.as_rate%28%29%2Favg%3Akubernetes.cpu.requests%7Bservice%3Afoo%2Cenv%3Abar%7D.rollup%2810%29&to=1669194314\": context deadline exceeded (Client.Timeout exceeded while awaiting headers)" "name"="foo" "namespace"="bar" "type"="ScaledObject"
    

    KEDA Version

    2.8.1

    Kubernetes Version

    < 1.23

    Platform

    Amazon Web Services

    Scaler Details

    Datadog

    Anything else?

    No response

    bug 
    opened by dogzzdogzz 6
  • Apache Kafka Scaler: Implementation for Excluding Persistent Lag

    Apache Kafka Scaler: Implementation for Excluding Persistent Lag

    Summary

    Add implementation for excluding consumer lag from partitions with persistent lag.

    Use Case

    In situations where consumer is unable to process / consume from partition due to errors etc., committed offset will not change, and consumer lag on that partition will be increasing and never be decreased. KEDA trigger scaling towards the maxReplicaCount.

    If partition lag is deemed as persistent, excluding its consumer lag will allow KEDA to trigger scaling appropriately based on the consumer lag observed on other topics and partition, and not be affected by this consumer lag which will not be resolved by scaling.

    Logic

    Upon each polling cycle, check if current consumer offset is same as previous consumer offset.

    Different: return endOffset - consumerOffset (No different from current implementation) Same: return 0 (To exclude this partition's consumer lag from the total lag)

    Checklist

    • [ ] When introducing a new scaler, I agree with the scaling governance policy
    • [X] Commits are signed with Developer Certificate of Origin (DCO - learn more)
    • [X] Tests have been added
    • [ ] A PR is opened to update our Helm chart (repo) (if applicable, ie. when deployment manifests are modified)
    • [X] A PR is opened to update the documentation on (repo) (if applicable)
    • [X] Changelog has been updated and is aligned with our changelog requirements

    Relates to https://github.com/kedacore/keda/issues/3904 Relates to https://github.com/kedacore/keda-docs/pull/984

    opened by JosephABC 0
  • Apache Kafka Scaler: Implementation for Excluding Persistent Lag

    Apache Kafka Scaler: Implementation for Excluding Persistent Lag

    Proposal

    Add implementation for excluding consumer lag from partitions with persistent lag.

    Use-Case

    In situations where consumer is unable to process / consume from partition due to errors etc., committed offset will not change, and consumer lag on that partition will be increasing and never be decreased. KEDA trigger scaling towards the maxReplicaCount.

    If partition lag is deemed as persistent, excluding its consumer lag will allow KEDA to trigger scaling appropriately based on the consumer lag observed on other topics and partition, and not be affected by this consumer lag which will not be resolved by scaling.

    Anything else?

    Implementation I have in mind is as follows: Upon each polling cycle, check if current consumer offset is same as previous consumer offset.

    • Different: return endOffset - consumerOffset (No different from current implementation)
    • Same: return 0 (To exclude this partition's consumer lag from the total lag)

    I have a working proof-of-concept for this implementation, will add a PR to this feature request issue if neccessary. Please let me know your thoughts / comments about the usefulness of this proposal and also about the implementation I suggested above.

    Pull Requests

    keda: https://github.com/kedacore/keda/pull/3905 keda-docs: https://github.com/kedacore/keda-docs/pull/984

    needs-discussion feature-request 
    opened by JosephABC 0
  • ERROR scalehandler Error getting scale decision

    ERROR scalehandler Error getting scale decision

    Report

    ERROR	scalehandler	Error getting scale decision	{"scaledobject.Name": "scaled-object-x-touch", "scaledObject.Namespace": "x", "scaleTarget.Name": "x-touch", "error": "error resolving secrets for ScaleTarget: error reading config ref &ConfigMapEnvSource{LocalObjectReference:LocalObjectReference{Name:config-map-x-6665h6bgt4,},Optional:nil,} on namespace x/: ConfigMap \"config-map-x-6665h6bgt4\" not found"}
    

    Expected Behavior

    scale target

    Actual Behavior

    cant scale because of configmap not found error.

    Steps to Reproduce the Problem

    1. change configmap yaml and redeploy

    Logs from KEDA operator

    ERROR	scalehandler	Error getting scale decision	{"scaledobject.Name": "scaled-object-x-touch", "scaledObject.Namespace": "x", "scaleTarget.Name": "x-touch", "error": "error resolving secrets for ScaleTarget: error reading config ref &ConfigMapEnvSource{LocalObjectReference:LocalObjectReference{Name:config-map-x-6665h6bgt4,},Optional:nil,} on namespace x/: ConfigMap \"config-map-x-6665h6bgt4\" not found"}
    

    KEDA Version

    2.7.1

    Kubernetes Version

    < 1.23

    Platform

    Amazon Web Services

    Scaler Details

    rabbitmq

    Anything else?

    bug 
    opened by aradhell 18
Releases(v2.8.1)
  • v2.8.1(Sep 1, 2022)

    We are happy to release KEDA 2.8.1 ๐ŸŽ‰

    Learn how to deploy KEDA by reading our documentation.

    ๐Ÿ—“๏ธ The next KEDA release is currently being estimated for Nov 3rd, 2022, learn more in our roadmap.

    New

    None.

    Improvements

    None.

    Fixes

    • General: Prometheus metrics no longer always return 0 (#3554)
    • Datadog Scaler: Fix panic generated parsing returned metrics (#3448)
    • RabbitMQ Scaler: Parse vhost correctly if it's provided in the host url (#3602)

    Deprecations

    None.

    Breaking Changes

    None.

    Other

    • General: Execute trivy scan (on PRs) only if there are changes in deps (#3540)

    New Contributors

    • @vflaux made their first contribution in https://github.com/kedacore/keda/pull/3617

    Full Changelog: https://github.com/kedacore/keda/compare/v2.8.0...v2.8.1

    Source code(tar.gz)
    Source code(zip)
    keda-2.8.1.yaml(571.39 KB)
  • v2.8.0(Aug 10, 2022)

    We are happy to release KEDA 2.8.0 which now has 50+ built-in scalers ๐ŸŽ‰

    Here are some highlights:

    • Introduction of new AWS DynomoDB Streams & NATS JetStream scalers.
    • Introduction of new Azure AD Workload Identity authentication provider.
    • Support for specifying minReplicaCount in ScaledJob.
    • Support to customize the HPA name.
    • Support for permission segregation when using Azure AD Pod / Workload Identity
    • Additional features to various scalers such as AWS SQS, Azure Pipelines, CPU, GCP Stackdriver, Kafka, Memory, Prometheus

    Here are the new deprecation(s) as of this release:

    • rolloutStrategy in ScaledJob is deprecated in favor of rollout.strategy

    Learn how to deploy KEDA by reading our documentation.

    ๐Ÿ—“๏ธ The next KEDA release is currently being estimated for Nov 3rd, 2022, learn more in our roadmap.

    New

    • General: Introduce new AWS DynamoDB Streams Scaler (#3124)
    • General: Introduce new NATS JetStream scaler (#2391)
    • General: Introduce activationThreshold/minMetricValue for all scalers (#2800)
    • General: Support for minReplicaCount in ScaledJob (#3426)
    • General: Support to customize HPA name (#3057)
    • General: Make propagation policy for ScaledJob rollout configurable (#2910)
    • General: Support for Azure AD Workload Identity as a pod identity provider. (#2487|#2656)
    • General: Support for permission segregation when using Azure AD Pod / Workload Identity. (#2656)
    • AWS SQS Queue Scaler: Support for scaling to include in-flight messages. (#3133)
    • Azure Pipelines Scaler: Support for Azure Pipelines to support demands (capabilities) (#2328)
    • CPU Scaler: Support for targeting specific container in a pod (#1378)
    • GCP Stackdriver Scaler: Added aggregation parameters (#3008)
    • Kafka Scaler: Support of passphrase encrypted PKCS #\8 private key (3449)
    • Memory Scaler: Support for targeting specific container in a pod (#1378)
    • Prometheus Scaler: Add ignoreNullValues to return error when prometheus return null in values (#3065)

    Improvements

    • General: Add settings for configuring leader election (#2836)
    • General: external extension reduces connection establishment with long links (#3193)
    • General: Reference ScaledObject's/ScaledJob's name in the scalers log (3419)
    • General: Use mili scale for the returned metrics (#3135)
    • General: Use more readable timestamps in KEDA Operator logs (#3066)
    • Kafka Scaler: Handle Sarama errors properly (#3056)

    Fixes

    • General: Provide patch for CVE-2022-27191 vulnerability (#3378)
    • General: Refactor adapter startup to ensure proper log initilization. (2316)
    • General: Scaleobject ready condition 'False/Unknow' to 'True' requeue (#3096)
    • General: Use go install in the Makefile for downloading dependencies (#2916)
    • General: Use metricName from GetMetricsSpec in ScaledJobs instead of queueLength (#3032)
    • ActiveMQ Scaler: KEDA doesn't respect restAPITemplate (#3188)
    • Azure Eventhub Scaler: KEDA operator crashes on nil memory panic if the eventhub connectionstring for Azure Eventhub Scaler contains an invalid character (#3082)
    • Azure Pipelines Scaler: Fix issue with Azure Pipelines wrong PAT Auth. (#3159)
    • Datadog Scaler: Ensure that returns the same element that has been checked (#3448)
    • Kafka Scaler: Check lagThreshold is a positive number (#3366)
    • Selenium Grid Scaler: Fix bug where edge active sessions not being properly counted (#2709)
    • Selenium Grid Scaler: Fix bug where Max Sessions was not working correctly (#3061)

    Deprecations

    • ScaledJob: rolloutStrategy is deprecated in favor of rollout.strategy (#2910)

    Breaking Changes

    None.

    Other

    • General: Migrate e2e test to Go. (2737)
    • General: Bump Golang to 1.17.13 and deps (#3447)
    • General: Fix devcontainer on ARM64 Arch. (3084)
    • General: Improve error message in resolving ServiceAccount for AWS EKS PodIdentity (3142)
    • General: Improve e2e on PR process through comments. (3004)
    • General: Split e2e test by functionality. (#3270)
    • General: Unify the used tooling on different workflows and arch. (3092)
    • General: Use Github's Checks API for e2e tests on PR. (2567)

    New Contributors

    • @Wolfe1 made their first contribution in https://github.com/kedacore/keda/pull/3062
    • @champly made their first contribution in https://github.com/kedacore/keda/pull/3097
    • @LiamStorkey made their first contribution in https://github.com/kedacore/keda/pull/3132
    • @saschagrunert made their first contribution in https://github.com/kedacore/keda/pull/3186
    • @cpanato made their first contribution in https://github.com/kedacore/keda/pull/3187
    • @aviadlevy made their first contribution in https://github.com/kedacore/keda/pull/3068
    • @yokawasa made their first contribution in https://github.com/kedacore/keda/pull/3121
    • @raravena80 made their first contribution in https://github.com/kedacore/keda/pull/3160
    • @sl1pm4t made their first contribution in https://github.com/kedacore/keda/pull/3323
    • @FullyScaled made their first contribution in https://github.com/kedacore/keda/pull/3338
    • @davidlanouette made their first contribution in https://github.com/kedacore/keda/pull/3395
    • @FrittenToni made their first contribution in https://github.com/kedacore/keda/pull/3425
    • @tobiaskrause made their first contribution in https://github.com/kedacore/keda/pull/3413
    • @wsugarman made their first contribution in https://github.com/kedacore/keda/pull/3430
    • @Eldarrin made their first contribution in https://github.com/kedacore/keda/pull/2795
    • @liangyuanpeng made their first contribution in https://github.com/kedacore/keda/pull/3021

    Full Changelog: https://github.com/kedacore/keda/compare/v2.7.1...v2.8.0

    Source code(tar.gz)
    Source code(zip)
    keda-2.8.0.yaml(571.29 KB)
  • v2.7.1(May 10, 2022)

    We are happy to release KEDA v2.7.1 ๐ŸŽ‰

    Here are some highlights:

    • Fix autoscaling behaviour while paused
    • Don't hardcode UIDs in securityContext

    Learn how to deploy KEDA by reading our documentation.

    Improvements

    • General: Don't hardcode UIDs in securityContext (#3012)

    Other

    • General: Fix CVE-2022-21221 in github.com/valyala/fasthttp (#2775)
    • General: Bump Golang to 1.17.9 (#3016)
    • General: Fix autoscaling behaviour while paused. (#3009)
    Source code(tar.gz)
    Source code(zip)
    keda-2.7.1.yaml(424.41 KB)
  • v2.7.0(May 5, 2022)

    We are happy to release KEDA 2.7.0 ๐ŸŽ‰

    Here are some highlights:

    • Introduction of pausing autoscaling through annotations for ScaledObject.
    • Introduce ARM-based container image
    • Introduction of AWS DynamoDB, Azure Data Explorer, GCP Stackdriver & GCP Storage scalers
    • Introduction of Azure Key Vault as trigger authentication provider
    • KEDA is secure-by-default and runs as non-root
    • Support for non-public Microsoft Azure clouds
    • 19 new contributors
    • Deprecation of metadata.type is deprecated in favor of the global metricType for CPU, Memory, Datadog scalers (GitHub Discussion)

    Learn how to deploy KEDA by reading our documentation.

    New

    • General: Introduce annotation "autoscaling.keda.sh/paused-replicas" for ScaledObjects to pause scaling at a fixed replica count. (#944)
    • General: Introduce ARM-based container image for KEDA (#2263|#2262)
    • General: Introduce new AWS DynamoDB Scaler (#2486)
    • General: Introduce new Azure Data Explorer Scaler (#1488|#2734)
    • General: Introduce new GCP Stackdriver Scaler (#2661)
    • General: Introduce new GCP Storage Scaler (#2628)
    • General: Provide support for authentication via Azure Key Vault (#900|#2733)
    • General: Support for ValueMetricType in ScaledObject for all scalers except CPU/Memory (#2030)

    Improvements

    • General: Bump dependencies versions (#2978)
    • General: Properly handle restoreToOriginalReplicaCount if ScaleTarget is missing (#2872)
    • General: Support for running KEDA secure-by-default as non-root (#2933)
    • General: Synchronize HPA annotations from ScaledObject (#2659)
    • General: Updated HTTPClient to be proxy-aware, if available, from environment variables. (#2577)
    • General: Using manager client in KEDA Metrics Server to avoid flush request to Kubernetes Apiserver(2914)
    • ActiveMQ Scaler: Add CorsHeader information to ActiveMQ Scaler (#2884)
    • AWS CloudWatch: Add support to use expressions(#2998)
    • Azure Application Insights Scaler: Provide support for non-public clouds (#2735)
    • Azure Blob Storage Scaler: Add optional parameters for counting blobs recursively (#1789)
    • Azure Event Hub Scaler: Improve logging when blob container not found (#2363)
    • Azure Event Hub Scaler: Provide support for non-public clouds (#1915)
    • Azure Log Analytics Scaler: Provide support for non-public clouds (#1916)
    • Azure Monitor Scaler: Provide support for non-public clouds (#1917)
    • Azure Queue: Don't call Azure queue GetProperties API unnecessarily (#2613)
    • Datadog Scaler: Validate query to contain { to prevent panic on invalid query (#2625)
    • Datadog Scaler: Several improvements, including a new optional parameter metricUnavailableValue to fill data when no Datadog metric was returned (#2657)
    • Datadog Scaler: Rely on Datadog API to validate the query (2761)
    • Graphite Scaler Use the latest non-null datapoint returned by query. (#2625)
    • Kafka Scaler: Make "disable" a valid value for tls auth parameter (#2608)
    • Kafka Scaler: New scaleToZeroOnInvalidOffset to control behavior when partitions have an invalid offset (#2033#2612)
    • Metric API Scaler: Improve error handling on not-ok response (#2317)
    • New Relic Scaler: Support to get account value from authentication resources. (#2883)
    • Prometheus Scaler: Check and properly inform user that threshold is not set (#2793)
    • Prometheus Scaler: Support for X-Scope-OrgID header (#2667)
    • RabbitMQ Scaler: Include vhost for RabbitMQ when retrieving queue info with useRegex (#2498)
    • Selenium Grid Scaler: Consider maxSession grid info when scaling. (#2618)

    Deprecations

    • CPU, Memory, Datadog Scalers: metadata.type is deprecated in favor of the global metricType (#2030)

    Breaking Changes

    None.

    Other

    • General: Clean go.mod to fix golangci-lint (#2783)
    • General: Consistent file naming in pkg/scalers/ (#2806)
    • General: Fix mismatched errors for updating HPA (#2719)
    • General: Improve e2e tests reliability (#2580)
    • General: Improve e2e tests to always cleanup resources in cluster (#2584)
    • General: Internally represent value and threshold as int64 (#2790)
    • General: Refactor active directory endpoint parsing for Azure scalers. (#2853)
    • AWS CloudWatch: Adding e2e test (#1525)
    • AWS DynamoDB: Setup AWS DynamoDB test account (#2803)
    • AWS Kinesis Stream: Adding e2e test (#1526)
    • AWS SQS Queue: Adding e2e test (#1527)
    • Azure Data Explorer: Adding e2e test (#2841)
    • Azure Data Explorer: Replace deprecated function iter.Next() in favour of iter.NextRowOrError() (#2989)
    • Azure Service Bus: Adding e2e test (#2731|#2732)
    • External Scaler: Adding e2e test. (#2697)
    • External Scaler: Fix issue with internal KEDA core prefix being passed to external scaler. (#2640)
    • GCP Pubsub Scaler: Adding e2e test (#1528)
    • Hashicorp Vault Secret Provider: Adding e2e test (#2842)
    • Memory Scaler: Adding e2e test (#2220)
    • Selenium Grid Scaler: Adding e2e test (#2791)

    New Contributors

    • @gunniwho made their first contribution in https://github.com/kedacore/keda/pull/2611
    • @alileza made their first contribution in https://github.com/kedacore/keda/pull/2629
    • @sergeyshevch made their first contribution in https://github.com/kedacore/keda/pull/2659
    • @Photonios made their first contribution in https://github.com/kedacore/keda/pull/2591
    • @yasiboni-max made their first contribution in https://github.com/kedacore/keda/pull/2627
    • @SushmithaVReddy made their first contribution in https://github.com/kedacore/keda/pull/2717
    • @v-shenoy made their first contribution in https://github.com/kedacore/keda/pull/2727
    • @xoanmm made their first contribution in https://github.com/kedacore/keda/pull/2763
    • @Shitaibin made their first contribution in https://github.com/kedacore/keda/pull/2677
    • @samueleresca made their first contribution in https://github.com/kedacore/keda/pull/2486
    • @adborroto made their first contribution in https://github.com/kedacore/keda/pull/2774
    • @chalin made their first contribution in https://github.com/kedacore/keda/pull/2811
    • @wltbenade made their first contribution in https://github.com/kedacore/keda/pull/2821
    • @pragmaticivan made their first contribution in https://github.com/kedacore/keda/pull/2898
    • @aryan9600 made their first contribution in https://github.com/kedacore/keda/pull/2765
    • @xphyr made their first contribution in https://github.com/kedacore/keda/pull/2924
    • @bamboo12366 made their first contribution in https://github.com/kedacore/keda/pull/2922
    • @joelsmith made their first contribution in https://github.com/kedacore/keda/pull/2999
    • @dekelev made their first contribution in https://github.com/kedacore/keda/pull/2997

    Full Changelog: https://github.com/kedacore/keda/compare/v2.6.1...v2.7.0

    Source code(tar.gz)
    Source code(zip)
    keda-2.7.0.yaml(424.54 KB)
  • v2.6.1(Feb 10, 2022)

    We are happy to release KEDA 2.6.1 ๐ŸŽ‰

    Here are some highlights:

    • This release fixes problems that might occur when there are multiple triggers in a ScaledObject. It is highly recommended to update as soon as possible.

    Learn how to deploy KEDA by reading our documentation.

    Improvements

    • General: Fix generation of metric names if any of ScaledObject's triggers is unavailable (#2592)
    • General: Fix logging in KEDA operator and properly set ScaledObject.Status in case there is a problem in a ScaledObject's trigger (#2603)

    Other

    • General: Fix failing tests based on the scale to zero bug (#2603)

    New Contributors

    • @RamCohen made their first contribution in https://github.com/kedacore/keda/pull/2606

    Full Changelog: https://github.com/kedacore/keda/compare/v2.6.0...v2.6.1

    Source code(tar.gz)
    Source code(zip)
    keda-2.6.1.yaml(419.34 KB)
  • v2.6.0(Jan 31, 2022)

    We are happy to release KEDA 2.6.0 ๐ŸŽ‰

    Here are some highlights:

    • Five new Scalers ๐ŸŽ‰ ๐ŸŽ‰
    • Important bugfixes and improvements related to caching
    • KEDA images are signed using cosign
    • We no longer push to Docker Hub as of v2.5 as per our announcement in March 2021

    Learn how to deploy KEDA by reading our documentation.

    New

    • Add ActiveMQ Scaler (#2305)
    • Add Azure Application Insights Scaler (2506)
    • Add New Datadog Scaler (#2354)
    • Add New Relic Scaler (#2387)
    • Add PredictKube Scaler (#2418)

    Improvements

    • General: Delete the cache entry when a ScaledObject is deleted (#2564)
    • General: Fail fast on buildScalers when not able to resolve a secret that a deployment is relying on (#2394)
    • General: keda-operator Cluster Role: add list and watch access to service accounts (#2406)|(#2410)
    • General: Sign KEDA images published on GitHub Container Registry (#2501)|(#2502)|(#2504)
    • AWS Scalers: Support temporary AWS credentials using session tokens (#2573)
    • AWS SQS Scaler: Allow using simple queue name instead of URL (#2457)
    • Azure EventHub Scaler: Don't expose connection string in metricName (#2404)
    • Azure Pipelines Scaler: Support poolName or poolID validation (#2370)
    • CPU Scaler: AAding e2e test for the cpu scaler (#2441)
    • External Scaler: Fix wrong calculation of retry backoff duration (#2416)
    • Graphite Scaler: Use the latest datapoint returned, not the earliest (#2365)
    • Kafka Scaler: Allow flag topic to be optional, where lag of all topics within the consumer group will be used for scaling (#2409)
    • Kafka Scaler: Concurrently query brokers for consumer and producer offsets (#2405)
    • Kubernetes Workload Scaler: Ignore terminated pods (#2384)
    • PostgreSQL Scaler: Assign PostgreSQL userName to correct attribute (#2432)|(#2433)
    • Prometheus Scaler: Support namespaced Prometheus queries (#2575)

    Breaking Changes

    New Contributors

    • @solsson made their first contribution in https://github.com/kedacore/keda/pull/2384
    • @tomasspi made their first contribution in https://github.com/kedacore/keda/pull/2406
    • @melisatanrverdi made their first contribution in https://github.com/kedacore/keda/pull/2305
    • @VerstraeteBert made their first contribution in https://github.com/kedacore/keda/pull/2405
    • @marcelobartsch made their first contribution in https://github.com/kedacore/keda/pull/2387
    • @tsndqst made their first contribution in https://github.com/kedacore/keda/pull/2432
    • @yusank made their first contribution in https://github.com/kedacore/keda/pull/2416
    • @JatinSanghvi made their first contribution in https://github.com/kedacore/keda/pull/2443
    • @or-shachar made their first contribution in https://github.com/kedacore/keda/pull/2444
    • @PaulLiang1 made their first contribution in https://github.com/kedacore/keda/pull/2409
    • @arapulido made their first contribution in https://github.com/kedacore/keda/pull/2354
    • @nicolaferraro made their first contribution in https://github.com/kedacore/keda/pull/2483
    • @whitesource-bolt-for-github made their first contribution in https://github.com/kedacore/keda/pull/2514
    • @daniel-yavorovich made their first contribution in https://github.com/kedacore/keda/pull/2418
    • @JacobHenner made their first contribution in https://github.com/kedacore/keda/pull/2573
    • @markrzasa made their first contribution in https://github.com/kedacore/keda/pull/2506

    Full Changelog: https://github.com/kedacore/keda/compare/v2.5.0...v2.6.0

    Source code(tar.gz)
    Source code(zip)
    keda-2.6.0.yaml(419.34 KB)
  • v2.5.0(Nov 25, 2021)

    We are happy to release KEDA 2.5.0 ๐ŸŽ‰

    Here are some highlights:

    • Introducing a new Cassandra scaler
    • Introducing a new Elasticsearch scaler
    • Introducing a new Graphite scaler
    • GCP PubSub Scaler: subscriptionSize is deprecated in favor of mode and value
    • Performance improvements
    • Lot of improvements in several scalers

    Learn how to deploy KEDA by reading our documentation.

    New

    • Add Cassandra Scaler (#2211)
    • Add Elasticsearch Scaler (#2311)
    • Add Graphite Scaler (#1628)
    • ScaledJob: introduce MultipleScalersCalculation (#2016)
    • ScaledJob: introduce RolloutStrategy (#2164)
    • Add ScalersCache to reuse scalers unless they need changing (#2187)
    • Cache metric names provided by KEDA Metrics Server (#2279)

    Improvements

    • Artemis Scaler: parse out broker config parameters in case restAPITemplate is given (#2104)
    • AWS Cloudwatch Scaler: improve metric exporting logic (#2243)
    • AWS Cloudwatch Scaler: return minimum value for the metric when cloudwatch returns empty list (#2345)
    • Azure Log Analytics Scaler: add support to provide the metric name(#2106)
    • Azure Pipelines Scaler: improve logs (#2297)
    • Cron Scaler: improve validation in case start & end input is same (#2032)
    • Cron Scaler: improve the cron validation (#2038)
    • GCP PubSub Scaler: introduce SubscriptionSize and OldestUnackedMessageAge modes (#2266)
    • GCP PubSub Scaler: add GCP identity authentication when using (#2225)
    • GCP PubSub Scaler: add possibility to reference a GCP PubSub subscription by full link, including project ID (#2269)
    • InfluxDB Scaler: add unsafeSsl parameter (#2157|#2320)
    • Metrics API Scaler: add Bearer auth (#2028)
    • MongoDB Scaler: add support to get connection data from Trigger Authorization (#2115)
    • MSSQL Scaler: add support to get connection data from Trigger Authorization (#2112)
    • MySQL Scaler: add support to get connection data from Trigger Authorization (#2113)
    • MySQL Scaler: don't expose connection string in metricName (#2171)
    • PostgreSQL Scaler: add support to get connection data from Trigger Authorization (#2114)
    • Prometheus Scaler: validating values length in Prometheus query response (#2264)
    • Prometheus Scaler: omit serverAddress from generated metric name (#2099)
    • RabbitMQ Scaler: anonymize the host in case of HTTP failure (#2041)
    • RabbitMQ Scaler: escape queueName and vhostName before use them in query string (bug fix) (#2055)
    • RabbitMQ Scaler: add custom http timeout (#2086)
    • RabbitMQ Scaler: add pageSize (using regex) (#2162|#2319)
    • Redis Scaler: upgrade library, add username and Sentinel support (#2181)
    • SeleniumGrid Scaler: add unsafeSsl parameter (#2157)
    • Stan Scaler: provide support for configuring authentication through TriggerAuthentication (#2167)
    • Allow setting MaxConcurrentReconciles for controllers (#2272)
    • Cleanup metric names inside scalers (#2260)
    • Drop support to ValueMetricType using cpu_memory_scaler (#2218)
    • Improve metric name creation to be unique using scaler index inside the scaler (#2161)
    • Improve error message if IdleReplicaCount are equal to MinReplicaCount to be the same as the check (#2212)
    • TriggerAuthentication/Vault: add support for HashiCorp Vault namespace (Vault Enterprise) (#2085)

    Deprecations

    • GCP PubSub Scaler: subscriptionSize is deprecated in favor of mode and value (#2266)

    Breaking Changes

    • None

    Other

    • Ensure that context.Context values are properly passed down the stack (#2202|#2249)
    • Refactor AWS related scalers to reuse the AWS clients instead of creating a new one for every GetMetrics call (#2255)
    • Improve context handling in appropriate functionality in which we instantiate scalers (#2267)
    • Migrate to Kubebuilder v3 (#2082)
      • API path has been changed: github.com/kedacore/keda/v2/api/v1alpha1 -> github.com/kedacore/keda/v2/apis/keda/v1alpha1
    • Use Patch to set FallbackCondition on ScaledObject.Status (#2037)
    • Bump Golang to 1.17.3 (#2329)
    • Add Makefile mockgen targets (#2090|#2184)
    • Add github action to run e2e command "on-demand" (#2241)
    • Add execution url in the pr-e2e triggering comment and fix problem related with not starting with (#2306)

    New Contributors

    • @fbalicchia made their first contribution in https://github.com/kedacore/keda/pull/2051
    • @chapurlatn made their first contribution in https://github.com/kedacore/keda/pull/2085
    • @bpinske made their first contribution in https://github.com/kedacore/keda/pull/2092
    • @mihaitodor made their first contribution in https://github.com/kedacore/keda/pull/2137
    • @dtsioumas made their first contribution in https://github.com/kedacore/keda/pull/2157
    • @Deichindianer made their first contribution in https://github.com/kedacore/keda/pull/2212
    • @jerbob92 made their first contribution in https://github.com/kedacore/keda/pull/2181
    • @etamarw made their first contribution in https://github.com/kedacore/keda/pull/2164
    • @jmalvarezf-lmes made their first contribution in https://github.com/kedacore/keda/pull/2225
    • @fivesheep made their first contribution in https://github.com/kedacore/keda/pull/2243
    • @sosoftmandruszak made their first contribution in https://github.com/kedacore/keda/pull/2264
    • @Friedrich42 made their first contribution in https://github.com/kedacore/keda/pull/2266
    • @endersonmenezes made their first contribution in https://github.com/kedacore/keda/pull/2297
    • @orphaner made their first contribution in https://github.com/kedacore/keda/pull/2311
    • @allupaku made their first contribution in https://github.com/kedacore/keda/pull/2345

    Full Changelog: https://github.com/kedacore/keda/compare/v2.4.0...v2.5.0

    Detailed Overview
    • Update Python in dev containers and add .gitattributes by @JorTurFer in https://github.com/kedacore/keda/pull/2021
    • validation and check in cron scaler for same start and end case by @Ritikaa96 in https://github.com/kedacore/keda/pull/2032
    • chore: KEDA was accepted as CNCF Incubation project by @tomkerkhove in https://github.com/kedacore/keda/pull/2039
    • Add Bearer Auth for Metrics API scaler by @JorTurFer in https://github.com/kedacore/keda/pull/2028
    • Update cron scaler to parse the cron with parser instead of searching for '-' by @JorTurFer in https://github.com/kedacore/keda/pull/2038
    • adapt test to #381 by @fbalicchia in https://github.com/kedacore/keda/pull/2051
    • use Patch to set FallbackCondition on ScaledObject.Status by @zroubalik in https://github.com/kedacore/keda/pull/2037
    • Escape queueName and vhostName in RabbitMQ Scaler before use them in query string (bug fix) by @JorTurFer in https://github.com/kedacore/keda/pull/2055
    • Anonymize the host in case of HTTP failure (RabbitMQ Scaler) by @JorTurFer in https://github.com/kedacore/keda/pull/2041
    • Update Makefile to ensure that bash is used instead of sh or another by @JorTurFer in https://github.com/kedacore/keda/pull/2061
    • Adds explicit the option of setting KEDA_HTTP_DEFAULT_TIMEOUT by @JorTurFer in https://github.com/kedacore/keda/pull/2062
    • fix typo in isScalableCache by @zroubalik in https://github.com/kedacore/keda/pull/2064
    • build-tools image: bump Golang to 1.16.7 by @zroubalik in https://github.com/kedacore/keda/pull/2067
    • bump golangci-lint to 1.42.0 by @zroubalik in https://github.com/kedacore/keda/pull/2066
    • bump Golang to 1.16.7 by @zroubalik in https://github.com/kedacore/keda/pull/2065
    • Bump bruceadams/get-release from 1.2.2 to 1.2.3 by @dependabot in https://github.com/kedacore/keda/pull/2081
    • Migrate to Kubebuilder v3 by @zroubalik in https://github.com/kedacore/keda/pull/2082
    • Bump github.com/aws/aws-sdk-go from 1.40.34 to 1.40.35 by @dependabot in https://github.com/kedacore/keda/pull/2088
    • Bump github.com/tidwall/gjson from 1.8.1 to 1.9.0 by @dependabot in https://github.com/kedacore/keda/pull/2089
    • Adds e2e test for PostgreSQL scaler by @JorTurFer in https://github.com/kedacore/keda/pull/2091
    • Add custom http timeout in RabbitMQ Scaler by @JorTurFer in https://github.com/kedacore/keda/pull/2086
    • TriggerAuthentication/Vault: add support for vault namespace by @chapurlatn in https://github.com/kedacore/keda/pull/2085
    • ScaledJob: introduce MultipleScalersCalculation by @TsuyoshiUshio in https://github.com/kedacore/keda/pull/2016
    • Graphite Scaler + e2e tests by @bpinske in https://github.com/kedacore/keda/pull/2092
    • Fix dev container after Golang version update by @JorTurFer in https://github.com/kedacore/keda/pull/2102
    • Raises an error when RabbitMQ regex matches more than 1 page by @JorTurFer in https://github.com/kedacore/keda/pull/2103
    • Add support to provide the metric name in Azure Log Analytics Scaler by @JorTurFer in https://github.com/kedacore/keda/pull/2106
    • Add e2e test for cron scaler by @JorTurFer in https://github.com/kedacore/keda/pull/2107
    • Add support to get connection data from Trigger Authorization in MSSQL Scaler by @JorTurFer in https://github.com/kedacore/keda/pull/2112
    • Add support to get connection data from Trigger Authorization in MySQL Scaler by @JorTurFer in https://github.com/kedacore/keda/pull/2113
    • Add support to get connection data from Trigger Authorization in MongoDB Scaler by @JorTurFer in https://github.com/kedacore/keda/pull/2115
    • Add support to get connection data from Trigger Authorization in PostgreSQL Scaler by @JorTurFer in https://github.com/kedacore/keda/pull/2114
    • Fix MongoDB dbName property parsing by @JorTurFer in https://github.com/kedacore/keda/pull/2140
    • Add Makefile mockgen targets by @mihaitodor in https://github.com/kedacore/keda/pull/2137
    • Fix typo in Makefile by @JorTurFer in https://github.com/kedacore/keda/pull/2154
    • Add pageSize (using regex) in RabbitMQ Scaler by @JorTurFer in https://github.com/kedacore/keda/pull/2162
    • Artemis Scaler parses out broker config parameters in case restAPITemplate is given by @Ritikaa96 in https://github.com/kedacore/keda/pull/2104
    • Add unsafeSsl parameter on InfluxDB by @dtsioumas in https://github.com/kedacore/keda/pull/2157
    • bump Golang to 1.16.9 by @zroubalik in https://github.com/kedacore/keda/pull/2186
    • bump deps by @zroubalik in https://github.com/kedacore/keda/pull/2185
    • update liiklus protobuf generation by @zroubalik in https://github.com/kedacore/keda/pull/2184
    • Prometheus scaler: omit serverAddress from generated metric name by @zroubalik in https://github.com/kedacore/keda/pull/2099
    • Improve metric name creation to be unique using scaler index inside the scaler by @JorTurFer in https://github.com/kedacore/keda/pull/2161
    • Provide support for configuring authentication through TriggerAuthentication for Stan scaler by @Ritikaa96 in https://github.com/kedacore/keda/pull/2167
    • MySQL Scaler: don't expose connection string in metricName by @zroubalik in https://github.com/kedacore/keda/pull/2171
    • chore: Provide configuration for automatically closing inactive issues by @tomkerkhove in https://github.com/kedacore/keda/pull/2189
    • chore: Change feature as allowed label for stale issues, instead of feature-request by @tomkerkhove in https://github.com/kedacore/keda/pull/2193
    • docs: Add step in release process for next release by @tomkerkhove in https://github.com/kedacore/keda/pull/2205
    • Fix error message if IdleReplicaCount is equal to MinReplicaCount by @Deichindianer in https://github.com/kedacore/keda/pull/2212
    • e2e: run Solace and Selenium Grid tests by @zroubalik in https://github.com/kedacore/keda/pull/2216
    • Update CI to run build/unit tests on arm64 by @zroubalik in https://github.com/kedacore/keda/pull/2213
    • Propagate contexts down scaler call stacks by @arschles in https://github.com/kedacore/keda/pull/2202
    • Drop support to ValueMetricType using cpu_memory_scaler by @JorTurFer in https://github.com/kedacore/keda/pull/2218
    • Add Cassandra scaler and tests by @nilayasiktoprak in https://github.com/kedacore/keda/pull/2211
    • fix: add context to Cassandra Scaler functions by @zroubalik in https://github.com/kedacore/keda/pull/2221
    • Improve Redis support by @jerbob92 in https://github.com/kedacore/keda/pull/2181
    • Fix Cassandra e2e test by @zroubalik in https://github.com/kedacore/keda/pull/2238
    • Fix Cassandra e2e tests part 2 by @zroubalik in https://github.com/kedacore/keda/pull/2239
    • ScaledJob: introduce rolloutStrategy by @etamarw in https://github.com/kedacore/keda/pull/2164
    • Fix sentinel streams e2e test by @jerbob92 in https://github.com/kedacore/keda/pull/2245
    • e2e: extend deployment timeouts by @zroubalik in https://github.com/kedacore/keda/pull/2246
    • Add GCP identity authentication when using Pubsub Scaler by @jmalvarezf-lmes in https://github.com/kedacore/keda/pull/2225
    • e2e: extending Redis timeouts by @zroubalik in https://github.com/kedacore/keda/pull/2250
    • Properly propagate context by @zroubalik in https://github.com/kedacore/keda/pull/2249
    • Improve AWS Cloudwatch Scaler metric exporting logic by @fivesheep in https://github.com/kedacore/keda/pull/2243
    • Add github action to run e2e command "on-demand" by @JorTurFer in https://github.com/kedacore/keda/pull/2241
    • Add triggering condition to failure reaction for on-demand command by @JorTurFer in https://github.com/kedacore/keda/pull/2257
    • Split the workflow to trigger e2e test in 2 different jobs by @JorTurFer in https://github.com/kedacore/keda/pull/2258
    • Fix: extend Cassandra e2e test timeouts by @nilayasiktoprak in https://github.com/kedacore/keda/pull/2253
    • update aws related scalers to reuse the aws clients by @fivesheep in https://github.com/kedacore/keda/pull/2255
    • Set concurrency for pr-e2e action by @ahmelsayed in https://github.com/kedacore/keda/pull/2261
    • Reverting #2261 by @zroubalik in https://github.com/kedacore/keda/pull/2265
    • Add ScalersCache to reuse scalers unless they need changing by @ahmelsayed in https://github.com/kedacore/keda/pull/2187
    • Propagating contexts to all remaining scalers by @arschles in https://github.com/kedacore/keda/pull/2267
    • Validate values length for prometheus scaler by @sosoftmandruszak in https://github.com/kedacore/keda/pull/2264
    • Cleanup metric names inside scalers by @JorTurFer in https://github.com/kedacore/keda/pull/2260
    • bump go deps by @zroubalik in https://github.com/kedacore/keda/pull/2281
    • Use a different cluster for pr e2e runs by @ahmelsayed in https://github.com/kedacore/keda/pull/2283
    • beta.kubernetes.io/os nodeSelector is deprecated by @zroubalik in https://github.com/kedacore/keda/pull/2280
    • Add unsafeSsl parameter in Selenium Grid scaler by @JorTurFer in https://github.com/kedacore/keda/pull/2285
    • docs: Provide emphasize on preparing our Helm chart by @tomkerkhove in https://github.com/kedacore/keda/pull/2288
    • Add execution url in the pr-e2e triggering comment and fix problem related with not starting with by @JorTurFer in https://github.com/kedacore/keda/pull/2306
    • chore(deps): update github actions by @renovate in https://github.com/kedacore/keda/pull/2298
    • GCP Pub/Sub Scaler: add oldest unacked message age metric by @Friedrich42 in https://github.com/kedacore/keda/pull/2266
    • Cache metric names provided by KEDA Metrics Server by @zroubalik in https://github.com/kedacore/keda/pull/2279
    • improve (azure-pipelines): log url on error by @endersonmenezes in https://github.com/kedacore/keda/pull/2297
    • RabbitMQ: use int64 for pageSize to avoid conversion problems by @zroubalik in https://github.com/kedacore/keda/pull/2319
    • Influx: Update client generation to fix issues by @JorTurFer in https://github.com/kedacore/keda/pull/2320
    • GCP Pub/Sub Scaler: add logic to accept subscription IDs with projectID by @jmalvarezf-lmes in https://github.com/kedacore/keda/pull/2269
    • Add Elasticsearch Scaler based on search template by @orphaner in https://github.com/kedacore/keda/pull/2311
    • Allow setting MaxConcurrentReconciles for reconcilers by @zroubalik in https://github.com/kedacore/keda/pull/2272
    • chore: Use @kedacore/keda-maintainers for code ownership by @tomkerkhove in https://github.com/kedacore/keda/pull/2326
    • docs: Introduce continous container scanning with Snyk in release process by @tomkerkhove in https://github.com/kedacore/keda/pull/2325
    • Bump axios from 0.21.1 to 0.21.2 in /tests by @dependabot in https://github.com/kedacore/keda/pull/2327
    • fix: Remove org prefix for code owners by @tomkerkhove in https://github.com/kedacore/keda/pull/2330
    • bump to Go 1.17.3 by @zroubalik in https://github.com/kedacore/keda/pull/2329
    • Changelog chores by @zroubalik in https://github.com/kedacore/keda/pull/2333
    • fix: Use verbose code ownership by @tomkerkhove in https://github.com/kedacore/keda/pull/2335
    • Changelog: fix typo by @zroubalik in https://github.com/kedacore/keda/pull/2337
    • bump dependencies by @zroubalik in https://github.com/kedacore/keda/pull/2331
    • chore: use @kedacore/keda-core-contributors for code ownership by @tomkerkhove in https://github.com/kedacore/keda/pull/2344
    • Handle no metrics found for AWS Cloudwatch by @allupaku in https://github.com/kedacore/keda/pull/2345
    • fix: Validate TLS certificate check being disabled by @JorTurFer in https://github.com/kedacore/keda/pull/2341
    • Prepare 2.5.0 release by @JorTurFer in https://github.com/kedacore/keda/pull/2346
    • Use GH Action to extract the tag by @JorTurFer in https://github.com/kedacore/keda/pull/2349
    • Revert GH action change and fix makefile by @JorTurFer in https://github.com/kedacore/keda/pull/2350
    Source code(tar.gz)
    Source code(zip)
    keda-2.5.0.yaml(406.16 KB)
  • v2.4.0(Aug 6, 2021)

    We are happy to release KEDA 2.4.0 ๐ŸŽ‰

    Here are some highlights:

    • Introducing a new Solace PubSub+ Event Broker scaler
    • Introducing a new Selenium Grid scaler
    • Introducing a new Kubernetes Workload scaler
    • Introduce fallback functionality
    • Introduce Idle Replica Mode

    Learn how to deploy KEDA by reading our documentation.

    New

    • Add Solace PubSub+ Event Broker scaler (#1945)
    • Add Selenium Grid scaler (#1971)
    • Add Kubernetes Workload scaler (#2010)
    • Introduce fallback functionality (#1872)
    • Introduce Idle Replica Mode (#1958)
    • ScaledJob - Support pod conditions for pending job count calculation (#1970|#2009)

    Improvements

    • Optimize Kafka scaler by fetching all topic offsets using a single HTTP request (#1956)
    • Adding ability to specify Kafka Broker Version (#1866)
    • Support custom metric name in RabbitMQ scaler (#1976)
    • Support using regex to select the queues in RabbitMQ scaler (#1957)
    • Extend Azure Monitor scaler to support custom metrics (#1883)
    • Support non-public cloud environments in the Azure Service Bus scaler (#1907)
    • Support non-public cloud environments in the Azure Storage Queue and Azure Storage Blob scalers (#1863)
    • Adjusts InfluxDB scaler to support queries that return integers in addition to those that return floats (#1977)
    • Allow InfluxDB authToken, serverURL, and organizationName to be sourced from (Cluster)TriggerAuthentication (#1904)
    • IBM MQ scaler password handling fix (#1939)
    • Metrics APIServer: Add ratelimiting parameters to override client (#1944)
    • Fix READY and ACTIVE fields of ScaledJob to show status when we run kubectl get sj (#1855)
    • Show HashiCorp Vault Address when using kubectl get ta or kubectl get cta (#1862)
    • Don't panic when HashiCorp Vault path doesn't exist (#1864)

    Breaking Changes

    • Fix keda-system-auth-delegator ClusterRoleBinding name (#1616). Upgrading may leave a stray ClusterRoleBinding with the old name keda:system:auth-delegator behind.

    Other

    • Use scaled[object/job].keda.sh/ prefix for KEDA related labels (#2008)
    Source code(tar.gz)
    Source code(zip)
    keda-2.4.0.yaml(495.97 KB)
  • v2.3.0(May 27, 2021)

    We are happy to release KEDA 2.3.0 ๐ŸŽ‰

    Here are some highlights:

    • Introducing a new Azure Pipelines scaler
    • Introducing a new OpenStack Metrics scaler
    • New authentication options for Prometheus

    Learn how to deploy KEDA by reading our documentation.

    New

    • Add Azure Pipelines Scaler (#1706)
    • Add OpenStack Metrics Scaler (#1382)
    • Added basic, tls and bearer authentication support to the Prometheus scaler #1559
    • Add header Origin to Apache Artemis scaler #1796

    Improvements

    • Azure Service Bus Scaler: Namespace from connectionString parameter is added to metricName due to uniqueness violation for clusters having more than one queue with the same name (#1755)
    • Remove app.kubernetes.io/version label from label selectors (#1696)
    • Apache Kafka Scaler: Add allowIdleConsumers to the list of trigger parameters (#1684)
    • Fixed goroutine leaks in usage of timers (#1704 | #1739)
    • Setting timeouts in the HTTP client used by the IBM MQ scaler (#1758)
    • Fix cleanup of removed triggers (#1768)
    • Eventhub Scaler: Add trigger parameter checkpointStrategy to support more language-specific checkpoints (#1621)
    • Fix Azure Blob scaler when using multiple triggers with the same blobContainerName and added a optional metricName field (#1816)

    Breaking Changes

    • None.
    Source code(tar.gz)
    Source code(zip)
    keda-2.3.0.yaml(494.30 KB)
  • v2.2.0(Mar 18, 2021)

    We are happy to release KEDA 2.2.0 ๐ŸŽ‰

    Here are some highlights:

    • Introducing a new Microsoft SQL Server scaler
    • KEDA emits Kubernetes Events
    • Adding several performance related improvements
    • ScaledJob supports metadata labels in Job template
    • Improving AWS SQS, Metrics API, OpenStack Swift and RabbitMQ scaler

    Learn how to deploy KEDA by reading our documentation.

    New

    • Emit Kubernetes Events on KEDA events (#1523 | #1647)
    • Support Quantities in Metrics API scaler (#1667)
    • Add Microsoft SQL Server (MSSQL) scaler (#674 | docs)
    • Add publishRate trigger to RabbitMQ scaler (#1653)
    • ScaledJob: support metadata labels in Job template (#1686)

    Improvements

    • Add KEDA_HTTP_DEFAULT_TIMEOUT support in Operator (#1548)
    • Removed MIN field for ScaledJob (#1553)
    • Add container port for Prometheus on Operator YAML (#1562)
    • Fix a memory leak in Kafka client and close push scalers (#1565)
    • Add 'Metadata' header to AAD podIdentity request (#1566)
    • KEDA should make sure generate correct labels for HPA (#1630)
    • Fix memory leak by checking triggers uniqueness properly (#1640)
    • Print correct ScaleTarget Kind in Events (#1641)
    • Fixed KEDA ClusterRoles to give permissions for ClusterTriggerAuthentications (#1645)
    • Make swiftURL parameter optional for the OpenStack Swift scaler (#1652)
    • Fix memory leak of keda-metrics-apiserver by setting a controller-runtime logger properly (#1654)
    • AWS SQS Scaler: Add Visible + NotVisible messages for scaling considerations (#1664)
    • Fixing behavior on ScaledJob with incorrect External Scaler (#1672)

    Breaking Changes

    • None.
    Source code(tar.gz)
    Source code(zip)
    keda-2.2.0.yaml(494.73 KB)
  • v2.1.0(Jan 27, 2021)

    We are happy to release KEDA v2.1.0 ๐ŸŽ‰

    Here are some highlights:

    • Introduction of ClusterTriggerAuthentication for cluster-wide trigger authentication
    • Introducing new InfluxDB, MongoDB & OpenStack Swift scaler
    • Improvements to AWS Cloudwatch, Azure Event Hub, Kafka & Redis scalers
    • Automatically determine the RabbitMQ protocol (when possible)
    • Support for Redis clusters
    • Performance improvements

    Learn how to deploy KEDA by reading our documentation.

    New

    • Global authentication credentials can be managed using ClusterTriggerAuthentication objects (#1452)
    • Introducing InfluxDB scaler (#1239)
    • Introducing OpenStack Swift scaler (#1342)
    • Support for Redis clusters in Redis list & Redis streams scalers (#1437)
    • Use Pod Identity with Azure Event Hub scaler (#994)
    • Automatically determine the RabbitMQ protocol when possible
    • Support for setting the RabbitMX protocol via TriggerAuthentication (#1459, #1483)
    • Support for multi-dimensional metrics in AWS Cloudwatch Scaler (#1230)
    • Show MIN/MAX replica counts when using kubectl get scaledobject/scaledjob (#1534)
    • Introducing MongoDB scaler (#1467)

    Improvements

    • Support add ScaledJob's label to its job (#1311)
    • Override the vhost on a RabbitMQ scaler via vhostName in the metadata (#1451)
    • Bug fix in aws_iam_authorization to utilize correct secret from env key name (#1332)
    • Add metricName field to postgres scaler and auto generate if not defined (#1381)
    • Mask password in postgres scaler auto generated metricName (#1381)
    • Bug fix for pending jobs in ScaledJob's accurateScalingStrategy (#1323)
    • Fix memory leak because of unclosed scalers (#1413)
    • Optimize Kafka scaler's getLagForPartition function (#1464)
    • Reduce unnecessary /scale requests from ScaledObject controller (#1453)
    • Add support for the WATCH_NAMESPACE environment variable to the operator (#1474)
    • Improve performance when fetching pod information (#1457)
    • Improve performance when fetching current scaling information on Deployments (#1458)
    • Improve error reporting in prometheus scaler (#1497)
    • Check that metricNames are unique in ScaledObject (#1390)
    • Serve OpenAPI spec from KEDA Metrics Apiserver (#1512)
    • Fix unnecessary HPA updates when Resource based Trigger is used (#1541)

    Breaking Changes

    None.

    Other

    • Bump go module version to v2 (#1324)
    Source code(tar.gz)
    Source code(zip)
    keda-2.1.0.yaml(494.52 KB)
  • v2.0.0(Nov 4, 2020)

    Today, we are happy to announce another milestone - KEDA 2.0 is now generally available and ready to scale all your workloads! ๐ŸŽŠ

    Learn more about this release in our blog post and easily get started.

    What's new?

    New

    • Introduce Azure Log Analytics scaler (#1061) | docs)
    • Introduce External Push scaler (#820 | docs)
    • Introduce Metrics API Scaler (#1026 | docs)
    • Introduce IBM MQ Scaler (#1259 | docs)
    • Introduce CPU scaler (#1215 | docs)
    • Introduce Memory scaler (#1215 | docs)
    • Introduce scaling any CustomResource that implements Scale subresource (#703)
    • Provide KEDA go-client (#494)
    • Provide KEDA readiness and liveness probes (#788)
    • Support for configuring scaling behavior in HPA v2beta2 (#802)
    • Provide Standard Resource metrics to KEDA (#874)
    • Provide support for Managed Identity support for Azure Monitor scaler (#936)
    • Provide support for multiple triggers on ScaledObject (#476)
    • Provide consumer offset reset policy option to Kafka scaler (#925)
    • Provide option to restore to original replica count after ScaledObject's deletion (#219)
    • Support for multiple redis list types in redis list scaler (#1006 | docs)
    • Introduce Prometheus metrics for KEDA Metrics API Server (#823 | docs)
    • Introduce Scaling Strategy for ScaledJob (#1227)

    Improvements

    • ScaledJobs: Introduce new scaling logic with fix orphan pod issue (#1214)
    • enabling authentication for metric api scaler (#1137)
    • Avoid exception when CRD doesn't follow Pod spec shape (#1195)
    • Fix for not sending trigger metadata to the External Scaler
    • Fix for up-down scaling behavior configuration is ignored in Kubernetes version >= 18.0
    • Fix for RabbitMQ queue name causing problems in HPA external metric
    • Update version.go properly during make release
    • Improved code linting
    • Move from autoscaling v2beta1 to v2beta2 for HPA (#721)
    • Introduce shortnames for CRDs (#774)
    • Improve kubectl get scaledobject to show related trigger authentication (#777)
    • Improve kubectl get triggerauthentication to show information about configured parameters (#778)
    • Added ScaledObject Status Conditions to display status of scaling (#750)
    • Added optional authentication parameters for the Redis Scaler (#962)
    • Improved GCP PubSub Scaler performance by closing the client correctly (#1087)

    Breaking Changes

    We are making some breaking changes, but you can easily migrate with our migration guide.

    • Introduce a separate ScaledObject and ScaledJob(#653)
    • Change apiGroup from keda.k8s.io to keda.sh (#552)
    • Use apiextensions.k8s.io/v1 instead of apiextensions.k8s.io/v1beta1
    • Kubernetes v1.16+ is required instead of v1.13
    • All scalers metadata that is resolved from the scaleTarget environment have suffix FromEnv added. e.g: connection -> connectionFromEnv
    • Remove New() and Close() from the interface of service ExternalScaler in externalscaler.proto.

    Changes in our scalers:

    • Kafka:
      • Split metadata and config for SASL and TLS (#1074)
      • Remove Kafka scaler requirement for CA/cert/key (#1288)
      • Removed deprecated brokerList for Kafka scaler (#882)
    • Service Bus:
      • queueLength is now called messageCount (#1109)
    • RabbitMQ:
      • Use host instead of apiHost in rabbitmq scaler. Add protocol in trigger spec to specify which protocol should be used (#1115)

    Other

    • Change Metrics Server image name from keda-metrics-adapter to keda-metrics-apiserver (#1105)
    • Update Operator SDK and k8s deps (#1007,#870)
    • Improved code linting
    • Update dependencies
    Source code(tar.gz)
    Source code(zip)
    keda-2.0.0.yaml(459.51 KB)
  • v2.0.0-rc2(Oct 23, 2020)

    We're happy to release KEDA 2.0.0 release candidate 2 (RC2) which is an incremental release to v2.0.0-rc. ๐ŸŽ‰

    Our goal is to release KEDA 2.0.0 stable in a couple of weeks.

    What's new?

    New

    • New IBM MQ Scaler (#1259)
    • Adding Scaling Strategy for ScaledJob (#1227)
    • Adding support for cpu/memory scaler (#1215)

    Improvements

    • ScaledJobs: Introduce new scaling logic with fix orphan pod issue (#1214)
    • enabling authentication for metric api scaler (#1137)
    • Update dependencies
    • Avoid exception when CRD doesn't follow Pod spec shape (#1195)
    • Improved code linting

    Breaking Changes

    • Remove Kafka scaler requirement for CA/cert/key (#1288)
    • Kubernetes v1.16+ is required instead of v1.13
    • Use apiextensions.k8s.io/v1 instead of apiextensions.k8s.io/v1beta1
    Source code(tar.gz)
    Source code(zip)
    keda-2.0.0-rc2.yaml(459.59 KB)
  • v2.0.0-rc(Oct 2, 2020)

    We're happy to release KEDA 2.0.0 release candidate (RC) which is an incremental release to v2.0.0-beta. ๐ŸŽ‰

    Our goal is to release KEDA 2.0.0 stable in mid-October.

    We'll provide a full changelog later today after everything is released.

    What's new?

    New

    • Support for Pod Identity for Log Analytics scaler

    Improvements

    • Fix for not sending trigger metadata to the External Scaler
    • Fix for up-down scaling behavior configuration is ignored in Kubernetes version >= 18.0
    • Fix for RabbitMQ queue name causing problems in HPA external metric
    • Update version.go properly during make release
    • Upgrade to operator-sdk v1.0.1
    • Improved code linting

    Breaking Changes

    • Kubernetes v1.16+ is required instead of v1.13
    • Use apiextensions.k8s.io/v1 instead of apiextensions.k8s.io/v1beta1

    Other

    None.

    Source code(tar.gz)
    Source code(zip)
    keda-2.0.0-rc.yaml(462.49 KB)
  • v2.0.0-beta(Sep 11, 2020)

    New

    • KEDA scales any CustomResource that implements Scale subresource (#703)
    • Provide KEDA go-client (#494)
    • Define KEDA readiness and liveness probes (#788)
    • KEDA Support for configurable scaling behavior in HPA v2beta2 (#802)
    • Add External Push scaler (#820 | docs)
    • Add Standard Resource metrics to KEDA (#874)
    • Managed Identity support for Azure Monitor scaler (#936)
    • Add support for multiple triggers on ScaledObject (#476)
    • Add consumer offset reset policy option to Kafka scaler (#925)
    • Add option to restore to original replica count after ScaledObject's deletion (#219)
    • Add Prometheus metrics for KEDA Metrics API Server (#823 | docs)
    • Add support for multiple redis list types in redis list scaler (#1006) | docs)
    • Introduce Azure Log Analytics scaler (#1061) | docs)
    • Add Metrics API Scaler (#1026)

    Improvements

    • Move from autoscaling v2beta1 to v2beta2 for HPA (#721)
    • Introduce shortnames for CRDs (#774)
    • Improve kubectl get scaledobject to show related trigger authentication (#777)
    • Improve kubectl get triggerauthentication to show information about configured parameters (#778)
    • Added ScaledObject Status Conditions to display status of scaling (#750)
    • Added optional authentication parameters for the Redis Scaler (#962)
    • Improved GCP PubSub Scaler performance by closing the client correctly (#1087)

    Breaking Changes

    • Change apiGroup from keda.k8s.io to keda.sh (#552)
    • Introduce a separate ScaledObject and ScaledJob(#653)
    • Remove New() and Close() from the interface of service ExternalScaler in externalscaler.proto.
    • Removed deprecated brokerList for Kafka scaler (#882)
    • All scalers metadata that is resolved from the scaleTarget environment have suffix FromEnv added. e.g: connection -> connectionFromEnv
    • Kafka: split metadata and config for SASL and TLS (#1074)
    • Service Bus: queueLength is now called messageCount (#1109)
    • Use host instead of apiHost in rabbitmq scaler. Add protocol in trigger spec to specify which protocol should be used (#1115)

    Other

    • Update Operator SDK and k8s deps (#1007,#870)
    • Change Metrics Server image name from keda-metrics-adapter to keda-metrics-apiserver (#1105)
    Source code(tar.gz)
    Source code(zip)
    keda-2.0.0-beta.yaml(442.41 KB)
  • v1.5.0(Jul 7, 2020)

    New

    • Scalers
      • Introduce Active MQ Artemis scaler (Docs)
      • Introduce Redis Streams scaler (Docs | Details)
      • Introduce Cron scaler (Docs | Details)
    • Secret Providers
      • Introduce HashiCorp Vault secret provider (Docs | Details)
    • Other
      • Introduction of nodeSelector in raw YAML deployment specifications (Details)

    Improvements

    • Improved message count determination when using includeUnacked in RabbitMQ scaler (Details)
    • Fix for blank path without trailing slash in RabbitMQ scaler (Details)
    • Improved parsing of connection strings to support BlobEndpoint, QueueEndpoint, TableEndpoint & FileEndpoint segments (Details)
    • Support scaling when no storage checkpoint exists in Azure Event Hubs scaler (Details)
    • GCP Pub Scaler should not panic on invalid credentials (Details)
    • Make queueLength optional in RabbitMQ scaler (Details)

    Breaking Changes

    None.

    Other

    None.

    Source code(tar.gz)
    Source code(zip)
    keda-1.5.0.tar.gz(35.72 KB)
    keda-1.5.0.zip(39.40 KB)
  • v1.4.1(Apr 27, 2020)

  • v1.4.0(Apr 17, 2020)

    License has changed from MIT to Apache 2.0 as per our CNCF donation.

    Scalers:

    Improvements:

    • Fix scalers leaking (#684)
    • Provide installation YAML in the release (#740)
    • Extend RabbitMQ scaler to support count unacked messages (#700)
    • Handle nil pointers and empty arrays properly in Azure Monitor Scaler (#680)
    • Authenticate to AWS with dedicated role without AssumeRole permissions (#656)

    Misc:

    • Adding label for metrics service selection (#745)
    • Provide installation YAML in the release (#740)
    • Filter returned metrics from api server based on queried name (#732)
    • Provide better guidance around contributions & DCO (#720)
    • Add redis host and port parameter to the scaler with tests (#719)
    • Remove go micro version (#718)
    • Remove mit license (#716)
    • Link to guide for adding new scaler docs (#715)
    • Correct deploying methods (#714)
    • HPA: label can have max 63 chars (#707)
    • add deploymentName label if needed (#709)
    • Introduce CII Badge (#691)
    • Update test dependencies (#696)
    • Provide project governance (#690)
    • Update zero result return to be non-error inducing (#695)
    • Return if kafka offset response is nil (#689)
    • Add DCO and remove Microsoft CLA section (#686)
    • Fix typos in MySQL scaler (#683)
    • Cleanup v1.3 in changelog (#677)
    • Update README to mention CNCF (#682)
    Source code(tar.gz)
    Source code(zip)
    keda-1.4.0.tar.gz(35.26 KB)
    keda-1.4.0.zip(39.10 KB)
  • v1.3.0(Mar 13, 2020)

    License has changed from MIT to Apache 2.0 as per our CNCF donation.

    Scalers:

    • Add Azure monitor scaler (#584)
    • Introduce support for AWS pod identity (#499)
    • Introduce changelog (#664)

    Improvements:

    • Make targetQueryValue configurable in postgreSQL scaler (#643)
    • Added bootstrapServers to deprecate brokerList (#621)
    • Removed the need for deploymentName label #644
    • Adding Kubernetes recommended labels to resources #596

    Misc:

    • Changed exiting in a warning when GOROOT is not defined (#607)
    • Create make release target to update versions (#610)
    • Update release-build.yml (#612)
    • Added successful tests (#619)
    • Fixed command to log keda-operator (#622)
    • Update documentation to link to new Openshift 4 sample (#625)
    • Change 'create' to 'push' in release action (#627)
    • Document logging levels for Operator and Metrics Server (#633)
    • Provide "Support" issue template (#634)
    • Removed the need for deploymentName label (#644)
    • Check presence of scaleTargetRef or jobTargetRef (#648)
    • Add vector keda logos (#665)
    • readme: community call update (#675)
    Source code(tar.gz)
    Source code(zip)
  • v1.2.0(Feb 6, 2020)

    New scalers:

    • Support for Postgres scaler (#553)
    • Support for MySQL scaler (#564)

    Scalers improvments:

    • TLS parameter to Redis-scaler (#540)
    • Redis db index option (#577)
    • Optional param for ConfigMaps and Secrets (#562)
    • Remove manually adding sslmode to connection string (#558)
    • ScaledObject.Status update should handle stale resource (#582)
    • Improve reconcile loop (#581)
    • Added SASL_SSL Plain authentication for Kafka trigger scalar to work with Event Hubs (#585)
    • Address naming changes for postgresql scaler (#593)

    Misc:

    • Move Metrics adapter into the separate Deployment (#506)
    • Fix release workflow (#559)
    • Improve README (#565)
    • Fix gopls location (#574)
    • Move release process to Markdown in repo (#569)
    • Update readme steps for deploying custom KEDA (#556)
    • Update the image tags for keda and keda-metrics-adapter to 1.1.0 (#549)
    • Add kubernetes and platform version to the Issue template (#589)
    • Add instructions on local development and debugging (#583)
    • Proposal for PR template (#586)
    • Add a checkenv target (#600)
    • Added links to the scaler interface documentation (#597)
    • Correcting release process doc (#602)
    • Mentioning problem with checksum mismatch error (#605)
    • Local deployment minor fix (#603)
    Source code(tar.gz)
    Source code(zip)
  • v1.1.0(Jan 16, 2020)

    Release notes:

    New scalers:

    • Provide support for Huawei Cloud CloudEye scaler (#478)
    • Add kinesis stream scaler (#526)
    • Add azure blob scaler (#514)

    Scalers improvments:

    • Add unique name for aws-sqs-queue metrics (#475)
    • add kafka scaler sasl (#486)
    • Event Hub scalar expansion to work with Java and C# applications (#517)
    • Escape Prometheus querystring (#521)
    • Change how number of pending messages is calculated and add more error handling. (#533)
    • Service bus scaler pod identity fix (#534)
    • Eventhub scalar fix (#537)
    • Kafka scaler fix for SASL plaintext auth (#544)

    Misc:

    • ScaledObject Status clean up (#466)
    • add default log level for operator (#468)
    • ensure get the metrics that have been aggregated (#509)
    • scale from zero when minReplicaCount is > 0 (#524)
    • Total running Jobs must not exceed maxScale - Running jobs (#528)
    • check deploymentName definition in ScaledObject (#532)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Nov 17, 2019)

    The KEDA team is thrilled to announced our 1.0 release ๐ŸŽ‰

    The team feels confident you can begin to use KEDA in production workloads. We couldn't have gotten here without the support and contributions of the community.

    KEDA Resources

    Improvements from the v0.x releases

    • Many more scalers added
    • Scaler extensibility (run scalers in a different container and communicate with KEDA via gRPC)
    • TriggerAuthentication and Pod Identity for identity based auth that can be shared across deployments
    • Schedule jobs on events in addition scaling out deployments
    • Additional tests and automation through GitHub Actions

    Breaking changes from v0.x releases

    • RabbitMQ host property now must resolve from a secret (#347)

    If you have any additional issues, feel free to report. You can also pin to kedacore/keda:0.2 for a version of KEDA before major breaks and refactoring was introduced.

    Thank You!

    Thank you to all those who have contributed through feedback, docs, code, scalers, and more. We look forward to improving the event driven on Kubernetes story moving forward. Please see our contribution guide if you are interested in contributing moving forward.

    Source code(tar.gz)
    Source code(zip)
Owner
KEDA
Kubernetes-based Event Driven Autoscaling
KEDA
Amazon ECS Container Agent: a component of Amazon Elastic Container Service

Amazon ECS Container Agent The Amazon ECS Container Agent is a component of Amazon Elastic Container Service (Amazon ECS) and is responsible for manag

null 0 Dec 28, 2021
A distributed append only commit log used for quick writes and reads to any scale

Maestro-DB A distributed append only commit log used for quick writes and reads to any scale Part 1 - Scaffolding Part-1 Notes Going to start off with

null 0 Nov 28, 2021
Moby Project - a collaborative project for the container ecosystem to assemble container-based systems

The Moby Project Moby is an open-source project created by Docker to enable and accelerate software containerization. It provides a "Lego set" of tool

Moby 64.6k Nov 23, 2022
A docker container that can be deployed as a sidecar on any kubernetes pod to monitor PSI metrics

CgroupV2 PSI Sidecar CgroupV2 PSI Sidecar can be deployed on any kubernetes pod with access to cgroupv2 PSI metrics. About This is a docker container

null 1 Nov 23, 2021
TriggerMesh open source event-driven integration platform powered by Kubernetes and Knative.

TriggerMesh open source event-driven integration platform powered by Kubernetes and Knative. TriggerMesh allows you to declaratively define event flows between sources and targets as well as add even filter, splitting and processing using functions.

TriggerMesh 345 Nov 23, 2022
Kube-step-podautoscaler - Controller to scale workloads based on steps

Refer controller/*controller.go for implementation details and explanation for a better understanding.

Danish Prakash 5 Sep 5, 2022
Large-scale Kubernetes cluster diagnostic tool.

English | ็ฎ€ไฝ“ไธญๆ–‡ KubeProber What is KubeProber? KubeProber is a diagnostic tool designed for large-scale Kubernetes clusters. It is used to perform diag

Erda 106 Nov 24, 2022
A component for sync services between Nacos and Kubernetes.

็ฎ€ไป‹ ่ฏฅ้กน็›ฎ็”จไบŽๅŒๆญฅKubernetesๅ’ŒNacosไน‹้—ด็š„ๆœๅŠกไฟกๆฏใ€‚ ็›ฎๅ‰่ฏฅ้กน็›ฎไป…ๆ”ฏๆŒ Kubernetes Service -> Nacos Service ็š„ๅŒๆญฅ TODO ๅขžๅŠ ้ซ˜ๆ€ง่ƒฝzap็š„logger ๅขžๅŠ  Nacos Service -> Kubernetes Service ็š„ๅŒๆญฅ ็›‘ๅฌ

Nacos Group 6 May 16, 2022
A Pulumi Kubernetes CertManager component

Pulumi Cert Manager Component This repo contains the Pulumi Cert Manager component for Kubernetes. This add-on automates the management and issuance o

Pulumi 10 Nov 15, 2022
A Pulumi Kubernetes CoreDNS component

Pulumi Kubernetes CoreDNS Component This repo contains the Pulumi CoreDNS component for Kubernetes. CoreDNS is a fast and flexible DNS server, providi

Pulumi 2 Dec 1, 2021
Nanovms running in Docker x86 container for M1 Mac ARM64.

Docker Ops This project is an attempt to enable Nanos unikernels to be managed by Ops on non-intel architectures such as the Mac M1 ARM64. Unless ther

Ian Marsman 1 Nov 22, 2021
Display (Namespace, Pod, Container, Primary PID) from a host PID, fails if the target process is running on host

Display (Namespace, Pod, Container, Primary PID) from a host PID, fails if the target process is running on host

K8s-school 13 Oct 17, 2022
How to get a Go / Golang app using the Gin web framework running natively on Windows Azure App Service WITHOUT using a Docker container

Go on Azure App Service View the running app -> https://go-azure-appservice.azurewebsites.net ?? This is an example repo of how to get a Go / Golang a

Ed Andersen 8 Sep 20, 2022
Boxygen is a container as code framework that allows you to build container images from code

Boxygen is a container as code framework that allows you to build container images from code, allowing integration of container image builds into other tooling such as servers or CLI tooling.

nitric 5 Dec 13, 2021
The Container Storage Interface (CSI) Driver for Fortress Block Storage This driver allows you to use Fortress Block Storage with your container orchestrator

fortress-csi The Container Storage Interface (CSI) Driver for Fortress Block Storage This driver allows you to use Fortress Block Storage with your co

Fortress 0 Jan 23, 2022
Hexagonal architecture paradigms, such as dividing adapters into primary (driver) and secondary (driven)Hexagonal architecture paradigms, such as dividing adapters into primary (driver) and secondary (driven)

authorizer Architecture In this project, I tried to apply hexagonal architecture paradigms, such as dividing adapters into primary (driver) and second

Renato Benatti 0 Dec 7, 2021
A tool to build, deploy, and release any application on any platform.

Waypoint Website: https://www.waypointproject.io Tutorials: HashiCorp Learn Forum: Discuss Waypoint allows developers to define their application buil

HashiCorp 4.6k Nov 27, 2022
Carrier is a Kubernetes controller for running and scaling game servers on Kubernetes.

Carrier is a Kubernetes controller for running and scaling game servers on Kubernetes. This project is inspired by agones. Introduction Genera

Open Cloud-native Game-application Initiative 30 Jul 28, 2022