代码之家  ›  专栏  ›  技术社区  ›  user51

版本“v1”中的机密不能作为机密处理:v1.secret.data:readmapcb:expect{or n,but found“,在

  •  0
  • user51  · 技术社区  · 7 年前

    我正在尝试为Kubernetes群集设置私有Docker映像注册表。我在跟踪这个 link

     $ cat ~/.docker/config.json | base64
      ewoJImF1dGhzIjogewoJCSJsb2NhbGhvc3Q6NTAwMDAiOiB7CgkJCSJhdXRoIjogImJYbDFjMlZ5
      T21oMGNHRnpjM2RrIgoJCX0KCX0KfQ== 
    

    我有文件 image-registry-secrets.yaml 包含以下内容-

    apiVersion: v1
    kind: Secret
    metadata:
     name: registrypullsecret
    data:
     .dockerconfigjson:ewoJImF1dGhzIjogewoJCSJsb2NhbGhvc3Q6NTAwMDAiOiB7CgkJCSJhdXRoIjogImJYbDFjMlZ5T21oMGNHRnpjM2RrIgoJCX0KCX0KfQ==
    type: kubernetes.io/dockerconfigjson
    

    当我运行下面的命令时

    $kubectl create -f image-registry-secrets.yaml --validate=false && kubectl get secrets
    Error from server (BadRequest): error when creating "image-registry-secrets.yml": Secret in version "v1" cannot be handled as a Secret: v1.Secret.Data: ReadMapCB: expect { or n, but found ", error found in #10 byte of ...|","data":".dockercon|..., bigger context ...|{"apiVersion":"v1","data":".dockerconfigjson:ewoJImF1dGhzIjogewoJCSJsb2NhbGhv|...
    

    有什么问题 kubectl create -f image-registry-secrets.yaml --validate=false 我怎样才能解决这个错误呢?

    Kubernetes版本是-

    $kubectl version
    Client Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.0", GitCommit:"ddf47ac13c1a9483ea035a79cd7c10005ff21a6d", GitTreeState:"clean", BuildDate:"2018-12-03T21:04:45Z", GoVersion:"go1.11.2", Compiler:"gc", Platform:"linux/amd64"}
    Server Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.4", GitCommit:"c27b913fddd1a6c480c229191a087698aa92f0b1", GitTreeState:"clean", BuildDate:"2019-02-28T13:30:26Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"}
    
    0 回复  |  直到 7 年前
        1
  •  0
  •   jleavers    7 年前

    你需要在后面加一个空格 .dockerconfigjson ,在base64字符串之前-之后应该可以工作。

        2
  •  0
  •   Black_Bacardi Vit    7 年前

    粘贴base64密码时,它会将密码拆分为几行,并在两行之间添加空格。很难解释,后面不需要加空格 .dockerconfigjson ,因为教程中提供的yaml是正确的。问题发生在粘贴 base64-encoded-json .

    打开vim中的秘密并运行: :set listchars+=space:␣ 然后 :set list 这将显示所有空间为 ␣ ,检查密码行之间是否没有密码。这对我来说很有效。

    更新: vim命令并不总是显示空格,所以只需导航到您的每行密钥的请求,然后按backspace键使它们连接起来。

    推荐文章