使用 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)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”