将连接器与安装了Helm的Kafka / Confluent结合使用

时间:2019-04-01 19:46:50

标签: mysql kubernetes apache-kafka apache-kafka-connect confluent

我按照以下说明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的输出:

enter image description here

我想使用其中一种连接器(例如,Debezium MySQL CDC)连接MySQL和Kafka。在说明中说:

  

安装连接器

     

使用Confluent Hub客户端安装此程序   连接器:

     

confluent-hub install debezium/debezium-connector-mysql:0.9.2

声音不错,除了1)我不知道要在哪个Pod上运行此命令,2)所有Pod似乎都没有可用的confluent-hub命令。

问题:

  1. 不通过那些Helm图表安装汇流式集线器吗?
  2. 我必须自己安装confluent-hub吗?
  3. 如果是,我必须在哪个吊舱上安装它?

5 个答案:

答案 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安装期间,您还必须提供/覆盖图像和标签的详细信息。

Herevalues.yaml文件的路径。您可以在此处找到imageplugin.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)

从最新版本的图表开始,可以使用customEnv.CUSTOM_SCRIPT_PATH

请参见README.md

脚本可以作为secret传递并可以作为volume

挂载