Kubernetes能够从配置文件中设置(在部署定义中)环境变量。根据Twelve Factor App guide,人们应该只在环境变量中存储秘密/配置变量,而不是在文件中。
支持使用Kubernetes ConfigMap设置环境变量有哪些论据?
十二因素应用指南advocates the use of environment variables because when using configuration files
很容易错误地将配置文件签入到repo中;配置文件倾向于分散在不同的地方和不同的格式,这使得很难在一个地方查看和管理所有配置。此外,这些格式往往是语言或框架特定的。
您可以在应用程序的文件系统中将ConfigMap
作为卷安装,但随后您的应用程序将负责知道在启动应用程序期间如何读取该文件。通常,读取启动应用程序时传递的环境变量更容易。
在这两种情况下(从文件中读取并从env变量中读取),您将遵循Twelve Factor App建议。但是当从文件中读取配置时,我认为在其他地方运行该应用程序更加困难,因为它要求我们首先创建该文件,这对于不同的平台来说可能是不同的。另一方面,传递环境变量通常在所有平台上都是相同的。
能够在不同平台上轻松运行应用程序是Twelve Factor App指南的关键目标,因此我选择直接从ConfigMap
传递环境变量。