Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Deployment 替代容器等级库中定义的环境值_Deployment_Kubernetes_Environment Variables_Containers_Configmap - Fatal编程技术网

Deployment 替代容器等级库中定义的环境值

Deployment 替代容器等级库中定义的环境值,deployment,kubernetes,environment-variables,containers,configmap,Deployment,Kubernetes,Environment Variables,Containers,Configmap,我有一个configmap,其中我在数据部分定义了以下键值映射: apiVersion: v1 kind: ConfigMap metadata: namespace: test name: test-config data: TEST: "CONFIGMAP_VALUE" 然后在容器的定义中(在部署/状态集清单中),我有以下内容: env: - name: TEST value: "ANOTHER_VALUE"

我有一个configmap,其中我在
数据
部分定义了以下键值映射:

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: test
  name: test-config
data:
  TEST: "CONFIGMAP_VALUE"
然后在容器的定义中(在部署/状态集清单中),我有以下内容:

        env:
        - name: TEST
          value: "ANOTHER_VALUE"
        envFrom:
        - configMapRef:
            name: test-config
执行此操作时,我希望configmap中的值(TEST=“configmap\u value”)将覆盖容器规范中指定的(默认)值(TEST=“other\u value”),但事实并非如此(TEST总是从容器规范中获取值)。我找不到任何关于此的相关文档-是否可以实现这样的环境变量值覆盖?

来自:

envFrom
:用于在容器中填充环境变量的源列表。源中定义的键必须是C_标识符。当容器启动时,所有无效密钥都将作为事件报告。当一个键存在于多个源中时,与最后一个源关联的值将优先。具有重复键的环境定义的值将优先。无法更新

因此,上面明确指出,env将优先于envFrom

当一个键存在于多个源中时,与最后一个源关联的值将优先

因此,有关覆盖,请参见以下内容:

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: default
  name: test-config
data:
  TEST: "CONFIGMAP_VALUE"
---
apiVersion: v1
kind: Pod
metadata:
  name: busy
  namespace: default
spec:
  containers:
  - name: busybox
    image: busybox
    env:
    - name: TEST
      value: "DEFAULT_VAULT"
    - name: TEST
      valueFrom:
        configMapKeyRef:
          name: test-config
          key: TEST
    command:
    - "sh"
    - "-c"
    - >
      while true; do
        echo "$(TEST)";
        sleep 3600;
      done
检查:

kubectl logs busy -n default
CONFIGMAP_VALUE

如果我在Docker映像中有一个entrypoint.sh,它也有一个由export TEST=123456生成的相同环境变量,该怎么办?@focuszheng则优先考虑,因为它是最后运行的。