В настоящее время я работаю над проектом, в котором мне нужно установить большее количество (примерно 20) переменных среды.
Теперь эта переменная должна использоваться несколькими контейнерами внутри модуля. Я использую Configmap для определения значений. Теперь моя проблема вот в чем. Я должен установить каждую переменную среды отдельно, а также сделать это для каждого контейнера, который просто довольно уродлив и содержит много ненужного кода. В основном это выглядит примерно так
kind: Pod
apiVersion: v1
...
containers:
- name: container1
image: my-image:latest
env:
- name: VAR1
valueFrom:
configMapKeyRef:
name: my-config
key: my-var1
...
- name: container2
image: some-other-image:stable
env:
- name: VAR1
valueFrom:
configMapKeyRef:
name: my-config
key: my-var1
...
Я хочу автоматически добавлять все значения из моей configMap as и переменной среды в контейнер. Мой первый подход - смонтировать configMap как том, а затем запустить сценарий оболочки при запуске. Подобно этому
configMap
kind: ConfigMap
apiVersion: v1
...
data:
envCat.sh: |
#!/bin/sh
export $(grep -v '^#' /etc/pod-config/envVars | xargs)
cat
envVars
MY_VAR1="HELLO WORLD!!"
MY_VAR2="I AM HERE"
Пакет
kind: Pod
apiVersion: v1
...
spec:
volumes:
- name: config-volume:
configMap:
name: my-config
containers:
- name: container1
image: my-image:latest
volumeMounts:
- name: config-volume
mountPath: /etc/pod-config
command:
- /etc/pod-config/envCat.sh
К сожалению, команда экспорта работает нормально, когда я запускаю ее вручную в контейнере, но запуск сценария оболочки или запуск / bin / sh /etc/pod-config/envCat.sh не работает.
Есть предложения по достижению того, что я хочу делать?