Kubernetes Events emitted by KEDA

KEDA emits the following Kubernetes Events:

EventTypeDescription
ScaledObjectReadyNormalOn the first time a ScaledObject is ready, or if the previous ready condition status of the object was Unknown or False
ScaledJobReadyNormalOn the first time a ScaledJob is ready, or if the previous ready condition status of the object was Unknown or False
ScaledObjectCheckFailedWarningIf the check validation for a ScaledObject fails
ScaledJobCheckFailedWarningIf the check validation for a ScaledJob fails
ScaledObjectDeletedNormalWhen a ScaledObject is deleted and removed from KEDA watch
ScaledJobDeletedNormalWhen a ScaledJob is deleted and removed from KEDA watch
KEDAScalersStartedNormalWhen Scalers watch loop have started for a ScaledObject or ScaledJob
KEDAScalersStoppedNormalWhen Scalers watch loop have stopped for a ScaledObject or a ScaledJob
KEDAScalerFailedWarningWhen a Scaler fails to create or check its event source
KEDAScaleTargetActivatedNormalWhen the scale target (Deployment, StatefulSet, etc) of a ScaledObject is scaled to 1, triggered by {scalers1;scalers2;…}
KEDAScaleTargetDeactivatedNormalWhen the scale target (Deployment, StatefulSet, etc) of a ScaledObject is scaled to 0
KEDAScaleTargetActivationFailedWarningWhen KEDA fails to scale the scale target of a ScaledObject to 1
KEDAScaleTargetDeactivationFailedWarningWhen KEDA fails to scale the scale target of a ScaledObject to 0
KEDAJobsCreatedNormalWhen KEDA creates jobs for a ScaledJob
TriggerAuthenticationAddedNormalWhen a new TriggerAuthentication is added
TriggerAuthenticationDeletedNormalWhen a TriggerAuthentication is deleted
ClusterTriggerAuthenticationAddedNormalWhen a new ClusterTriggerAuthentication is added
ClusterTriggerAuthenticationDeletedNormalWhen a ClusterTriggerAuthentication is deleted

CloudEvent Support (Experimental)

Subscribing to events with CloudEventSource

CloudEventSource resource can be used in KEDA for subscribing to events that are emitted to the user’s defined CloudEvent sink.

📝 Event will be emitted to both Kubernetes Events and CloudEvents Destination if CloudEventSource resource is created.

Here is a the schema of the CloudEventSource CRD:

apiVersion: eventing.keda.sh/v1alpha1
kind: CloudEventSource
metadata:
  name: {cloud-event-name}
spec:
  clusterName: {cluster-name} #Optional. Will be used in the source/subject to specify where the event comes from. The default value is 'kubernetes-default' and it can also be set during the installation of KEDA with --k8sClusterName. This one will overwrite others if set.
  authenticationRef: 
    name: {trigger-authentication-name} #Optional. Used to reference a `TriggerAuthentication` for authentication. 
    kind: TriggerAuthentication # Optional. Used to choose the authentication scopes. https://keda.sh/docs/latest/concepts/authentication/#authentication-scopes-namespace-vs-cluster
  destination:
    http:
      uri: http://foo.bar
    azureEventGridTopic:
      endpoint: https://my-topic.eastus-1.eventgrid.azure.net/api/events

  eventSubscription: #Optional. Submit included/excluded event types will filter events when emitting events. 
    includedEventTypes: #Optional. Only events in this section will be emitted.
    - keda.scaledobject.failed.v1
    excludedEventTypes: #Optional. Events in this section will not be emitted.       
    - keda.scaledobject.ready.v1

In general, an event emitted by KEDA would fundamentally come down to the following structure:

{
    "specversion" : "1.0",
    "type" : "com.cloudeventsource.keda",
    "source" : "/{cluster-name}/{keda-namespace}/keda",
    "subject" : "/{cluster-name}/{namespace}/{object-type}/{object-name}",
    "id" : "<guid>",
    "time" : "2018-04-05T17:31:00Z",
    "datacontenttype" : "application/json",
    "data" : {
      "reason":"<event-reason>",
      "message":"<event-message>"
   }
}

Event Sinks

There will be multiple types of destination to emit KEDA events to.

Here is an overview of the supported destinations:

HTTP endpoint

  destination:
    http:
      uri: http://foo.bar  #An http endpoint that can receive cloudevent

Azure Event Grid

  destination:
    azureEventGrid:
      endpoint: foo.bar #endpoint from AzureEventGrid Topic

Authentication information must be provided by using authenticationRef which allows you to provide the access key or managed identity for Azure Event Grid authentication by providing a TriggerAuthentication.

Here is an overview of the supported authentication types:

Connection String Authentication
  • accessKey - Access key string for the Azure Event Grid connection auth.
Pod identity based authentication

Azure AD Workload Identity providers can be used.

apiVersion: keda.sh/v1alpha1
kind: TriggerAuthentication
metadata:
  name: nameOfTriggerAuth
  namespace: default
spec:
  podIdentity:
    provider: azure-workload

Event Filter

You can include filter(s) to define what event types you are interested in, or want to ignore. This is done by using includedEventTypes or excludedEventTypes respectively for a given sink.

eventSubscription: #Optional. Submit included/excluded event types will filter events when emitting events. 
  includedEventTypes: #Optional. Only events in this section will be emitted.
  - keda.scaledobject.failed.v1
  excludedEventTypes: #Optional. Events in this section will not be emitted.       
  - keda.scaledobject.ready.v1

Supported Event List

Event TypeScenario Description
keda.scaledobject.ready.v1On the first time a ScaledObject is ready, or if the previous ready condition status of the object was Unknown or False
keda.scaledobject.failed.v1If the check validation for a ScaledObject fails