可以在部署中将数组作为环境变量吗?
kind: Deployment
metadata:
name: array-deployment
namespace: array-deployment
spec:
replicas: 1
selector:
matchLabels:
app: array-deployment
template:
metadata:
labels:
app: array-deployment
spec:
containers:
- name: array-deployment
image: array-deployment:beta
env:
- name: ENV_PROJECTS
value: "project1"
ports:
- containerPort: 80
resources: {}
字符串
举个例子,我想要一个ENV_PROJECT
项目数组。
2条答案
按热度按时间wribegjk1#
环境变量是普通字符串,不支持将数组作为输入
为了达到你想要的效果,你需要将值作为逗号分隔的列表传递。(如果你的数据包含
,
,你可能需要使用其他的分隔符)所以你的yaml清单会变成
字符串
这假定您在图像
array-deployment:beta
中的代码支持从env var中阅读逗号分隔的值dbf7pr2w2#
接受的答案是正确的,但我想补充一些额外的信息,因为搜索引擎登陆我在这里,当我搜索这个。
查看应用程序框架的文档,看看它们是否支持某种可以转换为数组的环境变量格式。
例如,在.NET Core中,在部署YAML中设置这些ENV
字符串
将序列化为可与appsettings.json一起使用的JSON
型
这个Stackoverflow答案解释了Sping Boot 框架中的一个类似概念:https://stackoverflow.com/a/75936733/9983227
所以重申一下:环境变量必须是
string
类型,但是你的框架可能有一些环境变量符号,这样你的代码就可以把配置当作数组来处理。