无法通过docker hub上的私有仓库对kubernetes秘密进行身份验证,因此我无法部署

时间:2019-05-22 15:06:08

标签: docker kubernetes

我已经尝试过https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ yaml文件中的base 64编码解决方案(这最终是我需要做的)不会进行身份验证。 (显然,这是一个普遍的问题,如果有人拥有一个可以正常工作的yaml文件,或者我希望看到它,或者可以通过私有存储库进行安全部署的方法,那么我们就不会陷入xy问题中)

所以我尝试了以下操作:

kubectl create secret generic registrykey --from-file=.dockerconfigjson=/home/dbosh/.docker/config.json --type=kubernetes.io/dockerconfigjson

带有部署文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my_deployment
spec:
  selector:
    matchLabels:
      app: my_deployment
      tier: backend
      track: stable
  replicas: 7
  template:
    metadata:
      labels:
        app: my_deployment
        tier: backend
        track: stable
    spec:
      containers:
        - name: my_deployment
          image: "my_private_repo:image_name"
          ports:
            - name: http
              containerPort: 8082
      imagePullSecrets:
      - name: registrykey

但是,无论何时我尝试进行部署,我都会不断得到“对于my_private_repo的拉式访问被拒绝,存储库不存在,或者可能需要'docker login'。

现在要创建docker登录文件,我确实已经登录,并在重新生成机密然后重新部署之前立即进行了登录测试,

请任何帮助表示感谢。

更新(感谢有用的评论):

登录后,我的config.json看起来像这样:

cat .docker/config.json 
{
        "auths": {
                "https://index.docker.io/v1/": {}
        },
        "HttpHeaders": {
                "User-Agent": "Docker-Client/18.09.2 (linux)"
        },
        "credsStore": "secretservice"

这似乎不包含令牌。我是通过运行docker login并提供凭据来生成的。有任何想法吗?

1 个答案:

答案 0 :(得分:0)

config.json文件中没有用于您的私人仓库的令牌,仅用于docker hub。

因此,您需要在私有存储库中重新进行身份验证:

docker logout <my_private_repo> && docker login <my_private_repo> -u <user> -p <pass> && cat ~/.docker/config.json

应该是这个:

"auths": {
        "my_private_repo": {
            "auth": "c3VraG92ZXJzsdfdsQXNocmV2b2h1czg4"
        }