Note: Pseudo code...
Below is some yaml (and no implementation) for Kafka Source and Channel...
We need a ClusterProvisioner
for our Source
e.g. like the container provisioner from Nicolas (see #513):
apiVersion: eventing.knative.dev/v1alpha1
kind: ClusterProvisioner
metadata:
name: container
spec:
reconciles:
group: eventing.knative.dev
kind: Source
and another one for the Channel (e.g. the Kafka one from Sabari in #486)
apiVersion: eventing.knative.dev/v1alpha1
kind: ClusterProvisioner
metadata:
name: kafka
spec:
reconciles:
group: eventing.knative.dev/v1alpha1
kind: Channel
Now, that we have the two Provisioners together....
Next we would need a channel:
apiVersion: eventing.knative.dev/v1alpha1
kind: Channel
metadata:
name: mychannel
spec:
provisioner:
ref:
apiVersion: eventing.knative.dev/v1alpha1
kind: ClusterProvisioner
name: kafka
And we want to connect to Apache Kafka on our source, so we might have:
apiVersion: eventing.knative.dev/v1alpha1
kind: Source
metadata:
name: kafkaevents
namespace: default
spec:
provisioner:
ref:
name: container
arguments:
image: docker.io/mrbean/kafkasource
args:
bootstrapservers: "something.somewhere.com:9092"
subscribe_to_topic: "the_truth"
Now, we need to hook our "service" to the channel:
apiVersion: eventing.knative.dev/v1alpha1
kind: Subscription
metadata:
name: listentochannel
namespace: default
spec:
from:
kind: Channel
apiVersion: eventing.knative.dev/v1alpha1
name: kafka
call:
target:
kind: Service
apiVersion: serving.knative.dev/v1alpha1
name: my-kafka-logger
Question: I am not sure how to actually connect the Channel to the Source, so that the Source can write to the channel, and my ksvc
on the Subscription
can get messages from that populated channel?
The Source can specify an optional ObjectRef to a channel so that it can send to it.