From 661e5724a0a959bce0ff08d3b2dcd062d649e52b Mon Sep 17 00:00:00 2001 From: Unnati Mishra <54355445+CodesbyUnnati@users.noreply.github.com> Date: Mon, 18 Sep 2023 15:17:43 +0530 Subject: [PATCH] Removed Kafka Binding doc and its references (#5684) Signed-off-by: CodebyUnnati --- code-samples/eventing/kafka/binding/README.md | 270 ------------------ docs/samples/eventing.md | 1 - 2 files changed, 271 deletions(-) delete mode 100644 code-samples/eventing/kafka/binding/README.md diff --git a/code-samples/eventing/kafka/binding/README.md b/code-samples/eventing/kafka/binding/README.md deleted file mode 100644 index ce2340f44..000000000 --- a/code-samples/eventing/kafka/binding/README.md +++ /dev/null @@ -1,270 +0,0 @@ -# Apache Kafka Binding Example - -KafkaBinding is responsible for injecting Kafka bootstrap connection information -into a Kubernetes resource that embed a PodSpec (as `spec.template.spec`). This -enables easy bootstrapping of a Kafka client. - -## Create a Job that uses KafkaBinding - -In the following example a Kubernetes Job will be using the KafkaBinding to produce -messages on a Kafka Topic, which will be received by the Event Display service -via Kafka Source - -### Prerequisites - -1. You must ensure that you meet the - [prerequisites listed in the Apache Kafka overview](https://knative.dev/docs/eventing/broker/kafka-broker/#prerequisites). -2. This feature is available from Knative Eventing 0.15+ - -### Creating a `KafkaSource` source CRD - -1. Install the `KafkaSource` sub-component to your Knative cluster: - - ``` - kubectl apply -f https://storage.googleapis.com/knative-releases/eventing-contrib/latest/kafka-source.yaml - - ``` - -1. Check that the `kafka-controller-manager-0` pod is running. - ``` - kubectl get pods --namespace knative-sources - NAME READY STATUS RESTARTS AGE - kafka-controller-manager-0 1/1 Running 0 42m - ``` - -### Create the Event Display service - -1. (Optional) Source code for Event Display service - - Get the source code of Event Display container image from - [here](https://github.com/knative/eventing/blob/main/cmd/event_display/main.go) - -1. Deploy the Event Display Service via kubectl: - - ```yaml - apiVersion: serving.knative.dev/v1 - kind: Service - metadata: - name: event-display - spec: - template: - spec: - containers: - - image: gcr.io/knative-releases/knative.dev/eventing/cmd/event_display - ``` - - ``` - $ kubectl apply --filename event-display.yaml - ... - service.serving.knative.dev/event-display created - ``` - -1. (Optional) Deploy the Event Display Service via kn cli: - - Alternatively, you can create the Knative Service by running the following command in the `kn` CLI. - - ``` - kn service create event-display --image=gcr.io/knative-releases/knative.dev/eventing/cmd/event_display - ``` - -1. Ensure that the Service pod is running. The pod name will be prefixed with - `event-display`. - ``` - $ kubectl get pods - NAME READY STATUS RESTARTS AGE - event-display-00001-deployment-5d5df6c7-gv2j4 2/2 Running 0 72s - ... - ``` - -### Apache Kafka Event Source - -1. Modify `event-source.yaml` accordingly with bootstrap servers, topics, - etc...: - - ```yaml - apiVersion: sources.knative.dev/v1beta1 - kind: KafkaSource - metadata: - name: kafka-source - spec: - consumerGroup: knative-group - bootstrapServers: - - my-cluster-kafka-bootstrap.kafka:9092 #note the kafka namespace - topics: - - logs - sink: - ref: - apiVersion: serving.knative.dev/v1 - kind: Service - name: event-display - ``` - -1. Deploy the event source. - ``` - $ kubectl apply -f event-source.yaml - ... - kafkasource.sources.knative.dev/kafka-source created - ``` -1. Check that the event source pod is running. The pod name will be prefixed - with `kafka-source`. - ``` - $ kubectl get pods - NAME READY STATUS RESTARTS AGE - kafka-source-xlnhq-5544766765-dnl5s 1/1 Running 0 40m - ``` - -### Kafka Binding Resource - -Create the KafkaBinding that will inject kafka bootstrap information into select -`Jobs`: - -1. Modify `kafka-binding.yaml` accordingly with bootstrap servers etc...: - - ```yaml - apiVersion: bindings.knative.dev/v1beta1 - kind: KafkaBinding - metadata: - name: kafka-binding-test - spec: - subject: - apiVersion: batch/v1 - kind: Job - selector: - matchLabels: - kafka.topic: "logs" - bootstrapServers: - - my-cluster-kafka-bootstrap.kafka:9092 - ``` - -In this case, we will bind any `Job` with the labels `kafka.topic: "logs"`. - -### Create Kubernetes Job - -1. Source code for kafka-publisher service - - Get the source code of kafka-publisher container image from - [here](https://github.com/knative-extensions/eventing-kafka/blob/main/test/test_images/kafka-publisher/main.go) - -1. Now we will use the kafka-publisher container to send events to kafka topic - when the Job runs. - - ```yaml - apiVersion: batch/v1 - kind: Job - metadata: - labels: - kafka.topic: "logs" - name: kafka-publisher-job - spec: - backoffLimit: 1 - completions: 1 - parallelism: 1 - template: - metadata: - annotations: - sidecar.istio.io/inject: "false" - spec: - restartPolicy: Never - containers: - - image: docker.io/murugappans/kafka-publisher-1974f83e2ff7c8994707b5e8731528e8@sha256:fd79490514053c643617dc72a43097251fed139c966fd5d131134a0e424882de - env: - - name: KAFKA_TOPIC - value: "logs" - - name: KAFKA_KEY - value: "0" - - name: KAFKA_HEADERS - value: "content-type:application/json" - - name: KAFKA_VALUE - value: '{"msg":"This is a test!"}' - name: kafka-publisher - ``` -1. Check that the Job has run successfully. - ``` - $ kubectl get jobs - NAME COMPLETIONS DURATION AGE - kafka-publisher-job 1/1 7s 7s - ``` - -### Verify - -1. Ensure the Event Display received the message sent to it by the Event Source. - - ``` - $ kubectl logs --selector='serving.knative.dev/service=event-display' -c user-container - - ☁️ cloudevents.Event - Validation: valid - Context Attributes, - specversion: 1.0 - type: dev.knative.kafka.event - source: /apis/v1/namespaces/default/kafkasources/kafka-source#logs - subject: partition:0#1 - id: partition:0/offset:1 - time: 2020-05-17T19:45:02.7Z - datacontenttype: application/json - Extensions, - kafkaheadercontenttype: application/json - key: 0 - traceparent: 00-f383b779f512358b24ffbf6556a6d6da-cacdbe78ef9b5ad3-00 - Data, - { - "msg": "This is a test!" - } - - ``` - -## Connecting to a TLS enabled Kafka broker - -The KafkaBinding supports TLS and SASL authentication methods. For injecting TLS -authentication, you must have the following files: - -- CA Certificate -- Client Certificate and Key - -These files are expected to be in pem format, if it is in other format like jks -, please convert to pem. - -1. Create the certificate files as secrets in the namespace where KafkaBinding - is going to be set up - - ``` - $ kubectl create secret generic cacert --from-file=caroot.pem - secret/cacert created - - $ kubectl create secret tls kafka-secret --cert=certificate.pem --key=key.pem - secret/key created - - ``` - -2. Apply the kafkabinding-tls.yaml, change bootstrapServers accordingly. - ```yaml - apiVersion: sources.knative.dev/v1beta1 - kind: KafkaBinding - metadata: - name: kafka-source-with-tls - spec: - subject: - apiVersion: batch/v1 - kind: Job - selector: - matchLabels: - kafka.topic: "logs" - net: - tls: - enable: true - cert: - secretKeyRef: - key: tls.crt - name: kafka-secret - key: - secretKeyRef: - key: tls.key - name: kafka-secret - caCert: - secretKeyRef: - key: caroot.pem - name: cacert - consumerGroup: knative-group - bootstrapServers: - - my-secure-kafka-bootstrap.kafka:443 - ``` diff --git a/docs/samples/eventing.md b/docs/samples/eventing.md index 6eebb1cbe..594326448 100644 --- a/docs/samples/eventing.md +++ b/docs/samples/eventing.md @@ -11,7 +11,6 @@ See [all Knative code samples](https://github.com/knative/docs/tree/main/code-sa | Hello World | A quick introduction that highlights how to deploy an app using Knative. | [Go](https://github.com/knative/docs/tree/main/code-samples/eventing/helloworld/helloworld-go) and [Python](https://github.com/knative/docs/tree/main/code-samples/eventing/helloworld/helloworld-python) | | GitHub source | Shows how to wire GitHub events for consumption by a Knative Service. | [YAML](https://github.com/knative/docs/tree/main/code-samples/eventing/github-source) | | GitLab source | Shows how to wire GitLab events for consumption by a Knative Service. | [YAML](https://github.com/knative/docs/tree/main/code-samples/eventing/gitlab-source) | -| Apache Kafka Binding | KafkaBinding is responsible for injecting Kafka bootstrap connection information into a Kubernetes resource that embed a PodSpec (as `spec.template.spec`). This enables easy bootstrapping of a Kafka client. | [YAML](https://github.com/knative/docs/tree/main/code-samples/eventing/kafka/binding) | | Apache Kafka Channel | Install and configure the Apache Kafka Channel as the default Channel configuration for Knative Eventing. | [YAML](https://github.com/knative/docs/tree/main/code-samples/eventing/kafka/channel) | | Writing an event source using JavaScript | This tutorial provides instructions to build an event source in JavaScript and implement it with a ContainerSource or SinkBinding. | [JavaScript](https://github.com/knative/docs/tree/main/code-samples/eventing/writing-event-source-easy-way) | | Parallel with multiple cases | Create a Parallel with two branches. | [YAML](https://github.com/knative/docs/tree/main/code-samples/eventing/parallel/multiple-branches) |