ImagePullBackOff error in Kubernetes while pulling docker images from private dockerhub registry

user8982746 picture user8982746 · Mar 14, 2019 · Viewed 9k times · Source

I try to build a CI/CD Pipeline with Azure Devops. My goal is to

  1. Build a docker Image an upload this to a private docker Respository in Dockerhub within the CI Pipeline

  2. Deploy this image to an Azure Kubernetes Cluster within the CD Pipeline

The CI Pipeline works well: enter image description here

The image is pushed successfully to dockerhub enter image description here

The pipeline docker push task:

steps:
- task: Docker@1
  displayName: 'Push an image'
  inputs:
    containerregistrytype: 'Container Registry'
    dockerRegistryEndpoint: DockerHubConnection
    command: 'Push an image'
    imageName: 'jastechgmbh/microservice-demo:$(Build.BuildId)'

After that I trigger my release pipeline manually an it shows success as well enter image description here

The apply pipeline task:

steps:
- task: Kubernetes@0
  displayName: 'kubectl apply'
  inputs:
    kubernetesServiceConnection: MicroserviceTestClusterConnection
    command: apply
    useConfigurationFile: true
    configuration:   '$(System.DefaultWorkingDirectory)/_MicroservicePlayground-MavenCI/drop/deployment.azure.yaml'
    containerRegistryType: 'Container Registry'
    dockerRegistryConnection: DockerHubConnection

But when I check the deployment on my kubernetes dashboard an error message pops up: enter image description here

Failed to pull image "jastechgmbh/microservice-demo:38": rpc error: code = Unknown desc = Error response from daemon: pull access denied for jastechgmbh/microservice-demo, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

I use the same dockerhub service connection in the CI & CD Pipeline.

enter image description here

I would be very happy about your help.

Answer

4c74356b41 picture 4c74356b41 · Mar 14, 2019

I believe this error indicates your kubernetes cluster doesnt have access to docker registry. You'd need to create docker secret for that. like so:

kubectl create secret generic regcred \
  --from-file=.dockerconfigjson=<path/to/.docker/config.json> \
  --type=kubernetes.io/dockerconfigjson

or from command line:

kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>

https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/