【问题标题】:Kubernetes init container issue with environment variables环境变量的 Kubernetes 初始化容器问题
【发布时间】:2020-10-14 15:05:18
【问题描述】:

我正在尝试将初始化容器添加到部署中,但由于某种原因我无法使环境变量工作。

只是为了说明,这就是我正在尝试的:

initContainers:
    - name: init-db
      image: mysql:5.7
      env:
        - name: TEST
          value: nada
      args: ["echo", "${TEST}"]

但无论我做什么,环境变量都不起作用,echo 总是返回 ${TEST} 而不是 nada

有什么提示吗?

【问题讨论】:

  • 变量替换由 shell 完成。在 shell 中运行命令。

标签: kubernetes kubernetes-helm


【解决方案1】:

就像提到的 cmets 和其他答案一样,您需要正确使用 shell 进行 ENV 替换。因此,替换该行

args: ["echo", "${TEST}"] 在你的代码中

command: ['sh', '-c', 'echo ${TEST}']

Reference

【讨论】:

    【解决方案2】:

    您需要使用 shell 才能正确执行 ENV var 替换。例如:

    initContainers:
        - name: init-db
          image: mysql:5.7
          env:
            - name: TEST
              value: nada
          command:
          - /bin/sh
          - -c
          - echo "${TEST}"
    

    【讨论】:

      【解决方案3】:

      根据 Kubernetes 官方文档,需要在 command 或 args 字段中使用 括号 $(TEST) 来扩展变量。我使用括号时出错,因为 env vars 没有在 args 上正确扩展。工作示例:

      initContainers:
        - name: my-container
          image: 'my-image'
          envFrom:
            - configMapRef:
                name: my-config
          args:
            - '-path=/$(MY_ENV_VAR)'
      

      Kubernetes Documentation

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-18
        • 2019-07-06
        • 1970-01-01
        • 1970-01-01
        • 2021-10-21
        • 2020-07-22
        • 2018-06-13
        • 2021-01-30
        相关资源
        最近更新 更多