我尝试使用Azure Devops构建CI / CD管道。 我的目标是
构建docker映像并将其上传到CI管道内Dockerhub中的私有docker仓库中
将此映像部署到CD管道中的Azure Kubernetes群集
管道docker push任务:
steps:
- task: Docker@1
displayName: 'Push an image'
inputs:
containerregistrytype: 'Container Registry'
dockerRegistryEndpoint: DockerHubConnection
command: 'Push an image'
imageName: 'jastechgmbh/microservice-demo:$(Build.BuildId)'
应用管道任务:
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
但是当我在kubernetes仪表板上检查部署时,会弹出错误消息:
无法提取映像“ jastechgmbh / microservice-demo:38”:rpc错误:代码=未知desc =来自守护程序的错误响应:对jastechgmbh / microservice-demo的提取访问被拒绝,存储库不存在或可能需要'docker login':拒绝:请求的对资源的访问被拒绝
我在CI和CD管道中使用相同的dockerhub服务连接。
很高兴您的帮助。
答案 0 :(得分:1)
我相信此错误表明您的kubernetes集群无法访问docker注册表。您需要为此创建docker secret。像这样:
kubectl create secret generic regcred \
--from-file=.dockerconfigjson=<path/to/.docker/config.json> \
--type=kubernetes.io/dockerconfigjson
或从命令行:
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/
答案 1 :(得分:1)
上面的答案是正确的,只需添加您必须将imagePullsecrets放在部署中即可。阅读其他答案上提供的链接,它会对其进行详细说明:
https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
答案 2 :(得分:0)
为现有AKS集群配置ACR集成
az aks更新-n myAKSClusterName -g myAKSResourceGroupName --attach-acr acr名称
https://docs.microsoft.com/en-us/azure/aks/cluster-container-registry-integration
为我解决了这个问题