在 Nomad 中安全分发 Docker 凭据

Securely distributing Docker credentials in Nomad

我正在使用 Hashicorp Nomad 部署存储在注册表中的 Docker 图像,需要凭据才能访问。根据文档,我可以使用 auth 对象来指定用户名和密码,但是凭据必须在我不想要的清单文件中。例如,在 Kubernetes 注册表中,凭据可以存储在秘密中并与 imagePullSecrets.

一起使用

如何使用注册表凭据而不必将它们存储在清单本身中(即 [=17= 中的环境变量、客户端上的环境变量、Vault 等秘密存储)?

如果我理解正确,您应该在每个能够 运行 Docker 容器的 Nomad 代理上单独执行 docker login,或者复制 config.json 和授权令牌每台机器。


不过,要回答书面问题,假设您使用的工具知道如何处理变量,env-vars 会起作用。

Nomad 提供 native Vault integration。秘密将放置在应用程序的 /local 下,并且可以在容器的入口点脚本运行期间获取,以便环境变量可用。

或者,您可以使用 Nomad 规范的 templates 功能将 consul-template 字符串写入您的 Docker 守护程序的 config.json