Рейтинг:0

postfix container kubernetes — настройка зашифрованного секрета, configmap для успешного подключения к БД

флаг in

Я пытаюсь запустить постфикс как контейнер в k8s. Контейнер запускается (включая svcs), но мои карты конфигурации и секреты не хотят работать хорошо. Я пробовал следующее:

  1. настроить карту конфигурации с пользователем и паролем в открытом тексте РЕЗУЛЬТАТ: РАБОТАЕТ postmap -q someuser@localhost mysql:./virtual_mailbox.cf
  2. Зашифруйте пароль и имя пользователя с помощью base64 (согласно инструкциям k8s), прочитайте эти зашифрованные значения в переменные среды контейнера (envFrom: - secretRef: имя: postfix-db-access), попробуйте подключиться к базе данных с помощью почтовая карта Для этого сценария карта конфигурации выглядит следующим образом:
  1 APIВерсия: v1
  2 вид: ConfigMap
  3 метаданные:
  4 название: postfix-db-configs
  5 пространство имен: почтовый сервер
  6 данные:
  7 виртуальный_почтовый ящик.cf: |
  8 пользователь=$(эхо ${POSTFIX_USER} | base64 -d)
  9 пароль=$(эхо ${POSTFIX_PASS} | base64 -d)
 10 хостов=database.default.svc.cluster.local
 11 имя_базы=постфикс
 12 запрос=ВЫБЕРИТЕ почту ОТ generic_map, ГДЕ local_mail='%s' AND active=1;

РЕЗУЛЬТАТ: НЕУДАЧА. Пользователь '$(echo ${POSTFIX_USER} | base64 -d)' не имеет доступа к базе данных.

  1. Сохраните имя пользователя и пароль для пользователя postfix в виде открытого текста в секрете следующим образом:
  1 APIВерсия: v1
  2 вид: секрет
  3 метаданные:
  4 имя: postfix-db-access
  5 пространство имен: почтовый сервер
  6 тип: непрозрачный
  7 строкДанные:
  8 POSTFIX_USER: PostfixUser
  9 POSTFIX_PASS: какой-то пароль

и соответствующая строка в карте конфигурации

    пользователь = $ (эхо $ {POSTFIX_USER})

РЕЗУЛЬТАТ: НЕУДАЧА с пользователем «echo ${POSTFIX_USER}) не имеет доступа к базе данных». Запрос не обрабатывает переменную среды, которая установлена ​​правильно.

Подключение к базе данных и запросы отлично работают с командой mysql -h database.default.svc.cluster.local -u postfix -p -e 'использовать постфикс; ВЫБЕРИТЕ почту ИЗ generic_map, ГДЕ local_mail='someuser@localhost' AND active=1;. Я получаю все результаты, которые мне нужны и ожидаются.

Вопрос в следующем: как мне настроить секрет и карту конфигурации, чтобы этот процесс работал и устанавливал соединение с базой данных, как предполагалось?

реальная тень

флаг in
Кажется, вы рассматриваете `$(echo ${POSTFIX_USER} | base64 -d)` так, как будто есть какой-то сценарий оболочки, который запускает ConfigMaps, но это на 100% неверно. Если вам нужно, чтобы это было предварительно обработано перед использованием, вам понадобятся `initContainer:` и `emptyDir:{}` или другой «общий» том между initContainer и вашим основным контейнером.
realShadow avatar
флаг in
@mdaniel спасибо. Я сделаю контейнер инициализации для установки этих файлов. Теперь это имеет смысл.
Рейтинг:1
флаг tr

Это вики-ответ сообщества, опубликованный для лучшей видимости. Не стесняйтесь расширять его.

Возможное решение от @mdaniel:

Чтобы использовать предварительно обработанные значения для POSTFIX_USER, POSTFIX_PASS и т. д., вы можете использовать начальный контейнер с томом, который совместно используется контейнером инициализации и контейнером приложения.

Более подробная информация доступна на веб-сайт Kubernetes

Ответить или комментировать

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