2016-11-30 4 views
2

У меня есть вопрос о строковых операциях Kubernetes YAML.Строковая операция над переменными env на Kubernetes

Мне нужно установить переменную env на основе имени хоста развернутого контейнера и добавить номер порта к этой переменной.

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

Как создать новую переменную ENV, которая использует MY_POD_NAME и делает это выглядит следующим образом URI: // $ MY_POD_NAME: 9099/

Это должно быть определено в качестве переменной окр , Имеются ли строковые операции в файлах Kubernetes YAML?

ответ

-1

Вы не можете сделать это напрямую.

Вы должны запустить сценарий запуска, используя переменные Pod ENV, которые у вас есть, чтобы установить любую дополнительную переменную, которая вам нужна, и запустить службу после этого в сценарии запуска.

+0

еще в 2016 году это было невозможно. теперь вы можете использовать переменные env в определениях pod. – 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, не работает везде, но работает для окр переменных.

Если контейнер содержит Баш, вы также можете использовать переменную Баш 'открыла

"command": ["/bin/bash"], 
"args": [ "-c", 
     "MY_POD_URI_BASH=uri://${MY_POD_NAME}:9099/ originalEntryPoint.sh 
     ], 

$ {} не прикасались K8S, но оцененные позже в контейнере на баш. Если у вас есть шанс, предпочтете первый вариант с $()

+0

это работает! Спасибо! (k8s 1,7) – damick

Смежные вопросы