Kubernetes:在容器入口点使用 bash 变量扩展
Kubernetes: using bash variable expansion in container entrypoint
根据 [文档][1],Kubernetes 变量使用语法 $(VAR_NAME) 在容器中使用先前定义的环境变量进行扩展。该变量可以在容器的入口点使用。
例如:
env:
- name: MESSAGE
value: "hello world"
command: ["/bin/echo"]
args: ["$(MESSAGE)"]
是否可以在容器的入口点内使用 bash 扩展又名 ${Var1:-${Var2}}
来获取 kubernetes 环境变量,例如
env:
- name: Var1
value: "hello world"
- name: Var2
value: "no hello"
command: ['bash', '-c', "echo ${Var1:-$Var2}"]
Is this possible though to use bash expansion aka ${Var1:-${Var2}}
inside the container's entrypoint ?
是的,通过使用
command:
- /bin/bash
- "-c"
- "echo ${Var1:-${Var2}}"
但并非如此——kubernetes 不是 bash 的包装器,它使用 Linux exec
系统调用来启动容器内的程序,因此唯一的方法是get bash 行为是启动 bash
这也是他们为环境插值选择 $()
语法的原因,因此它与 shell 使用的 ${}
风格不同,尽管这个问题出现得太多了有人可能希望他们没有带 $
任何东西以避免进一步混淆人们
根据 [文档][1],Kubernetes 变量使用语法 $(VAR_NAME) 在容器中使用先前定义的环境变量进行扩展。该变量可以在容器的入口点使用。
例如:
env:
- name: MESSAGE
value: "hello world"
command: ["/bin/echo"]
args: ["$(MESSAGE)"]
是否可以在容器的入口点内使用 bash 扩展又名 ${Var1:-${Var2}}
来获取 kubernetes 环境变量,例如
env:
- name: Var1
value: "hello world"
- name: Var2
value: "no hello"
command: ['bash', '-c', "echo ${Var1:-$Var2}"]
Is this possible though to use bash expansion aka
${Var1:-${Var2}}
inside the container's entrypoint ?
是的,通过使用
command:
- /bin/bash
- "-c"
- "echo ${Var1:-${Var2}}"
但并非如此——kubernetes 不是 bash 的包装器,它使用 Linux exec
系统调用来启动容器内的程序,因此唯一的方法是get bash 行为是启动 bash
这也是他们为环境插值选择 $()
语法的原因,因此它与 shell 使用的 ${}
风格不同,尽管这个问题出现得太多了有人可能希望他们没有带 $
任何东西以避免进一步混淆人们