我有一个关于Kubernetes YAML字符串操作的问题.
我需要根据部署的容器的主机名设置一个env变量,并为这个变量附加一个端口号.
env:
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
Run Code Online (Sandbox Code Playgroud)
如何创建另一个使用MY_POD_NAME的env变量并使其看起来像这样:uri:// $ MY_POD_NAME:9099 /
这必须定义为env变量.Kubernetes YAML文件中是否允许字符串操作?
小智 30
你可以做点什么
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: MY_POD_URI
value: "uri://$(MY_POD_NAME):9099/"
Run Code Online (Sandbox Code Playgroud)
我们正在使用它,因为K8s 1.4
$()由k8s本身处理,不能在任何地方使用,但适用于env变量.
如果您的容器包含bash,您还可以利用bash变量扩展
"command": ["/bin/bash"],
"args": [ "-c",
"MY_POD_URI_BASH=uri://${MY_POD_NAME}:9099/ originalEntryPoint.sh
],
Run Code Online (Sandbox Code Playgroud)
k8s没有触及$ {},但后来在bash的容器中进行了评估.如果有机会,请选择$()的第一个选项
你不能直接这样做。
您应该使用您可以访问的 Pod ENV 变量来运行启动脚本,以设置您需要的任何其他变量,然后在启动脚本中启动您的服务。
归档时间: |
|
查看次数: |
4823 次 |
最近记录: |