Kubernetes:在容器入口点使用 bash 变量扩展

时间:2021-06-07 15:33:09

标签: bash kubernetes environment-variables

根据 [documentation][1] Kubernetes 变量使用容器中先前定义的环境变量使用语法 $(VAR_NAME) 进行扩展。该变量可用于容器的入口点。

例如:

env:
- name: MESSAGE
  value: "hello world"
command: ["/bin/echo"]
args: ["$(MESSAGE)"]

这是否可以在容器的容器入口点内使用 bash 扩展 aka ${Var1:-${Var2}} 来获取 kubernetes 环境变量,例如

env:
- name: Var1
  value: "hello world"
- name: Var2
  value: "no hello"
command: ['bash', '-c', "echo ${Var1:-$Var2}"]

1 个答案:

答案 0 :(得分:2)

<块引用>

这是否可以在容器的入口点内使用 bash 扩展(即 ${Var1:-${Var2}})?

是的,通过使用

command: 
- /bin/bash
- "-c"
- "echo ${Var1:-${Var2}}"

但并非如此——kubernetes 不是 bash 的包装器,它使用 Linux exec 系统调用在容器内启动程序,因此获得 bash 行为的唯一方法是启动 bash

这也是他们为环境插值选择 $() 语法的原因,因此它与 shell 将使用的 ${} 样式不同,尽管这个问题出现得如此之多以至于人们可能希望他们有没有用 $ 任何东西以避免进一步混淆人们

相关问题