1
0
mirror of https://github.com/openshift/openshift-docs.git synced 2026-02-07 00:48:01 +01:00
Files
openshift-docs/modules/serverless-kafka-source-kn.adoc
2023-10-30 10:13:25 -04:00

117 lines
3.6 KiB
Plaintext

// Module included in the following assemblies:
//
// * serverless/develop/serverless-kafka-developer.adoc
// * serverless/reference/kn-eventing-ref.adoc
:_mod-docs-content-type: PROCEDURE
[id="serverless-kafka-source-kn_{context}"]
= Creating an Apache Kafka event source by using the Knative CLI
You can use the `kn source kafka create` command to create a Kafka source by using the Knative (`kn`) CLI. Using the Knative CLI to create event sources provides a more streamlined and intuitive user interface than modifying YAML files directly.
.Prerequisites
* The {ServerlessOperatorName}, Knative Eventing, Knative Serving, and the `KnativeKafka` custom resource (CR) are installed on your cluster.
* You have created a project or have access to a project with the appropriate roles and permissions to create applications and other workloads in {product-title}.
* You have access to a Red Hat AMQ Streams (Kafka) cluster that produces the Kafka messages you want to import.
* You have installed the Knative (`kn`) CLI.
* Optional: You have installed the OpenShift CLI (`oc`) if you want to use the verification steps in this procedure.
.Procedure
. To verify that the Kafka event source is working, create a Knative service that dumps incoming events into the service logs:
+
[source,terminal]
----
$ kn service create event-display \
--image quay.io/openshift-knative/knative-eventing-sources-event-display
----
. Create a `KafkaSource` CR:
+
[source,terminal]
----
$ kn source kafka create <kafka_source_name> \
--servers <cluster_kafka_bootstrap>.kafka.svc:9092 \
--topics <topic_name> --consumergroup my-consumer-group \
--sink event-display
----
+
[NOTE]
====
Replace the placeholder values in this command with values for your source name, bootstrap servers, and topics.
====
+
The `--servers`, `--topics`, and `--consumergroup` options specify the connection parameters to the Kafka cluster. The `--consumergroup` option is optional.
. Optional: View details about the `KafkaSource` CR you created:
+
[source,terminal]
----
$ kn source kafka describe <kafka_source_name>
----
+
.Example output
[source,terminal]
----
Name: example-kafka-source
Namespace: kafka
Age: 1h
BootstrapServers: example-cluster-kafka-bootstrap.kafka.svc:9092
Topics: example-topic
ConsumerGroup: example-consumer-group
Sink:
Name: event-display
Namespace: default
Resource: Service (serving.knative.dev/v1)
Conditions:
OK TYPE AGE REASON
++ Ready 1h
++ Deployed 1h
++ SinkProvided 1h
----
.Verification steps
. Trigger the Kafka instance to send a message to the topic:
+
[source,terminal]
----
$ oc -n kafka run kafka-producer \
-ti --image=quay.io/strimzi/kafka:latest-kafka-2.7.0 --rm=true \
--restart=Never -- bin/kafka-console-producer.sh \
--broker-list <cluster_kafka_bootstrap>:9092 --topic my-topic
----
+
Enter the message in the prompt. This command assumes that:
+
* The Kafka cluster is installed in the `kafka` namespace.
* The `KafkaSource` object has been configured to use the `my-topic` topic.
. Verify that the message arrived by viewing the logs:
+
[source,terminal]
----
$ oc logs $(oc get pod -o name | grep event-display) -c user-container
----
+
.Example output
[source,terminal]
----
☁️ cloudevents.Event
Validation: valid
Context Attributes,
specversion: 1.0
type: dev.knative.kafka.event
source: /apis/v1/namespaces/default/kafkasources/example-kafka-source#example-topic
subject: partition:46#0
id: partition:46/offset:0
time: 2021-03-10T11:21:49.4Z
Extensions,
traceparent: 00-161ff3815727d8755848ec01c866d1cd-7ff3916c44334678-00
Data,
Hello!
----