如何使用 .properties 文件将 Dockerfile 加载到 K8s (AKS) 中?

问题描述 投票:0回答:2

我有以下项目: https://github.com/abil/kafka-connect-abil

在本地运行 dockerfile 效果非常好。 我尝试了一些方法让它在 k8s 中工作......

我尝试过 Kompose。这创建了正确的 .yaml 文件,以及与挂载路径“config”正确链接的持久卷,但运行时出现错误:

java.nio.file.NoSuchFileException: /config/docker-compose-worker-distributed.properties

有没有办法将属性文件添加到持久卷? 我试过了

kubectl cp config/docker-compose-worker-distributed.properties connector:/

但我得到:

error: unable to upgrade connection: container not found ("connector")

我还尝试使用 docker tag mycontainerreg.azure.io/name 标记图像,然后进行 docker Push,但这也失败了,也许是因为没有为其分配足够的资源?

主要是我只需要连接器从 AKS 中运行的 Kafka (Apache) 移植到 Ably,我知道如果我购买 Enterprise,我可以将连接器添加到 Confluence 云,但这很昂贵!

docker kubernetes apache-kafka apache-kafka-connect
2个回答
-1
投票

您需要创建一个包含属性的 configMap 文件,并在部署.yml 中指定它

这是名为 properties.yml

的 configMap 示例
apiVersion: v1
kind: ConfigMap
metadata:
  name: kafka-properties
binaryData:
  propertieA: >- valueA

在部署 yaml 文件中,您需要添加对创建的 configMap 的引用

 volumes:
       - name: kafka-properties-volume
         configMap:
           name: kafka-properties
    

查看官方文档关于configMaps

希望这有帮助


-1
投票

您不会提供文件。容器已经拥有它,并且安装一个可能会被容器入口点脚本覆盖,因为这就是 Confluence 图像所做的

将链接的插件安装到容器中,例如 Confluence 连接镜像(这就是他们的 Dockerfile 已经做的,但使用 Maven 而不是 Confluence Hub 客户端,后者也适用于 Apache Kafka),或者使用 Strimzi(而不是 Kompose),然后你可以使用

CONNECT_BOOTSTRAP_SERVERS
等环境变量配置工作器属性文件,也可以使用 Kafka Connect Strimzi 资源规范与 k8s 资源文件本地配置。这将模板化分布式工作线程属性文件作为容器启动过程的一部分

连接器本身将使用 REST API 的 JSON 负载进行配置,而不是文件

© www.soinside.com 2019 - 2024. All rights reserved.