Ввести секретное значение в configmap во время развертывания без использования переменных среды

У меня есть такая конфигурационная карта

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: develop
  name: test-config
data:
  app.conf: |
    connection conn1
    address 127.0.0.1:8080
    user cluster1
    password: <HERE COPY PASS FROM SECRET>

Раздел app.conf монтируется как файл конфигурации внутри контейнера, используя

spec:
  replicas: 1
  ...
    spec:
      containers:
        - name: container-name
          ...
          volumeMounts:
            - name: test-config-vol
              mountPath: /etc/app/app.conf
              subPath: app.conf
      volumes:
        - name: test-config-vol
          configMap:
            name: test-config

приложение, читающее этот файл, НЕ может читать переменные среды, и я не могу изменить это поведение, это стороннее приложение.

Интересно, как я могу ввести пароль из секрета в поле пароля во время развертывания модуля?


person jmhostalet    schedule 03.04.2019    source источник
comment
Почему бы не узнать пароль от секрета? зачем передавать его в конфигурационную карту, которая не предназначена для хранения паролей?   -  person suren    schedule 17.04.2019


Ответы (1)


Вы не можете, вы можете установить секрет Kuberentes с паролем - см. документацию здесь. Таким образом, у вас будет 2 файла - один из карты конфигурации и один из секрета.

Если ваше приложение не поддерживает несколько файлов конфигурации, вам придется хранить весь файл конфигурации в секрете, а не на карте конфигурации.

Также обратите внимание, что секреты Kubernetes не могут храниться в системе управления версиями, поскольку секретные данные кодируются с использованием base64 (см. здесь для получения более подробной информации). Есть несколько решений этой проблемы, посмотрите мой сообщение

person Omer Levi Hevroni    schedule 03.04.2019