我按照以下说明https://github.com/confluentinc/cp-helm-charts使用Helm图表https://docs.confluent.io/current/installation/installing_cp/cp-helm-charts/docs/index.html在本地Minikube上安装了Kafka,如下所示:
helm install -f kafka_config.yaml confluentinc/cp-helm-charts --name kafka-home-delivery --namespace cust360
kafka_config.yaml与默认的yaml几乎相同,唯一的例外是我将其缩减为1个服务器/代理,而不是3个(只是因为我试图节省本地minikube上的资源;希望这是与我的问题无关)。
在Minikube上运行的也是一个MySQL实例。这是kubectl get pods --namespace myNamespace
的输出:
我想使用其中一种连接器(例如,Debezium MySQL CDC)连接MySQL和Kafka。在说明中说:
安装连接器
使用Confluent Hub客户端安装此程序 连接器:
confluent-hub install debezium/debezium-connector-mysql:0.9.2
声音不错,除了1)我不知道要在哪个Pod上运行此命令,2)所有Pod似乎都没有可用的confluent-hub命令。
问题:
答案 0 :(得分:2)
理想情况下,它应该可以作为helm
脚本的一部分进行配置,但是不幸的是,目前还没有。解决此问题的一种方法是从Confluent的Kafka Connect Docker映像构建一个新的Docker。手动下载连接器,然后将内容提取到文件夹中。将其内容复制到容器中的路径。像下面这样。
Dockerfile的内容
FROM confluentinc/cp-kafka-connect:5.2.1
COPY <connector-directory> /usr/share/java
/usr/share/java
是Kafka Connect查找插件的默认位置。您也可以在安装plugin.path
时使用其他位置并提供新的位置(helm
)。
构建此映像并将其托管在可访问的位置。在helm
安装期间,您还必须提供/覆盖图像和标签的详细信息。
Here是values.yaml
文件的路径。您可以在此处找到image
和plugin.path
的值。
答案 1 :(得分:2)
只是上述Jegan评论的一个附加内容:https://stackoverflow.com/a/56049585/6002912
您可以选择执行以下Dockerfile。推荐。
FROM confluentinc/cp-server-connect-operator:5.4.0.0
RUN confluent-hub install --no-prompt debezium/debezium-connector-postgresql:1.0.0
或者您也可以使用Docker的多阶段构建。
FROM confluentinc/cp-server-connect-operator:5.4.0.0
COPY --from=debezium/connect:1.0 \
/kafka/connect/debezium-connector-postgres/ \
/usr/share/confluent-hub-components/debezium-connector-postgres/
这将帮助您节省为插件(如debezium-connector-postgres)获取正确的jar文件的时间。
摘自Confluent文档:https://docs.confluent.io/current/connect/managing/extending.html#create-a-docker-image-containing-c-hub-connectors
答案 2 :(得分:1)
Kafka Connect吊舱应该已经安装了融合集线器。您应该在该pod上运行命令。
答案 3 :(得分:0)
cp kafka connect pod有2个容器,其中一个是cp-kafka-connect-server容器,该容器已安装confluent-hub,您可以登录到该容器并在其中运行连接器命令。该容器,运行以下命令:
kubectl exec -it {pod-name} -c cp-kafka-connect-server -- /bin/bash
答案 4 :(得分:0)