K8s & Docker - GCP 上敏感参数的理想图像设计

K8s & Docker - GCP 上敏感参数的理想图像设计

我正在开发一个将 Apache 与 PHP7 捆绑在一起的 Docker 映像,并使用邮件传输协议用于 Sendgrid 集成。我喜欢 msmtp 的原因是它没有单独的运行进程,因此它可以很好地捆绑,而不需要 SMTP 容器。

也就是说,msmtp 的配置如下所示

account sendgrid
host smtp.sendgrid.net
port 587
auth on
user apikey
password YOUR_API_KEY
from [email protected]

理想情况下,文件将包含所有值,YOUR_API_KEY[email protected]在运行时以某种方式传递给容器。

现在,我正在考虑如何编写我的 Dockerfile 的选项...鉴于我打算在 Google Cloud Platform 上的 Kubenetes 上的 pod 内运行容器,这可能会影响这个决定。

我发现了诸如构建时间参数之类的事情(ARG), 环境变量 (ENV) 等,在这篇很棒的文章

根据 docker docks 的警告,build args 似乎不是一个好的选择

警告:不建议使用构建时变量来传递诸如 github 密钥、用户凭据等机密信息。使用 docker history 命令,任何镜像用户都可以看到构建时变量的值。

考虑到所有这些,创建允许在运行时传递凭据的映像的最佳方法是什么?我还需要在容器启动时找出一种方法将这些参数传递到文件中……或者我应该忘记所有这些,然后COPY为每个客户端设置完整的 msmtp 配置?听起来有点糟糕!

相关内容