K
Q

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

March 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
kubernetes
azure-devops
azure-aks

3 Answers

March 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

December 15, 2020

Configure ACR integration for existing AKS clusters

az aks update -n myAKSClusterName -g myAKSResourceGroupName --attach-acr acr-name

https://learn.microsoft.com/en-us/azure/aks/cluster-container-registry-integration

Solved the issue for me

-- Akhilesh Balakrishnan
Source: StackOverflow

March 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