何时使用ConfigMap中的Kubernetes env

时间:2017-12-20 05:04:55

标签: kubernetes

Kubernetes能够从配置文件中设置(在部署定义中)环境变量。根据{{​​3}},应该只在环境变量中存储秘密/配置变量,而不是在文件中。

支持使用Kubernetes ConfigMap设置环境变量的参数是什么?

2 个答案:

答案 0 :(得分:1)

十二因素应用指南advocates the use of environment variables because when using configuration files

  

很容易错误地将配置文件签入到repo中;配置文件倾向于分散在不同的地方和不同的格式,这使得很难在一个地方查看和管理所有配置。此外,这些格式往往是语言或框架特定的。

您可以在应用程序的文件系统中安装ConfigMap作为卷,但是您的应用程序负责知道在启动应用程序期间如何读取该文件。通常,在启动应用程序时,它更容易读取传递的环境变量。

在这两种情况下(从文件中读取并从env vars中读取),您将遵循Twelve Factor App建议。但是当从文件中读取配置时,我认为在其他地方运行该应用程序更加困难,因为它要求我们首先创建该文件,这对于不同的平台来说可能是不同的。另一方面,传递环境变量在所有平台上通常都是相同的。

能够在不同平台上轻松运行应用程序是Twelve Factor App指南的主要目标,因此我选择直接从ConfigMap传递环境变量。

答案 1 :(得分:0)

我认为12 Factor Guide的措词应该有所不同,以避免这种混淆。重要的方面是,应用程序应从“一种语言和操作系统不可知的标准”环境中“读取”(而不是“存储”)配置。

ConfigMaps通过mapping managed/versioned configuration to environment variables in a container帮助完成此任务。