首页 文章

Kubernetes kubelet是否支持私人注册机构的Docker Credential商店?

提问于
浏览
1

Docker有一种机制,用于从远程存储中检索Docker注册表密码,而不是仅将它们存储在配置文件中 - 这种机制称为Credentials Store . 它具有类似的机制,用于检索名为Credential Helpers的特定注册表的密码 .

基本上,它涉及在 ~/.docker/config.json 中定义一个值,该值被解释为可执行文件的名称 .

{
    "credsStore": "osxkeychain"
}

所述 credsStore 密钥的值具有前缀 docker-credential- 预先计划到它,并且如果该可执行(例如 docker-credential-osxkeychain )的路径上存在,那么它会被执行,预计呼应的用户名和密码来 stdout ,这多克尔将用于登录进入私人登记处 . 我们的想法是,可执行文件可以到达商店并为您检索密码,因此您不必在群集中放置大量文件,并在其中编码用户名/密码 .

我无法获得Kubernetes kubelet来使用这个凭证存储 . 它似乎只是忽略它,当Kubernetes尝试从私有注册表下载时,我得到"no basic auth credentials"错误 . 如果我只有一个带有用户名/密码的 config.json ,那么kubelet就可以了 .

Kubernetes是否支持Docker凭证存储/凭证帮助,如果是,我如何让它们工作?

作为参考,kubelet正在运行 systemd ,凭证存储可执行文件位于路径上并且正在读取 config.json 文件 .

1 回答

  • 0

    是的,Kubernetes具有相同的机制,称为secrets,但具有扩展功能,并且包含specific secret type called docker-registry . 您可以使用docker注册表的凭据创建您的特定秘密:

    $ kubectl create secret docker-registry myregistrykey \
     --docker-server=DOCKER_REGISTRY_SERVER \
     --docker-username=DOCKER_USER \
     --docker-password=DOCKER_PASSWORD \
     --docker-email=DOCKER_EMAIL
    
    secret "myregistrykey" created.
    

    并使用它:

    apiVersion: v1
    kind: Pod
    metadata:
      name: foo
      namespace: awesomeapps
    spec:
      containers:
        - name: foo
          image: janedoe/awesomeapp:v1
      imagePullSecrets:
        - name: myregistrykey
    

相关问题