背景:
当前,我们将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.envortest.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资源,但是一旦创建资源就无法删除它们。