kubernetes 环境变量数组

bqucvtff  于 12个月前  发布在  Kubernetes
关注(0)|答案(2)|浏览(124)

可以在部署中将数组作为环境变量吗?

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项目数组。

wribegjk

wribegjk1#

环境变量是普通字符串,不支持将数组作为输入
为了达到你想要的效果,你需要将值作为逗号分隔的列表传递。(如果你的数据包含,,你可能需要使用其他的分隔符)
所以你的yaml清单会变成

- name: ENV_PROJECTS
      value: "project1,project2"

字符串
这假定您在图像array-deployment:beta中的代码支持从env var中阅读逗号分隔的值

dbf7pr2w

dbf7pr2w2#

接受的答案是正确的,但我想补充一些额外的信息,因为搜索引擎登陆我在这里,当我搜索这个。
查看应用程序框架的文档,看看它们是否支持某种可以转换为数组的环境变量格式。
例如,在.NET Core中,在部署YAML中设置这些ENV

- name: "Projects__0"
  - value: "project1"
- name: "Projects__1"
  - value: "project2"

字符串
将序列化为可与appsettings.json一起使用的JSON

{
    "Projects": ["project1", "project2"]
}


这个Stackoverflow答案解释了Sping Boot 框架中的一个类似概念:https://stackoverflow.com/a/75936733/9983227
所以重申一下:环境变量必须是string类型,但是你的框架可能有一些环境变量符号,这样你的代码就可以把配置当作数组来处理。

相关问题