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

#kubernetes #configmap #kubernetes-secrets

#kubernetes #configmap #kubernetes-секреты

Вопрос:

У меня есть 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
  

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

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

Комментарии:

1. Почему бы не получить пароль от секрета? зачем передавать его в конфигурационную карту, которая не предназначена для хранения паролей?

Ответ №1:

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

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

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