2016-11-30 274 views
2

我對Kubernetes YAML字符串操作有疑問。對Kubernetes上的env變量進行字符串操作

我需要根據部署的容器的主機名設置一個env變量,並將端口號添加到此變量中。

env: 
    - name: MY_POD_NAME 
     valueFrom: 
     fieldRef: 
      fieldPath: metadata.name 

如何創建使用MY_POD_NAME,使 另一個環境變量它看起來像這樣的URI:// $ MY_POD_NAME:9099/

這被定義爲環境變量。在Kubernetes YAML文件中是否允許字符串操作?

回答

-1

你不能直接這樣做。

您應該使用您可訪問的Pod ENV變量來運行啓動腳本,以設置您需要的任何附加變量,然後在啓動腳本中啓動您的服務。

+0

早在2016年,這是不可能的。 現在您可以在pod定義中使用env變量。 – MrE

5

你可以做這樣的事情

- 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,但在慶典後的容器評價。如果有機會,首選購買$()

+0

這個作品!謝謝! (k8s 1.7) – damick