我们有一组使用相同docker镜像的部署(pod集) . 例子:
-
web api
-
网站管理员
-
web任务工作节点
-
数据任务工作节点
-
......
它们都需要一组常见的环境变量,例如数据库主机的位置,外部服务的密钥等 . 它们还有一组不常见的环境变量 .
无论如何,有人可以:
-
重用定义环境变量的模板
-
从文件加载环境变量并将其设置在pod上
最佳解决方案是名称空间感知的解决方案,因为我们使用kubernetes名称空间分隔测试,阶段和prod环境 .
类似于dockers env_file的东西会很好 . 但我找不到与此相关的任何示例或参考 . 我唯一能找到的是通过秘密设置env,但这不是干净的,详细的方式,因为我仍然需要为每个部署编写所有环境变量 .
1 回答
你可以create a ConfigMap与所有常见的
kye:value
对env变量 .然后,您可以重用configmap将
configMap
的所有值声明为Deployment
中的环境 .以下是kubernetes official docs的示例 .
创建包含多个键值对的ConfigMap .
使用envFrom将所有ConfigMap的数据定义为Pod环境变量 . ConfigMap中的键成为Pod中的环境变量名称 .
您可以在
env
字段中指定不常见的env变量 .现在,要验证环境变量是否实际可用,请参阅日志 .
在这里,可以看到所有提供的环境都可用 .