Skip to content

Instantly share code, notes, and snippets.

@matzew
Created October 16, 2018 15:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save matzew/916ff4cc4d35536b14e5c4a8765a10a0 to your computer and use it in GitHub Desktop.
Save matzew/916ff4cc4d35536b14e5c4a8765a10a0 to your computer and use it in GitHub Desktop.

Some Source and sone Channel in Knative Eventing

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?

@matzew
Copy link
Author

matzew commented Oct 17, 2018

I've added a slightly modified sample here: https://gist.github.com/matzew/b77acef9db9d8331e25a0f629c3d5d00

with suggestions from the above comments (e.g. use different technologies for Source and Channel)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment