版本“ v1”中的机密不能作为机密处理:v1.Secret.Data:ReadMapCB:期望{或n,但找到了“,在#10字节的错误中发现了错误

时间:2019-03-03 02:44:53

标签: kubernetes

我正在尝试为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"}

2 个答案:

答案 0 :(得分:0)

您需要在.dockerconfigjson之后和base64字符串之前包含一个空格-在此之后应该可以使用。

答案 1 :(得分:0)

粘贴base64密码时,它将密码分成几行,并在各行之间添加空格。很难解释,并且.dockerconfigjson之后无需添加空格,因为本教程中提供的yaml是正确的。粘贴base64-encoded-json之后,就会出现此问题。

在Vim中打开机密并运行: :set listchars+=space:␣,然后:set list 这会将所有空格显示为,请检查密码行之间是否没有空格。就我而言,这行得通。

更新: Vim命令并不总是显示空格,因此只需导航到您的密钥的每一行的开头,然后按Backspace键就可以连接它们。