背景:
当前,我们将Docker和Docker Compose用于我们的服务。我们已将不同环境的配置外部化为文件,这些文件定义了应用程序读取的环境变量。例如一个prod.env
文件:
ENV_VAR_ONE=Something Prod
ENV_VAR_TWO=Something else Prod
和一个test.env
文件:
ENV_VAR_ONE=Something Test
ENV_VAR_TWO=Something else Test
因此,我们可以在启动容器时简单地使用prod.env
ortest.env
文件:
docker run --env-file prod.env <image>
然后,我们的应用程序根据中定义的环境变量选择其配置prod.env
。
问题:
- 有没有一种方法可以从Kubernetes中的文件提供环境变量(例如在定义Pod时),而不是像这样对它们进行硬编码:
apiVersion:v1 种类:豆荚 元数据: 标签: 上下文:docker-k8s-lab 名称:mysql-pod 名称:mysql-pod 规格: 容器: -- 环境: -- 名称:MYSQL_USER 值:mysql -- 名称:MYSQL_PASSWORD 值:mysql -- 名称:MYSQL_DATABASE 值:样品 -- 名称:MYSQL_ROOT_PASSWORD 值:超级秘密 图片:“ mysql:latest” 名称:mysql 端口: -- containerPort:3306
- 如果这不可能,建议的方法是什么?
Secret
或ConfigMap
资源,因为这只是临时的,可用于测试。我在k8s集群中的权限有限。我也许可以创建Secret
资源,但是一旦创建资源就无法删除它们。