我在Kubernetes 1.13集群中有一个私有Docker注册中心,该集群由Kubernetes NGINX入口控制器0.23.0和以下Ingress对象公开:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
name: my-name
namespace: my-namespace
spec:
rules:
- host: my-domain
http:
paths:
- backend:
serviceName: registry
servicePort: 5000
path: /?(.*)
tls:
- hosts:
- my-domain
secretName: my-secret这使我能够像下面这样提取一个现有的图像:
docker image pull my-cluster/my-image我现在不会更改设置,使注册表在my-cluster/registry上公开。这是如何做到的,甚至可能吗?
将path改为/registry/?(.*)并不能奏效。docker login my-cluster/registry现在生成以下错误消息,docker image pull my-cluster/registry/my-image也不起作用。我目前对根本原因的猜测是,注册表还使用前缀registry (在Ingress中配置)来进行内部重定向。如果适用,如何配置(最好也在Ingress中)?
Error response from daemon: login attempt to https://my-cluster/v2/ failed with status: 404 Not Found发布于 2019-03-25 13:45:05
我现在得出的结论是,不可能通过类似URL的位置(如my-cluster/registry)来引用Docker注册中心,而不可能使用类似主机的位置(例如带有可选端口的my-cluster )。
因此,我将为registry.my-cluster保留一个单独的IP地址和证书,然后继续进行。
发布于 2019-04-08 15:24:58
我也有一个类似的问题,我试图在/registry路径上公开带有nginx入口的注册用户。
首先,我成功地公开了这个配置nginx:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: registry-ingress
namespace: devops
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
certmanager.k8s.io/cluster-issuer: letsencrypt-staging
kubernetes.io/tls-acme: 'true'
spec:
tls:
- hosts:
- registry.host.com
secretName: letsencrypt-staging
rules:
- host: registry.host.com
http:
paths:
- path: /
backend:
serviceName: registry-ui
servicePort: 8080另一方面,当我尝试使用路径公开服务时,我只有工作的主页,因为我试图在子页面(图像的一个页面)中导航,我有一个404错误。
spec:
tls:
- hosts:
- host.com
secretName: letsencrypt-staging
rules:
- host: host.com
http:
paths:
- path: /registry
backend:
serviceName: registry-ui
servicePort: 8080我想知道你是如何得出这样的结论的:不可能有一个主机/regitry链接起作用?
衷心感谢
https://stackoverflow.com/questions/55338074
复制相似问题