使用 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