使用 cp-kafka-connect-base 为 snowflake-kafka-connector 构建组合 docker 映像,以部署在 kafka connect 集群上
Build a combined docker image for snowflake-kafka-connector with cp-kafka-connect-base to deploy on kafka connect cluster
(代表客户提交)
.......................
我们在 kubernetes(helm 图表)上使用 kafka connect 集群。
但是要安装插件,建议使用本地连接器扩展 "cp-kafka-connect-base" 提供的图像。更多说明:https://docs.confluent.io/current/connect/managing/extending.html#create-a-docker-image-containing-local-connectors
我无法使用雪花卡夫卡连接器这样做。
是否有推荐的解决方法?
P.S。 :
对于 PoC,我 运行 kafka 在我的本地机器上连接并在插件目录中添加了 snowflake-kafka-connector jar 文件,效果很好。但是生产部署需要这个 docker 映像。
您是否尝试过使用 Docker 安装外部卷并映射存储 Snowflake 连接器 jar 的位置:
https://docs.confluent.io/current/installation/docker/operations/external-volumes.html#
例如:
导航至 ~/cp-docker-images/examples/cp-all-in-one
在文本编辑器中打开 docker-compose.yml
将最后几行(下方)添加到文件中并保存
connect:
image: confluentinc/kafka-connect-datagen:latest
build:
context: .
dockerfile: Dockerfile
hostname: connect
container_name: connect
depends_on:
- zookeeper
- broker
- schema-registry
ports:
- "8083:8083"
volumes:
- ~/my-location:/etc/kafka-connect/jar
并修改连接插件路径以读取类似这样的内容;
CONNECT_PLUGIN_PATH: "/usr/share/java,/usr/share/confluent-hub-components,/etc/kafka-connect/jars"
卷数:
这将本地目录映射到 Docker 内的逻辑文件系统位置。因此,当它启动时,它可以通过映射 /etc/kafka-connect/jars
从我的 Mac 上的 ~/my-location (或您放在这里的任何内容)读取
连接插件路径:
您可以看到我们只是将 /etc/kafka-connect/jars 添加为已知位置,然后 Kafka Connect 会寻找新的连接器来加载以供使用。
希望对您有所帮助。
除了 Mike 将连接器安装为外部卷的建议外,我还建议考虑另外两个选项。
构建自定义图像
使用 confluent-hub
您可以将连接器安装到新映像中。例如:
FROM confluentinc/cp-kafka-connect-base
RUN echo "===> Installing Snowflake Connector ..."
RUN confluent-hub install --no-prompt snowflakeinc/snowflake-kafka-connector:0.5.5
在运行时安装连接器
如果您正在使用 Docker Compose,您可以构建一个 command
段落以在运行时安装连接器:
command:
- bash
- -c
- |
echo "Installing connector plugins"
confluent-hub install --no-prompt snowflakeinc/snowflake-kafka-connector:0.5.5
#
echo "Launching Kafka Connect worker"
/etc/confluent/docker/run &
#
sleep infinity
有关详细信息,请参阅 here。
(代表客户提交)
.......................
我们在 kubernetes(helm 图表)上使用 kafka connect 集群。
但是要安装插件,建议使用本地连接器扩展 "cp-kafka-connect-base" 提供的图像。更多说明:https://docs.confluent.io/current/connect/managing/extending.html#create-a-docker-image-containing-local-connectors
我无法使用雪花卡夫卡连接器这样做。
是否有推荐的解决方法?
P.S。 :
对于 PoC,我 运行 kafka 在我的本地机器上连接并在插件目录中添加了 snowflake-kafka-connector jar 文件,效果很好。但是生产部署需要这个 docker 映像。
您是否尝试过使用 Docker 安装外部卷并映射存储 Snowflake 连接器 jar 的位置: https://docs.confluent.io/current/installation/docker/operations/external-volumes.html#
例如:
导航至 ~/cp-docker-images/examples/cp-all-in-one
在文本编辑器中打开 docker-compose.yml
将最后几行(下方)添加到文件中并保存
connect:
image: confluentinc/kafka-connect-datagen:latest
build:
context: .
dockerfile: Dockerfile
hostname: connect
container_name: connect
depends_on:
- zookeeper
- broker
- schema-registry
ports:
- "8083:8083"
volumes:
- ~/my-location:/etc/kafka-connect/jar
并修改连接插件路径以读取类似这样的内容;
CONNECT_PLUGIN_PATH: "/usr/share/java,/usr/share/confluent-hub-components,/etc/kafka-connect/jars"
卷数: 这将本地目录映射到 Docker 内的逻辑文件系统位置。因此,当它启动时,它可以通过映射 /etc/kafka-connect/jars
从我的 Mac 上的 ~/my-location (或您放在这里的任何内容)读取连接插件路径: 您可以看到我们只是将 /etc/kafka-connect/jars 添加为已知位置,然后 Kafka Connect 会寻找新的连接器来加载以供使用。
希望对您有所帮助。
除了 Mike 将连接器安装为外部卷的建议外,我还建议考虑另外两个选项。
构建自定义图像
使用 confluent-hub
您可以将连接器安装到新映像中。例如:
FROM confluentinc/cp-kafka-connect-base
RUN echo "===> Installing Snowflake Connector ..."
RUN confluent-hub install --no-prompt snowflakeinc/snowflake-kafka-connector:0.5.5
在运行时安装连接器
如果您正在使用 Docker Compose,您可以构建一个 command
段落以在运行时安装连接器:
command:
- bash
- -c
- |
echo "Installing connector plugins"
confluent-hub install --no-prompt snowflakeinc/snowflake-kafka-connector:0.5.5
#
echo "Launching Kafka Connect worker"
/etc/confluent/docker/run &
#
sleep infinity
有关详细信息,请参阅 here。