4
votes

Erreur ImagePullBackOff dans Kubernetes lors de l'extraction d'images Docker à partir du registre Dockerhub privé

J'essaie de créer un pipeline CI / CD avec Azure Devops. Mon objectif est de

  1. Créez une image Docker et téléchargez-la dans un référentiel Docker privé dans Dockerhub dans le pipeline CI

  2. Déployez cette image sur un cluster Azure Kubernetes dans le pipeline de CD

Le pipeline CI fonctionne bien: entrez la description de l'image ici

L'image a été poussée avec succès vers dockerhub entrez la description de l'image ici

La tâche de poussée du docker du pipeline:

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

Après cela, je déclenche manuellement mon pipeline de mise en production. montre aussi le succès entrez la description de l'image ici

La tâche d'application du pipeline:

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

Mais lorsque je vérifie le déploiement sur mon tableau de bord kubernetes, un un message d'erreur apparaît: entrez la description de l'image ici

Impossible d'extraire l'image "jastechgmbh / microservice-demo: 38": rpc error: code = Unknown desc = Réponse d'erreur du démon: pull accès refusé pour jastechgmbh / microservice-demo, le référentiel n'existe pas ou peut nécessiter 'docker login': refusé: l'accès demandé à la ressource est refusé

J'utilise la même connexion de service dockerhub dans le Pipeline CI et CD.

 entrez la description de l'image ici

Je serais très heureux de votre aide.


0 commentaires

3 Réponses :


5
votes

Je pense que cette erreur indique que votre cluster kubernetes n'a pas accès au registre docker. Vous auriez besoin de créer un secret de docker pour cela. comme ceci:

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

ou depuis la ligne de commande:

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

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


1 commentaires

J'utilise minikube et j'utilise le deuxième mécanisme que vous indiquez ici, mais pour une raison quelconque, cela n'a pas fonctionné. Le premier est bon, et j'ai maintenant une installation minkube fonctionnelle. +1



0
votes

La réponse ci-dessus est correcte, il suffit d'ajouter que vous devez mettre imagePullsecrets sur votre déploiement. Lisez le lien fourni sur l'autre réponse, il l'explique en détail:

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


0 commentaires

0
votes

Configurer l'intégration ACR pour les clusters AKS existants

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

https://docs.microsoft.com / fr-fr / azure / aks / cluster-container-registry-integration

J'ai résolu le problème pour moi


0 commentaires