J'essaie de créer un pipeline CI / CD avec Azure Devops. Mon objectif est de
Créez une image Docker et téléchargez-la dans un référentiel Docker privé dans Dockerhub dans le pipeline CI
Déployez cette image sur un cluster Azure Kubernetes dans le pipeline de CD
Le pipeline CI fonctionne bien:
L'image a été poussée avec succès vers dockerhub
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
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:
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.
Je serais très heureux de votre aide.
3 Réponses :
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>
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
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 /
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