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

3/14/2019

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.

-- user8982746
azure
azure-aks
azure-devops
azure-kubernetes
kubernetes

2 Answers

3/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/

-- 4c74356b41
Source: StackOverflow

3/14/2019

The answer above is correct, just need to add that you have to put imagePullsecrets on your deployment. Read the link provided on the other answer, it explain it in detail:

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

-- Leandro Donizetti Soares
Source: StackOverflow