Я создаю веб-приложение с Yesod и в настоящее время передаю секреты, такие как ключи API через переменные среды (согласно The Twelve-Factor App), чтобы избежать сохранения этих значений в файлах конфигурации, управляемых версиями. Например, я запускаю свое приложение в режиме dev следующим образом:
SOME_API_KEY=value yesod devel
У меня есть значение в моем файле config/settings.yml
, который определяется в терминах этой переменной среды с пустым значением следующим образом:
meetup-api-key: "_env:SOME_API_KEY:"
Для развертывания с использованием Keter я создаю пакет Keter с помощью команды yesod keter
и отбрасывая полученный файл в каталог incoming
Keter. Поскольку я использую конфигурацию переменных окружения, мое приложение .keter
не содержит значения SOME_API_KEY
(которое преднамеренно).
Как передать SOME_API_KEY
в экземпляр моего приложения, работающего внутри кетера?
Я хотел бы избежать выпечки значения в моем keter-config.yaml
по крайней мере по трем причинам:
- Он менее безопасен, чем подход к переменной среды.
- Будучи встроенным непосредственно в файл конфигурации для самого Keter, в отличие от конфигурации приложения, секрет не может быть изменен без остановки и перезапуска всего процесса Keter.
- Переменные среды передаются в каждое приложение, управляемое Keter.
Я надеюсь, что для этого сценария есть несколько "лучших практик".