Skip to content
This repository has been archived by the owner on Jun 11, 2021. It is now read-only.

Latest commit

 

History

History
26 lines (22 loc) · 1.32 KB

README.md

File metadata and controls

26 lines (22 loc) · 1.32 KB

Knative-Kafka Channel

The "Channel" implementation is a Kafka Producer which is responsible for receiving CloudEvents, converting them to Kafka Messages, and writing them to the appropriate Kafka Topic.

A unique Channel Deployment / Service is created for every Kafka Secret (in the knative-eventing namespace and labelled with knativekafka.kyma-project.io/kafka-secret: "true"). The single Deployment is horizontally scalable as necessary (via controller environment variables.) This allows for an efficient use of cluster resources while still supporting high volume and multi-tenant use cases.

An additional Service for each KafkaChannel is created in the user namespace where the KafkaChannel exists. This is the actual endpoint of the KafkaChannel This service forwards requests to the service mentioned above in the knative-eventing namespace. This is all necessary so that the Channel implementation can use the hostname of the request to map incoming CloudEvents to the appropriate Kafka Topic.

The implementation makes use of the Conluent Go Client library, along with the underlying C/C++ librdkafka library. The Kafka brokers and credentials are obtained from mounted Secret data from the aforementiond Kafka Secret.