Docker 有一种从远程存储中检索 Docker 注册表密码的机制,而不仅仅是将它们存储在配置文件中 - 这种机制称为Credentials Store。它有一个类似的机制,用于检索名为Credential Helpers的特定注册表的密码。
基本上,它涉及定义一个值,~/.docker/config.json该值被解释为可执行文件的名称。
{
"credsStore": "osxkeychain"
}
密钥的值前面credsStore有一个前缀docker-credential-,如果该可执行文件(例如docker-credential-osxkeychain)存在于路径上,那么它将被执行,并期望将用户名和密码回显到stdoutDocker 将使用该用户名和密码登录到私有注册表。这个想法是可执行文件到达商店并为您检索您的密码,因此您不必在集群中放置大量文件,其中包含您的用户名/密码编码。
我无法让 Kubernetes kubelet 使用这个凭证存储。它似乎只是忽略了它,当 Kubernetes 尝试从私有注册表下载时,我收到“没有基本身份验证凭据”错误。如果我只有一个config.json用户名/密码,那么 kubelet 就可以了。
Kubernetes 是否支持 Docker 凭证存储/凭证助手,如果支持,我如何让它们工作?
作为参考,kubelet 正在运行systemd,凭证存储可执行文件在路径上,并且config.json正在读取文件。