I am receiving this error when starting a Pod
Failed to pull image "docker-username/docker-private-repository:latest": rpc error: code = Unknown desc = Error response from daemon: pull access denied for docker-username/docker-private-repository, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
My setup is as follow:
Ceated a Secret service using command line
kubectl create secret docker-registry docker-keys --docker-username=docker-username --docker-password=password --docker-email=docker-email@gmail.com --docker-server=https://index.docker.io/v1
which generates the following data inside secrets
kubectl get secret docker-keys -o json | jq '.data | map_values(@base64d)'
{
".dockerconfigjson": "{\"auths\":{\"https://index.docker.io/v1\":{\"username\":\"docker-username\",\"password\":\"password\",\"email\":\"docker-email@gmail.com\",\"auth\":\"base64encodedtoken\"}}}"
}
Then in deployment I am using docker-keys secrets
apiVersion: apps/v1
kind: Deployment
metadata:
name: docker-private-repository
labels:
app: docker-private-repository
spec:
replicas: 1
selector:
matchLabels:
app: docker-private-repository
template:
metadata:
labels:
app: docker-private-repository
spec:
imagePullSecrets:
- name: docker-keys
containers:
- name: docker-private-repository
image: docker-username/docker-private-repository:latest
imagePullPolicy: Always
ports:
- containerPort: 3000
I did tried to search for a solution, but always ended up with the above setup.
Update1:
Secrets service and pod are running in the same namespace default.
Pulling manually from docker-hub works
docker pull docker-username/docker-private-repository:latest
latest: Pulling from docker-username/docker-private-repository
0ecb575e629c: Already exists
...
7467d1831b69: Already exists
Digest: sha256:153643ecb19c2ce54635839ce9393b2e256ce6c34a2fe75b91c7a41525a6a535
Status: Downloaded newer image for docker-username/docker-private-repository:latest
docker.io/docker-username/docker-private-repository:latest
Update2 kubectl describe pod
I have 2 sercrets services, one for dockerhub credentials and another is token-rzlx6 for whatever reason.
Thing is when I run describe pod, I don't see the secrets for dockerhub to be mounted as token-rzlx6, could this be the reason? And why it is not mounted?
...
Volumes:
default-token-rzlx6:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-rzlx6
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
...