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

3/3/2019

I 'm trying to set up private docker image registry for kubernetes cluster. I'm following this link

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

I have file image-registry-secrets.yaml with below contents -

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

And when I run the below command

$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|...

What is the issue in kubectl create -f image-registry-secrets.yaml --validate=false and how can I resolve this error.

Kubernetes version is -

$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"}
-- Rajkumar Natarajan
kubernetes

2 Answers

3/4/2019

You need to include a space after .dockerconfigjson, and before the base64 string - after that it should work.

-- jleavers
Source: StackOverflow

3/5/2019

When you paste the base64 password, it splits the password between a few lines and adds spaces in between the lines. It is difficult to explain and there is no need to add space after .dockerconfigjson, as the yaml provided in the tutorial is correct. The problem occurs after pasting the base64-encoded-json.

Open the secret in Vim and run: :set listchars+=space:␣ and then :set list this will show all the spaces as , check if there is none between the password lines. This worked in my case.

Update: The Vim command does not always show the spaces, so just navigate to the begging of each line of your secret key and press backspace so they connect.

-- aurelius
Source: StackOverflow