根据 [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}"]
答案 0 :(得分:2)
这是否可以在容器的入口点内使用 bash 扩展(即 ${Var1:-${Var2}}
)?
是的,通过使用
command:
- /bin/bash
- "-c"
- "echo ${Var1:-${Var2}}"
但并非如此——kubernetes 不是 bash 的包装器,它使用 Linux exec
系统调用在容器内启动程序,因此获得 bash 行为的唯一方法是启动 bash
这也是他们为环境插值选择 $()
语法的原因,因此它与 shell 将使用的 ${}
样式不同,尽管这个问题出现得如此之多以至于人们可能希望他们有没有用 $
任何东西以避免进一步混淆人们