我有一个关于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文件中进行字符串操作?
发布于 2017-06-19 07:08:57
你可以做这样的事
- 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进行评估。如果有机会,请选择使用$()的第一个选项
备注:订单在声明中起着重要作用。在上面的示例中,如果稍后在env数组中定义了MY_POD_NAME,则扩展将无法工作。
发布于 2016-12-01 21:42:34
你不能直接这么做。
您应该使用可以访问的Pod ENV变量运行启动脚本,以设置所需的任何附加变量,然后在启动脚本中启动服务。
https://stackoverflow.com/questions/40889743
复制相似问题