使用安装了 Helm 的连接器 Kafka/Confluent

Using a connector with Helm-installed Kafka/Confluent

我已经使用 Helm 图表 https://github.com/confluentinc/cp-helm-charts following these instructions 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 server/broker 而不是 3(只是因为我试图在我本地的 minikube;希望这与我的问题无关。

此外,Minikube 上的 运行ning 是一个 MySQL 实例。这是 kubectl get pods --namespace myNamespace 的输出:

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

Install your connector

Use the Confluent Hub client to install this connector with:

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

听起来不错,除了 1) 我不知道 运行 这个命令在哪个 pod 上,2) pods 的 None 似乎有一个 confluent-hub 命令可用。

问题:

  1. confluent-hub 不是通过那些 Helm 图表安装的吗?
  2. 我必须自己安装 confluent-hub 吗?
  3. 如果可以,我必须将它安装在哪个 pod 上?

Kafka Connect pod 应该已经安装了 confluent-hub。您应该 运行 命令在那个 pod 上。

理想情况下,这应该可以配置为 helm 脚本的一部分,但不幸的是,目前还不能。解决此问题的一种方法是从 Confluent 的 Kafka Connect Docker 图像构建一个新的 Docker。手动下载连接器并将内容提取到一个文件夹中。将其内容复制到容器中的路径。像下面这样的东西。

Docker文件的内容

FROM confluentinc/cp-kafka-connect:5.2.1
COPY <connector-directory> /usr/share/java

/usr/share/java 是 Kafka Connect 寻找插件的默认位置。您还可以使用不同的位置并在 helm 安装期间提供新位置 (plugin.path)。

构建此映像并将其托管在可访问的位置。在 helm 安装期间,您还必须 provide/override 图像和标签详细信息。

Herevalues.yaml 文件的路径。您可以在此处找到 imageplugin.path 值。

cp kafka connect pod 有 2 个容器,其中一个是 cp-kafka-connect-server container.That 容器有 confluent-hub installed.You 可以登录到那个容器并且 运行 您的连接器命令 there.To 登录到该容器,运行 以下命令:

kubectl exec -it {pod-name} -c cp-kafka-connect-server -- /bin/bash

只是 Jegan 上面评论的补充:

您可以选择执行下面的 Docker 文件。推荐。

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

对于最新版本的图表,可以使用 customEnv.CUSTOM_SCRIPT_PATH

来实现

README.md

脚本可以作为 secret and mounted as a volume