我尝试使用Azure Devops构建CI / CD管道。我的目标是
管道码头推送任务:
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服务连接。
我很乐意帮助你。
我相信此错误表明您的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/
上面的答案是正确的,只需要添加你必须在你的部署上放置imagePullsecrets。阅读其他答案提供的链接,它会详细解释:
https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/