使用 cp-kafka-connect-base 为 snowflake-kafka-connector 构建一个组合的 docker 映像,以部署在 kafka connect 集群上
Posted
技术标签:
【中文标题】使用 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 【发布时间】:2020-02-08 03:29:37 【问题描述】:(代表客户提交)
.......................
我们在 kubernetes(掌舵图)上使用 kafka 连接集群。
但是要安装插件,建议使用本地连接器扩展“cp-kafka-connect-base”提供的图像。更多说明:https://docs.confluent.io/current/connect/managing/extending.html#create-a-docker-image-containing-local-connectors
我无法使用雪花卡夫卡连接器这样做。
有什么推荐的解决方法吗?
附: :
对于 PoC,我在本地机器上运行 kafka connect 并在插件目录中添加了 snowflake-kafka-connector jar 文件,效果很好。但是需要这个 docker 镜像来进行生产部署。
【问题讨论】:
我在 git 存储库中交叉引用了这个问题,看看我们是否可以得到一些专家帮助:github.com/snowflakedb/snowflake-kafka-connector/issues/64 【参考方案1】:您是否尝试过使用 Docker 挂载外部卷并映射存储雪花连接器 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 会寻找新的连接器以供加载使用。
希望这会有所帮助。
【讨论】:
【参考方案2】:除了 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 了解更多详情。
【讨论】:
以上是关于使用 cp-kafka-connect-base 为 snowflake-kafka-connector 构建一个组合的 docker 映像,以部署在 kafka connect 集群上的主要内容,如果未能解决你的问题,请参考以下文章
在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?