Шифрование секретов в конфигурационных картах

#kubernetes

#kubernetes

Вопрос:

Есть ли какой-либо способ зашифровать секреты в конфигурационных картах для развертывания kubernetes? Я использую flux, поэтому мне нужно, чтобы все мои файлы развертывания хранились в git, я шифрую все манифесты секретов с помощью kubeseal, но я не нашел хорошего решения для защиты секретов в конфигурационных картах (обычно конфигурационные файлы содержат такие вещи, как имя пользователя / пароль).

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

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

2. @Blokje5 я знаю, но многие хорошо известные приложения все еще работают таким образом (считывают учетные данные из файлов конфигурации), например, это то, о чем я говорю в моем конкретном случае использования github.com/wso2/kubernetes-apim/blob/v3.2.0.2/simple /… и это всего лишь один пример из многих.

3. Да, верно, тогда часто надеются, что файлы конфигурации поддерживают, например, интерполяцию переменных среды. Вы всегда можете использовать контейнер инициализации, который использует, например sed , для замены значений в файле переменными среды.

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

Ответ №1:

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

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

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

2. Возможно, вы все еще сможете использовать это с помощью переменных yaml — anil.io/blog/symfony/yaml/using-variables-in-yaml-files , вставьте env var в yaml, а затем вставьте его как часть конфигурации.

3. На самом деле не уверен, как это поможет на самом деле, поскольку это всего лишь функция прямой ссылки, в основном просто для того, чтобы избежать повторения блоков в одном и том же файле yaml.

Ответ №2:

Внимание: ConfigMap не обеспечивает секретность или шифрование. Если данные, которые вы хотите сохранить, являются конфиденциальными, используйте Secret, а не ConfigMap, или используйте дополнительные (сторонние) инструменты для сохранения конфиденциальности ваших данных.

Откуда: https://kubernetes.io/docs/concepts/configuration/configmap /