Добавление ключа к CATALINA_OPTS с использованием kubernetes - PullRequest
0 голосов
/ 20 марта 2020

У меня есть некоторые свойства CATALINA_OPTS (относительно порта базы данных, пользователя и т. Д.), Настроенные в файле ConfigMap. Затем этот файл добавляется в изображение docker через переменную среды Pod. Одним из свойств CATALINA_OPTS является пароль базы данных, и его необходимо переместить из ConfigMap в файл Secrets. Я могу открыть ключ из файла Secrets через переменную окружения:

apiVersion: v1
kind: Pod
  ...
  containers:
  - name: myContainer
    image: myImage
    env:
    - name: CATALINA_OPTS
      valueFrom:
       configMapKeyRef:
         name: catalina_opts
         key: CATALINA_OPTS
    - name: MY_ENV_PASSWORD
      valueFrom:
        secretKeyRef:
          name: db-pass
          key: my-pass

Дело в том, что мне нужно добавить этот пароль в CATALINA_OPTS. Я пытался сделать это в Dockerfile:

  RUN export CATALINA_OPTS="$CATALINA_OPTS -Dmy.password=$MY_ENV_PASSWORD"

Однако MY_ENV_PASSWORD не добавляется в существующий CATALINA_OPTS. Когда я перечисляю свои переменные окружения (я проверяю журнал в Jenkins), я не вижу пароль. Я что-то здесь не так делаю? Есть ли «обычный» способ сделать это?

1 Ответ

1 голос
/ 20 марта 2020

Dockerfile RUN шаги выполняются как часть шага построения образа, а НЕ во время его выполнения. Следовательно, вы не можете полагаться на RUN export (шаг сборки) для установки переменных среды K8S для вашего контейнера (шаг запуска).

Удалите RUN export из вашего Dockerfile и убедитесь, что вы устанавливаете CATALINA_OPTS в вашем catalina_opts ConfigMap как это:

apiVersion: v1
kind: ConfigMap
metadata:
  name: catalina_opts
data:
  SOME_ENV_VAR: INFO
  CATALINA_OPTS: opts... -Dmy.password=$MY_ENV_PASSWORD
...