使用安装了 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 命令可用。
问题:
- confluent-hub 不是通过那些 Helm 图表安装的吗?
- 我必须自己安装 confluent-hub 吗?
- 如果可以,我必须将它安装在哪个 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 图像和标签详细信息。
Here 是 values.yaml
文件的路径。您可以在此处找到 image
和 plugin.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
来实现
我已经使用 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 命令可用。
问题:
- confluent-hub 不是通过那些 Helm 图表安装的吗?
- 我必须自己安装 confluent-hub 吗?
- 如果可以,我必须将它安装在哪个 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 图像和标签详细信息。
Here 是 values.yaml
文件的路径。您可以在此处找到 image
和 plugin.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