对Kubernetes上的env变量的字符串操作

时间:2016-11-30 13:33:22

标签: kubernetes

我对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文件中是否允许字符串操作?

2 个答案:

答案 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变量运行启动脚本,以设置您需要的任何其他变量,然后在启动脚本中启动您的服务。