【问题标题】:Docker - how to dynamically configure an application that uses flat text config files?Docker - 如何动态配置使用纯文本配置文件的应用程序?
【发布时间】:2019-04-02 12:42:07
【问题描述】:

我正在加速使用 Docker 和 k8s,并且遇到了一个第 3 方应用程序的问题,我正在容器化应用程序,该应用程序是通过纯文本文件配置的,没有覆盖环境变量。

动态配置此应用的最佳方式是什么?我立即倾向于接受环境变量并写入文本文件配置的 sidecar 容器,将其写入 pod 中的共享卷,然后应用程序容器将读取配置文件。这是正确的吗?

这里的最佳做法是什么?

【问题讨论】:

  • Kubernetes ConfigMap 能满足您的需求吗?
  • confd 已被编写为从环境变量(或其他后端)呈现平面配置文件。将它添加到您的图像可能比您的方法更轻量级,并且不需要任何卷。但是,ConfigMap 肯定更标准

标签: docker kubernetes


【解决方案1】:

用这个配置文件创建一个ConfigMap。然后,将ConfigMap 挂载到 pod 中。这将在挂载目录中创建配置文件。然后,你就可以像往常一样使用这个配置文件了。

以下是相关示例:

  1. Create ConfigMap from file.

  2. Mount ConfigMap as volume.

【讨论】:

  • 这看起来是个不错的方法,但我不明白如何配置同一服务的多个 pod 以相互通信。例如,假设我有 3 个服务节点,每个节点都需要知道连接细节才能与其他节点通信。另外,假设每个节点都有一个标识自己的任意值 [1,2,3](不是 ip、主机名等),并且该值需要在其他节点的配置文件中设置。我似乎无法弄清楚 ConfigMaps 如何在这里提供帮助......我只是设计了我的服务错误吗?
  • 在这种情况下,可以使用共享卷。
猜你喜欢
  • 1970-01-01
  • 2019-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多