Writing an eventing source the hard way

This tutorial walks you through creating an event source for Knative Eventing “the hard way”, without using helper objects like ContainerSource.

After completing through this tutorial, you’ll have a basic working event source controller and dispatcher (TODO) based on the Kubebuilder framework.

Just want to see the code? The reference project is https://github.com/grantr/sample-source.

Target Audience

The target audience is already familiar with Kubernetes and Go development and wants to develop a new event source for use with Knative Eventing.

Before you begin

You’ll need these tools installed:


  1. Bootstrap Project
  2. Define The Source Resource
  3. Reconcile Sources
  4. Publish to Cluster
  5. (TODO) Dispatching Events


Kubebuilder not your thing? Prefer the easy way? Check out these alternatives.

  • ContainerSource is an easy way to turn any dispatcher container into an Event Source.
  • Auto ContainerSource is an even easier way to turn any dispatcher container into an Event Source without writing any controller code. It requires Metacontroller.
  • Metacontroller can be used to write controllers as webhooks in any language.
  • The Cloud Scheduler source uses the standard Kubernetes Golang client library instead of Kubebuilder.