我正在使用
Strimzi
、Kafka
、Kafka Connect
和自定义连接器插件,遵循 此文档。
部署工作正常,
Kafka Connect
正在工作,我可以使用它的RESTFUL API
。
但是连接器尚未创建。这是错误消息:
未能找到任何实现 Connector 的类及其名称 匹配 org.company.MySourceConnector
我知道原因:它找不到插件(jar 文件)。但是如果我进入 kafka-connect pod,我可以在正确的(我想)位置看到 jar 文件:
/opt/kafka/plugins/my-source-connector/my-source-connector.jar
。
此外,我运行
cat /tmp/strimzi-connect.properties
,我看到插件路径:plugin.path=/opt/kafka/plugins/
。 (该文件是在部署期间由 strimzi 创建的)
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
name: kafka-connect
annotations:
strimzi.io/use-connector-resources: "true"
spec:
replicas: 1
bootstrapServers: kafka-kafka-bootstrap:9092
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
config:
group.id: connect-cluster
...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnector
metadata:
name: my-connector
labels:
strimzi.io/cluster: kafka-connect
spec:
class: org.company.MySourceConnector
tasksMax: 1
config:
topic: my-topic
name: my-connector
如何配置
Strimzi
或 Kafka Connect
来查找我的插件?
我用尽了我所有的资源。如果有人可以对此提供一些说明,我将非常感激。
我发现jar文件已损坏。
就我而言,问题是插件 JAR 归
root:root
所有,并且只有用户 rw 权限。
[kafka@bf1f56801cfd plugins]$ ls -al
total 384
drwxr-xr-x 2 kafka root 4096 Apr 8 22:52 .
drwxr-xr-x 1 root root 4096 Apr 8 22:52 ..
-rw------- 1 root root 385010 Feb 7 16:10 mongo-kafka-connect-1.11.2.jar
但是 KafkaConnect 容器运行为
kafka:root
[kafka@bf1f56801cfd plugins]$ whoami
kafka
[kafka@bf1f56801cfd plugins]$ id -gn
root
所以我在我的 Containerfile 中添加了一个
chmod
,这解决了这个问题。
ARG STRIMZI_HELM_VERSION='0.33.0'
ARG KAFKA_VERSION='3.2.0'
ARG MONGO_CONNECTOR_VERSION='1.11.2'
FROM "quay.io/strimzi/kafka:${STRIMZI_HELM_VERSION}-kafka-${KAFKA_VERSION}"
ARG MONGO_CONNECTOR_VERSION
ADD --chown=kafka:root "https://repo1.maven.org/maven2/org/mongodb/kafka/mongo-kafka-connect/${MONGO_CONNECTOR_VERSION}/mongo-kafka-connect-${MONGO_CONNECTOR_VERSION}.jar" /opt/kafka/plugins/