【发布时间】:2016-01-12 18:20:03
【问题描述】:
我正在使用 Yesod 构建一个 Web 应用程序,并且目前正在通过环境变量(根据 The Twelve-Factor App)传递 API 密钥等秘密,以避免将这些值存储在版本控制的配置文件中。例如,我在开发模式下运行我的应用程序如下:
SOME_API_KEY=value yesod devel
我的config/settings.yml 文件中有一个值,该值是根据此环境变量定义的,其值为空,如下所示:
meetup-api-key: "_env:SOME_API_KEY:"
为了使用 Keter 进行部署,我正在使用 yesod keter 命令构建 Keter 包,并将生成的文件放入 Keter 的incoming 目录。由于我使用环境变量配置,我的应用程序的 .keter 文件不包含 SOME_API_KEY 值(这是有意的)。
我应该如何将SOME_API_KEY 传递到我在 Keter 中运行的应用实例中?
至少出于以下三个原因,我希望避免将该值放入我的keter-config.yaml:
- 它不如环境变量方法安全。
- 直接嵌入到 Keter 本身的配置文件中,而不是应用程序的配置,如果不停止并重新启动整个 Keter 进程,就无法更改密钥。
- 环境变量被传递到由 Keter 管理的每个应用程序中。
我希望有一些针对这种情况的“最佳实践”。
【问题讨论】:
标签: haskell deployment web-deployment yesod keter