Uploaded image for project: 'Service Binding'
  1. Service Binding
  2. APPSVC-270

App binding for Knative event sources

XMLWordPrintable

    • 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):

      1. OpenShift Serverless

      Prioritized epics + deliverables (in scope / not in scope):

      1. 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.
      2. 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

       

            Unassigned Unassigned
            ssadeghi@redhat.com Siamak Sadeghianfar
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: