Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add generic EventSource and EventSink #8185

Open
matzew opened this issue Sep 3, 2024 · 10 comments
Open

Add generic EventSource and EventSink #8185

matzew opened this issue Sep 3, 2024 · 10 comments
Labels
kind/feature-request triage/accepted Issues which should be fixed (post-triage)

Comments

@matzew
Copy link
Member

matzew commented Sep 3, 2024

Knative Eventing offers only a small number of event sources, such as ApiServerSource or PingSource. Besides that it provides a ContainerSource to allow users to run their own integrations, leveraging the SinkBinding API. The same is true for event sinks with the JobSink and the KafkaSink in the eventing-kafka-broker repo.

In order to offer a rich set of Event Sources and Event Sinks for Knative Eventing, we would like to add two new generic CRDs: EventSource and EventSink.

Initially the new CRDs would leverage a fixed set of Apache Camel Kamelets. Those Kamelets would run as regular deployments and in the case of "sources" those Kamelets would leverage the SinkBinding API. Behind the new CRD these Kamelets acting either as true, native "source" or "sink" for Knative.

With Kamelets we can provide connectivity for many products and services, including Amazon Web Services, Azure, Google Cloud, or even traditional messaging systems like AMQP 1.0.

Essentially the Event Source/Sink CRDs would act like a shim to propagate configuration to the underlying Deployment of the Kamelets being used..

There will be two new APIs. At a high-level they would be like:

apiVersion: sources.knative.dev/v1alpha1
kind: EventSource
metadata:
  ...
spec:
  {tbd}
  sink:
    ref:
      apiVersion: eventing.knative.dev/v1
      kind: Broker
      name: default

and for the "sinks"

apiVersion: eventing.knative.dev/v1
kind: EventSink
metadata:
  ...
spec:
  {tbd}

NEXT: In a dedicated feature track I want to go into details on the API proposal as well as the implementation and requirements for this new proposal.

@matzew
Copy link
Member Author

matzew commented Sep 12, 2024

I have created a feature track for this: https://docs.google.com/document/d/1UOEbi2kBgH65QaYa4fhvZRxlkUWrqKrptbe9PFDw1bc/edit

@pierDipi pierDipi added the triage/accepted Issues which should be fixed (post-triage) label Oct 24, 2024
@tylerbowers
Copy link

tylerbowers commented Oct 25, 2024

Will this be a step in for many of the Triggermesh event sources? I just started using Knative and got excited when I saw those event sources from Triggermesh in the knative docs. This excitement wore off when I found out that Triggermesh disbanded last year and there's no one maintaining the project anymore.

@matzew matzew mentioned this issue Oct 31, 2024
5 tasks
@matzew
Copy link
Member Author

matzew commented Oct 31, 2024

@tylerbowers hey Tyler! Thanks for reaching out.

The idea of of this is to add two new "generic" types:

  • IntegrationSource
  • IntegrationSink

Behind the secenes we are leveraging Apache Camel Kamelets for the connectivity. See here for the currently available supported "sources" or "sinks" -> https://github.com/knative-extensions/eventing-integrations

@tylerbowers
Copy link

@matzew Really cool stuff, thanks for the clarification.

@mukundjalan
Copy link

As pointed by @pierDipi I am requesting to add a source that can do something similar to what is mentioned in triggermesh/triggermesh#1544 (comment)

@matzew
Copy link
Member Author

matzew commented Nov 6, 2024

@mukundjalan we have already (not yet released, but on main) some support for AWS Source:

  • sqs
  • s3
  • ddbStreams

here is a PR that drafts an initial doc:

And some preview rendering

NOTE: there will be api changes. next knative release is January - but the nightly builds have this already.

@matzew
Copy link
Member Author

matzew commented Nov 7, 2024

@tikr7 take a look at the comment above. That shows the "simple SQS" source for Knative Eventing.
This is part of the next 1.17 release, and directly included into the "core" installation

@matzew
Copy link
Member Author

matzew commented Nov 12, 2024

https://knative.dev/blog/articles/consuming_sqs_data_with_integrationsource/

is an early preview blog post, using SQS

@tikr7
Copy link

tikr7 commented Nov 13, 2024

@matzew this looks very promising! I can't wait for it :)

@matzew
Copy link
Member Author

matzew commented Nov 14, 2024

@mukundjalan with the SQS option, as discussed here it is possible to receive notifications from the EventBridge.

In AWS console, for your eventbus / EventBridge, create a Rule, and use an SQS queue as target. From this SQS queue you can receive the CloudEvent notifications in Knative

@matzew matzew mentioned this issue Nov 22, 2024
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/feature-request triage/accepted Issues which should be fixed (post-triage)
Projects
None yet
Development

No branches or pull requests

5 participants