docker-registry
控制器后面的Kubernetes
群集中设置nginx-ingress
。问题是,当我尝试将映像推送到私有注册表时,它告诉我:
获取https ://registry.local/v2/:x509:证书仅对ingress.local有效,而不对Registry.local有效。 。
这里是入口清单:
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: docker-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
tls:
- hosts: [ 'registry.local' ]
- secretName: registry
rules:
- host: registry.local
http:
paths:
- backend:
serviceName: docker-registry
servicePort: 5000
path: /
这是docker-registry清单: >
另外,nginx-inress和docker-registry可以正常工作,但不能一起使用。 >
#1 楼
首先404错误是kubernetes中的资源错误。这意味着您的容器中的容器不是您的第一个脚本创建的。即使已创建它并且可以看到它,但是在第二个脚本中您的标签也不正确。我建议您检查两个YAML脚本的匹配标签。所以在您的情况下,我可以在第一个脚本的spec部分中看到matchlabel是docker-registry,但是在第二个脚本中我看不到任何docker-registry。我相信在您的元数据中,入口脚本的一部分应为“ name = docker-registry”,而不是“ name = docker-ingress”。
评论
我知道这似乎很明显,但是证书确实存在吗?多德,谢谢您的回复。但是它们确实存在。否则,它不会告诉证书有效。...关于它们的唯一一件事是,它们是自签名的。
@acd证书对ingress.local有效,而不是Registry.local表示使用默认的伪入口证书。您必须添加一个有效的证书,即与FQDN匹配并由受信任的CA颁发的证书。
@ 030谢谢您的建议,但这无关紧要。因为我生成的证书(本地)是专门颁发给Registry.local地址的。而且,如上所述,使用相同的cert docker注册表,而前面没有nginx可以正常工作。并且,与此相同,另一个Web服务可以在同一个Nginx之后正常工作。问题出在nginx + docker。