-
Epic
-
Resolution: Done
-
Normal
-
None
-
App binding for Knative event sources
-
To Do
-
QE Needed, Docs Needed, TE Needed, Customer Facing
-
0% To Do, 0% In Progress, 100% Done
Goal: Use app binding to inject service credentials into Knative event sources
apiVersion: sources.eventing.knative.dev/v1alpha1 kind: KafkaSource metadata: name: kafka-source spec: consumerGroup: knative-group # Needs binding. # Broker URL. Replace this with the URLs for your kafka cluster, # which is in the format of my-cluster-kafka-bootstrap.my-kafka-namespace:9092. bootstrapServers: REPLACE_WITH_CLUSTER_URL topics: knative-demo-topic sink: ref: apiVersion: serving.knative.dev/v1alpha1 kind: Service name: event-display
Problem: Users building applications and consuming services through event sources have to manually wire credentials from external services to the event sources itself. This manual step can be error prone, not consistent and complex to do. As an example, a user may install Kafka and want to build an application to consume events from a topic and can use a Knative Event Source to do that, however they lack a standard way to provide credentials, url, port, etc..
In Service Binding terms, following work needs to happen:
1. A KafkaSource needs to bind to multiple backing services like KafkaTopic and KafkaCluster : https://jira.coreos.com/browse/APPSVC-305
2. Service binding Operator should be able to inject the secret into an arbitrary location apart from the podspec : https://jira.coreos.com/browse/APPSVC-276
3. KafkaSource should be able to support references to binding secrets.
Why is this important: Leveraging app bindings can simplify this process and improve the developer experience while delivering a method that is more aligned with CI and GitOps practices.
Dependencies (internal and external):
- OpenShift Serverless
Prioritized epics + deliverables (in scope / not in scope):
- A user can wire a third party system/service (Kafka for example) to a Knative Event source and have configuration for the external system injected/provided to the event source.
- A user can wire a third party system/service directly to a Knative Service. This would allow such Service to consume credentials/url/port, etc without any specifics from Knative Eventing.
Estimate (XS, S, M, L, XL, XXL): M