Pod shell - 修改已经声明的 ENV 变量

问题描述 投票:0回答:1

上下文/为什么我要寻找那种奇怪的方式:

我尝试注入环境的 pod(pod)是由一个作业产生的,有数百个。 k8s 中还有一个 configmap,其中包含所有环境。我这样做是为了避免手动声明数百个具有不同环境变量的 Pod

我在 k8s 中有一个 pod,在清单中定义了环境变量:

spec:
  containers:
    name: something
    command: ["/bin/bash"]
    args: ["-c", "sleep 60 && source ~/.bashrc && env | grep FOO"]
    env:
    - name: FOO
      value: bar
    - name: FOO2
      value: bar2

我还运行另一个带有 kubectl 和 rbac 集的 pod 来执行:

kubectl  exec -i FIRST_POD_NAME -- bash -c "echo 'FOO=updated_bar' >> ~/.bashrc"

第一个 pod 使用(睡眠是为了确保其他 pod 有时间更新环境变量的值):

sleep 60 && source ~/.bashrc && env | grep FOO

作为命令并记录:

FOO=bar

FOO2=bar2

但是当我手动进入 pod(bash)并运行时:

env | grep FOO

我明白了

FOO=updated_bar

我在这里缺少什么以及如何更新这些环境以便 pod 在启动 cmd 中使用它们?

bash kubernetes environment-variables kubectl
1个回答
0
投票

环境变量是在 pod 启动时设置的。它不需要任何睡眠。

有关 kubernetes 环境变量的更多信息:https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/

© www.soinside.com 2019 - 2024. All rights reserved.