我对Kubernetes YAML字符串操作有疑问。
我需要根据部署的容器的主机名设置一个env变量,并为这个变量附加一个端口号。
env:
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
如何创建另一个使用MY_POD_NAME并生成的env变量 它看起来像这个uri:// $ MY_POD_NAME:9099 /
这必须定义为env变量。 Kubernetes YAML文件中是否允许字符串操作?
答案 0 :(得分:17)
您可以执行类似
的操作- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: MY_POD_URI
value: "uri://$(MY_POD_NAME):9099/"
我们正在使用它,因为K8s 1.4
$()由k8s本身处理,无处不在,但适用于env变量。
如果您的容器包含bash,您还可以利用bash变量扩展
"command": ["/bin/bash"],
"args": [ "-c",
"MY_POD_URI_BASH=uri://${MY_POD_NAME}:9099/ originalEntryPoint.sh
],
k8s没有触及$ {},但后来在bash的容器中进行了评估。如果您有机会,请选择$()
的第一个选项答案 1 :(得分:-1)
你不能直接这样做。
您应该使用可访问的Pod ENV变量运行启动脚本,以设置您需要的任何其他变量,然后在启动脚本中启动您的服务。