mirror of https://github.com/knative/docs.git
Update kafkasource apigroup to match eventing-contrib (#2347)
* Update kafkasource apigroup to match eventing-contrib knative/eventing-contrib#902 updated the apigroup, update the docs to match * Unlint prettier changes * One more unlint
This commit is contained in:
parent
42aa251722
commit
076cd1cd43
|
@ -7,7 +7,6 @@ type: "docs"
|
||||||
|
|
||||||
Tutorial on how to build and deploy a `KafkaSource` [Eventing source](../../../sources/README.md) using a Knative Serving `Service`.
|
Tutorial on how to build and deploy a `KafkaSource` [Eventing source](../../../sources/README.md) using a Knative Serving `Service`.
|
||||||
|
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
You must ensure that you meet the [prerequisites listed in the Apache Kafka overview](../README.md).
|
You must ensure that you meet the [prerequisites listed in the Apache Kafka overview](../README.md).
|
||||||
|
@ -15,10 +14,12 @@ You must ensure that you meet the [prerequisites listed in the Apache Kafka over
|
||||||
## Creating a `KafkaSource` source CRD
|
## Creating a `KafkaSource` source CRD
|
||||||
|
|
||||||
1. Install the `KafkaSource` sub-component to your Knative cluster:
|
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
|
kubectl apply -f https://storage.googleapis.com/knative-releases/eventing-contrib/latest/kafka-source.yaml
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Check that the `kafka-controller-manager-0` pod is running.
|
2. Check that the `kafka-controller-manager-0` pod is running.
|
||||||
```
|
```
|
||||||
kubectl get pods --namespace knative-sources
|
kubectl get pods --namespace knative-sources
|
||||||
|
@ -36,8 +37,8 @@ You must ensure that you meet the [prerequisites listed in the Apache Kafka over
|
||||||
|
|
||||||
### Apache Kafka Topic (Optional)
|
### Apache Kafka Topic (Optional)
|
||||||
|
|
||||||
1. If using Strimzi, you can set a topic modifying
|
1. If using Strimzi, you can set a topic modifying `source/kafka-topic.yaml`
|
||||||
`source/kafka-topic.yaml` with your desired:
|
with your desired:
|
||||||
|
|
||||||
- Topic
|
- Topic
|
||||||
- Cluster Name
|
- Cluster Name
|
||||||
|
@ -108,6 +109,7 @@ You must ensure that you meet the [prerequisites listed in the Apache Kafka over
|
||||||
...
|
...
|
||||||
service.serving.knative.dev/event-display created
|
service.serving.knative.dev/event-display created
|
||||||
```
|
```
|
||||||
|
|
||||||
1. Ensure that the Service pod is running. The pod name will be prefixed with
|
1. Ensure that the Service pod is running. The pod name will be prefixed with
|
||||||
`event-display`.
|
`event-display`.
|
||||||
```
|
```
|
||||||
|
@ -119,11 +121,11 @@ You must ensure that you meet the [prerequisites listed in the Apache Kafka over
|
||||||
|
|
||||||
#### Apache Kafka Event Source
|
#### Apache Kafka Event Source
|
||||||
|
|
||||||
1. Modify `source/event-source.yaml` accordingly with bootstrap
|
1. Modify `source/event-source.yaml` accordingly with bootstrap servers, topics,
|
||||||
servers, topics, etc...:
|
etc...:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
apiVersion: sources.eventing.knative.dev/v1alpha1
|
apiVersion: sources.knative.dev/v1alpha1
|
||||||
kind: KafkaSource
|
kind: KafkaSource
|
||||||
metadata:
|
metadata:
|
||||||
name: kafka-source
|
name: kafka-source
|
||||||
|
@ -142,7 +144,7 @@ You must ensure that you meet the [prerequisites listed in the Apache Kafka over
|
||||||
```
|
```
|
||||||
$ kubectl apply -f event-source.yaml
|
$ kubectl apply -f event-source.yaml
|
||||||
...
|
...
|
||||||
kafkasource.sources.eventing.knative.dev/kafka-source created
|
kafkasource.sources.knative.dev/kafka-source created
|
||||||
```
|
```
|
||||||
1. Check that the event source pod is running. The pod name will be prefixed
|
1. Check that the event source pod is running. The pod name will be prefixed
|
||||||
with `kafka-source`.
|
with `kafka-source`.
|
||||||
|
@ -160,7 +162,8 @@ You must ensure that you meet the [prerequisites listed in the Apache Kafka over
|
||||||
|
|
||||||
### Verify
|
### Verify
|
||||||
|
|
||||||
1. Produce a message (`{"msg": "This is a test!"}`) to the Apache Kafka topic, like shown below:
|
1. Produce a message (`{"msg": "This is a test!"}`) to the Apache Kafka topic,
|
||||||
|
like shown below:
|
||||||
```
|
```
|
||||||
kubectl -n kafka run kafka-producer -ti --image=strimzi/kafka:0.14.0-kafka-2.3.0 --rm=true --restart=Never -- bin/kafka-console-producer.sh --broker-list my-cluster-kafka-bootstrap:9092 --topic knative-demo-topic
|
kubectl -n kafka run kafka-producer -ti --image=strimzi/kafka:0.14.0-kafka-2.3.0 --rm=true --restart=Never -- bin/kafka-console-producer.sh --broker-list my-cluster-kafka-bootstrap:9092 --topic knative-demo-topic
|
||||||
If you don't see a command prompt, try pressing enter.
|
If you don't see a command prompt, try pressing enter.
|
||||||
|
@ -181,47 +184,56 @@ You must ensure that you meet the [prerequisites listed in the Apache Kafka over
|
||||||
|
|
||||||
```
|
```
|
||||||
$ kubectl logs --selector='serving.knative.dev/service=event-display' -c user-container
|
$ 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#my-topic
|
|
||||||
subject: partition:0#564
|
|
||||||
id: partition:0/offset:564
|
|
||||||
time: 2020-02-10T18:10:23.861866615Z
|
|
||||||
datacontenttype: application/json
|
|
||||||
Extensions,
|
|
||||||
key:
|
|
||||||
Data,
|
|
||||||
{
|
|
||||||
"msg": "This is a test!"
|
|
||||||
}
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
☁️ cloudevents.Event
|
||||||
|
Validation: valid
|
||||||
|
Context Attributes,
|
||||||
|
specversion: 1.0
|
||||||
|
type: dev.knative.kafka.event
|
||||||
|
source: /apis/v1/namespaces/default/kafkasources/kafka-source#my-topic
|
||||||
|
subject: partition:0#564
|
||||||
|
id: partition:0/offset:564
|
||||||
|
time: 2020-02-10T18:10:23.861866615Z
|
||||||
|
datacontenttype: application/json
|
||||||
|
Extensions,
|
||||||
|
key:
|
||||||
|
Data,
|
||||||
|
{
|
||||||
|
"msg": "This is a test!"
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
## Teardown Steps
|
## Teardown Steps
|
||||||
|
|
||||||
1. Remove the Apache Kafka Event Source
|
1. Remove the Apache Kafka Event Source
|
||||||
```
|
```
|
||||||
$ kubectl delete -f source/source.yaml
|
|
||||||
kafkasource.sources.eventing.knative.dev "kafka-source" deleted
|
\$ kubectl delete -f source/source.yaml kafkasource.sources.knative.dev
|
||||||
```
|
"kafka-source" deleted
|
||||||
|
|
||||||
|
```
|
||||||
2. Remove the Event Display
|
2. Remove the Event Display
|
||||||
```
|
```
|
||||||
$ kubectl delete -f source/event-display.yaml
|
|
||||||
service.serving.knative.dev "event-display" deleted
|
\$ kubectl delete -f source/event-display.yaml service.serving.knative.dev
|
||||||
```
|
"event-display" deleted
|
||||||
|
|
||||||
|
```
|
||||||
3. Remove the Apache Kafka Event Controller
|
3. Remove the Apache Kafka Event Controller
|
||||||
```
|
```
|
||||||
$ kubectl delete -f https://storage.googleapis.com/knative-releases/eventing-contrib/latest/kafka-source.yaml
|
|
||||||
serviceaccount "kafka-controller-manager" deleted
|
\$ kubectl delete -f https://storage.googleapis.com/knative-releases/eventing-contrib/latest/kafka-source.yaml
|
||||||
clusterrole.rbac.authorization.k8s.io "eventing-sources-kafka-controller" deleted
|
serviceaccount "kafka-controller-manager" deleted
|
||||||
clusterrolebinding.rbac.authorization.k8s.io "eventing-sources-kafka-controller" deleted
|
clusterrole.rbac.authorization.k8s.io "eventing-sources-kafka-controller"
|
||||||
customresourcedefinition.apiextensions.k8s.io "kafkasources.sources.eventing.knative.dev" deleted
|
deleted clusterrolebinding.rbac.authorization.k8s.io
|
||||||
service "kafka-controller" deleted
|
"eventing-sources-kafka-controller" deleted
|
||||||
statefulset.apps "kafka-controller-manager" deleted
|
customresourcedefinition.apiextensions.k8s.io "kafkasources.sources.knative.dev"
|
||||||
```
|
deleted service "kafka-controller" deleted statefulset.apps
|
||||||
|
"kafka-controller-manager" deleted
|
||||||
|
|
||||||
|
````
|
||||||
4. (Optional) Remove the Apache Kafka Topic
|
4. (Optional) Remove the Apache Kafka Topic
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
|
@ -231,31 +243,34 @@ You must ensure that you meet the [prerequisites listed in the Apache Kafka over
|
||||||
|
|
||||||
## (Optional) Specify the key deserializer
|
## (Optional) Specify the key deserializer
|
||||||
|
|
||||||
When `KafkaSource` receives a message from Kafka, it dumps the key in the Event extension called `Key` and dumps Kafka message headers in the extensions starting with `kafkaheader`.
|
When `KafkaSource` receives a message from Kafka, it dumps the key in the Event
|
||||||
|
extension called `Key` and dumps Kafka message headers in the extensions
|
||||||
|
starting with `kafkaheader`.
|
||||||
|
|
||||||
You can specify the key deserializer among four types:
|
You can specify the key deserializer among four types:
|
||||||
|
|
||||||
* `string` (default) for UTF-8 encoded strings
|
* `string` (default) for UTF-8 encoded strings
|
||||||
* `int` for 32-bit & 64-bit signed integers
|
* `int` for 32-bit & 64-bit signed integers
|
||||||
* `float` for 32-bit & 64-bit floating points
|
* `float` for 32-bit & 64-bit floating points
|
||||||
* `byte-array` for a Base64 encoded byte array
|
* `byte-array` for a Base64 encoded byte array
|
||||||
|
|
||||||
To specify it, add the label `kafkasources.sources.eventing.knative.dev/key-type` to the `KafkaSource` definition like:
|
To specify it, add the label `kafkasources.sources.knative.dev/key-type` to the
|
||||||
|
`KafkaSource` definition like:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
apiVersion: sources.eventing.knative.dev/v1alpha1
|
apiVersion: sources.knative.dev/v1alpha1
|
||||||
kind: KafkaSource
|
kind: KafkaSource
|
||||||
metadata:
|
metadata:
|
||||||
name: kafka-source
|
name: kafka-source
|
||||||
labels:
|
labels:
|
||||||
kafkasources.sources.eventing.knative.dev/key-type: int
|
kafkasources.sources.knative.dev/key-type: int
|
||||||
spec:
|
spec:
|
||||||
consumerGroup: knative-group
|
consumerGroup: knative-group
|
||||||
bootstrapServers: my-cluster-kafka-bootstrap.kafka:9092 #note the kafka namespace
|
bootstrapServers: my-cluster-kafka-bootstrap.kafka:9092 #note the kafka namespace
|
||||||
topics: knative-demo-topic
|
topics: knative-demo-topic
|
||||||
sink:
|
sink:
|
||||||
ref:
|
ref:
|
||||||
apiVersion: serving.knative.dev/v1
|
apiVersion: serving.knative.dev/v1
|
||||||
kind: Service
|
kind: Service
|
||||||
name: event-display
|
name: event-display
|
||||||
```
|
```
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
# KAFKA_TLS_CA_CERT_SECRET_NAME: Name of secret containing server CA cert to use when connecting wtih TLS (optional)
|
# KAFKA_TLS_CA_CERT_SECRET_NAME: Name of secret containing server CA cert to use when connecting wtih TLS (optional)
|
||||||
# KAFKA_TLS_CA_CERT_SECRET_KEY: Key within secret containing server CA cert to use when connecting wtih TLS (optional)
|
# KAFKA_TLS_CA_CERT_SECRET_KEY: Key within secret containing server CA cert to use when connecting wtih TLS (optional)
|
||||||
|
|
||||||
apiVersion: sources.eventing.knative.dev/v1alpha1
|
apiVersion: sources.knative.dev/v1alpha1
|
||||||
kind: KafkaSource
|
kind: KafkaSource
|
||||||
metadata:
|
metadata:
|
||||||
name: kafka-source
|
name: kafka-source
|
||||||
|
|
Loading…
Reference in New Issue