Использование чувствительных переменных среды в Kubernetes configMaps - PullRequest
1 голос
/ 18 февраля 2020

Я знаю, что вы можете использовать свойства ConfigMap в качестве переменных среды в модуле pod c, но можете ли вы использовать переменные среды, объявленные в модулях ped c внутри карты конфигурации?

Например:

У меня есть секретный пароль, к которому я sh смогу получить доступ в своем файле configmap application.properties. Секрет выглядит так:

apiVersion: v1
data:
  pw: THV3OE9vcXVpYTll==
kind: Secret
metadata:
  name: foo
  namespace: foo-bar
type: Opaque

, поэтому внутри пакета c я называю секрет как env var. ConfigMap будет смонтирован как том изнутри spe c:

    env:
      - name: PASSWORD
        valueFrom:
          secretKeyRef:
            name: foo
            key: pw
...

, и внутри моей configMap я могу ссылаться на секретное значение следующим образом:

apiVersion: v1
kind: ConfigMap
metadata:
  name: application.properties
  namespace: foo-bar
data:
  application.properties: /
    secret.password=$(PASSWORD)

Все, что я Мы обнаружили, что в сети просто используются значения configMap в виде переменных env и не упоминается использование переменных env в значениях configMap.

1 Ответ

1 голос
/ 18 февраля 2020

В настоящее время это не функция Kubernetes.

Существует закрытая проблема, запрашивающая эту функцию, и это своего рода спорная тема c, поскольку обсуждение продолжается через много месяцев после закрытия: Ссылочные секреты из ConfigMap # 79224

Ссылка на заключительный комментарий:

Рекомендуется не использовать секретные значения в envvars, только как смонтированные файлы. если вы хотите сохранить все значения конфигурации в одном объекте, вы можете поместить все значения в секретный объект и ссылаться на них таким образом. Ссылка на секреты с помощью configmaps не является целью ... она сбивает с толку то, что монтирование или внедрение карты конфигурации приводят к установлению конфиденциальных значений.

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


«Хорошо, но это настоящая жизнь, мне нужно сделать эту работу»

Тогда я рекомендую вам этот обходной путь:

Импорт данных на карту конфигурации из секрета Kubernetes

Производит замену с помощью оболочки в точке входа контейнера.

...