Переменные env из configmap недоступны внутри модуля - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь передать переменную env моему модулю из configmap.У меня есть следующие настройки.

У меня есть файл test-config.txt с 2 переменными env

a_sample_env=b
c_sample_env=d

Я создаю карту конфигурации следующим образом:

kubectl create configmap test-config --from-file test-config.txt

Мое определение модуля выглядит следующим образом:

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  containers:
  - name: mycontainer
    image: redis
    envFrom:
      - configMapRef:
          name: test-config

Но мое приложениене получает 2 переменные env в файле test-config.txt.Я вошел в модуль, используя kubectl exec, и получил пустые значения для переменных env.

root@test-pod:/data# echo $c_sample_env

root@test-pod:/data# echo $a_sample_env

Кто-нибудь может указать, почему переменные среды недоступны в модуле?

Ответы [ 2 ]

2 голосов
/ 13 июня 2019

вы должны создать configmap, как показано ниже

apiVersion: v1
kind: ConfigMap
metadata:
  name: special-config
  namespace: default
data:
  a_sample_env: b
  c_sample_env: d

, если вы создаете configmap с помощью следующей команды

kubectl create configmap test-config --from-file test-config.txt

, тогда вы можете смонтировать test-config как том внутри контейнера.Вам нужно будет создать сценарий оболочки / запуска для экспорта всех пар k: v из этого файла в качестве переменной env во время запуска

0 голосов
/ 13 июня 2019

Вы можете просто создать секрет, используя флаг --from-literal вместо --from-file

kubectl create cm test-config --from-literal=a_sample_env=b --from-literal=c_sample_env=d

Создать стручок

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: test-pod
  name: test-pod
spec:
  containers:
  - image: redis
    imagePullPolicy: IfNotPresent
    name: test-pod
    resources: {}
    envFrom:
    - configMapRef:
        name: test-config
  dnsPolicy: ClusterFirst
  restartPolicy: Never
status: {}

Exec к стручку и проверьте envs

root@test-pod:/data# env | grep sample
c_sample_env=d
a_sample_env=b
...