0

我有许多遗留服务正在运行,它们从磁盘读取它们的配置文件和一个单独的守护进程,当它们在 zookeeper 中更改时更新这些文件(有点类似于confd)。

对于大多数这些类型的配置,我们希望转移到像模型这样的更多环境变量,其中配置在 pod 的生命周期内是固定的。然而,我们需要将外部配置文件作为事实来源,因为服务正在从遗留模型过渡到 kubernetes。我很好奇在 kubernetes 中是否有一种干净的方法可以做到这一点。

我们正在追求的当前模型的简化版本是:

  1. 创建一个 docker 映像,该映像具有用于获取配置文件并将它们写入磁盘的实用程序。然后写入 /donepath/done 文件。
  2. 主图像等到完成的文件存在。然后允许正常的服务启动进行。
  3. 使用空的 dir 卷和卷挂载将 conf 从帮助映像获取到主映像。

我不断看到这个问题的实例,我“只是”需要在启动时将几个文件放入 docker 映像中(以允许每个 env/canary/etc 差异),并且每次运行所有这些机器似乎都是一种负担扔给开发人员。我很好奇在 kubernetes 或即将出现的情况下是否有更简单的方法可以做到这一点。

4

1 回答 1

0

您可以在 Dockerfile 中使用 ADD 命令。它用作添加文件/path/in/docker。这将允许您快速将完整的文件添加到您的容器中。构建容器时,您需要将要添加到镜像中的文件与 Dockerfile 放在同一目录中。您也可以通过这种方式添加一个 tar 文件,该文件将在构建期间展开。

另一个选项是 Dockerfile 中的 ENV 命令。这会将数据添加为环境变量。

于 2015-12-23T13:40:44.740 回答