Apache Kafka examples
The following examples will help you understand how to use the different Apache Kafka components for Knative.
Prerequisites
All examples require:
- A Kubernetes cluster with
- Knative Eventing v0.9+
- Knative Serving v0.9+
- An Apache Kafka cluster
Setting up Apache Kafka
If you want to run the Apache Kafka cluster on Kubernetes, the simplest option is to install it by using Strimzi.
Create a namespace for your Apache Kafka installation, like
kafka
:kubectl create namespace kafka
Install the Strimzi operator, like:
curl -L "https://github.com/strimzi/strimzi-kafka-operator/releases/download/0.16.2/strimzi-cluster-operator-0.16.2.yaml" \
| sed 's/namespace: .*/namespace: kafka/' \
| kubectl -n kafka apply -f -
Describe the size of your Apache Kafka installation in
kafka.yaml
, like:apiVersion: kafka.strimzi.io/v1beta1
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
version: 2.4.0
replicas: 1
listeners:
plain: {}
tls: {}
config:
offsets.topic.replication.factor: 1
transaction.state.log.replication.factor: 1
transaction.state.log.min.isr: 1
log.message.format.version: "2.4"
storage:
type: ephemeral
zookeeper:
replicas: 3
storage:
type: ephemeral
entityOperator:
topicOperator: {}
userOperator: {}
Deploy the Apache Kafka cluster
$ kubectl apply -n kafka -f kafka.yaml
This will install a small, non-production, cluster of Apache Kafka. To verify your installation, check if the pods for Strimzi are all up, in the kafka
namespace:
$ kubectl get pods -n kafka
NAME READY STATUS RESTARTS AGE
my-cluster-entity-operator-65995cf856-ld2zp 3/3 Running 0 102s
my-cluster-kafka-0 2/2 Running 0 2m8s
my-cluster-zookeeper-0 2/2 Running 0 2m39s
my-cluster-zookeeper-1 2/2 Running 0 2m49s
my-cluster-zookeeper-2 2/2 Running 0 2m59s
strimzi-cluster-operator-77555d4b69-sbrt4 1/1 Running 0 3m14s
NOTE: For production ready installs check Strimzi.
Installation script
If you want to install the latest version of Strimzi, in just one step, we have a script for your convenience, which does exactly the same steps that are listed above:
$ ./kafka_setup.sh
Examples of Apache Kafka and Knative
A number of different examples, showing the KafkaSource
, KafkaChannel
and KafkaBinding
can be found here: