无法在 nginx-ingress 上添加具有同一主机的多个入口
Unable to add multiple Ingresses with same host on nginx-ingress
我正在尝试添加多个应共享同一主机的 Ingress。
一个 Ingress 应该处理对 www.example.de/some 的请求,另一个应该处理所有其他请求。
这是 Ingress 配置的片段
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: some-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: "www.example.de"
http:
paths:
- path: "/some"
backend:
serviceName: some-svc
servicePort: 8585
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: other-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: "www.example.de"
http:
paths:
- backend:
serviceName: other-svc
servicePort: 8080
作为入口控制器,我通过 Helm 安装了 nginx-stable/nginx-ingress
helm install my-ingress nginx-stable/nginx-ingress
当尝试从上面创建两个 Ingress 时,只有一个在尝试访问 www.example.de 时有效(这在我的 /etc/hosts 中映射到 127.0.0.1)。
在 nginx-ingress 日志中看到以下警告:
2020/01/08 09:33:51 [warn] 560#560: conflicting server name "www.example.de" on 0.0.0.0:80, ignored
2020/01/08 09:33:51 [warn] 560#560: conflicting server name "www.example.de" on 0.0.0.0:443, ignored
原来我用错了 nginx-ingress
控制器。 nginxinc/kubernetes-ingress
controller does not support merging Ingress rules with the same host (only via Mergeable Ingresses).
而应使用 kubernetes/ingress-nginx
。
列出了这些控制器之间的差异 here。
删除旧控制器并安装 kubernetes/ingress-nginx
而不是使用以下命令解决了问题。
helm install my-nginx stable/nginx-ingress
见https://kubernetes.github.io/ingress-nginx/deploy/#using-helm
只是为了赞美 Brass 的回复,参考 the docs:
If multiple Ingresses define different paths for the same host, the ingress controller will merge the definitions.
我正在尝试添加多个应共享同一主机的 Ingress。 一个 Ingress 应该处理对 www.example.de/some 的请求,另一个应该处理所有其他请求。
这是 Ingress 配置的片段
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: some-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: "www.example.de"
http:
paths:
- path: "/some"
backend:
serviceName: some-svc
servicePort: 8585
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: other-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: "www.example.de"
http:
paths:
- backend:
serviceName: other-svc
servicePort: 8080
作为入口控制器,我通过 Helm 安装了 nginx-stable/nginx-ingress
helm install my-ingress nginx-stable/nginx-ingress
当尝试从上面创建两个 Ingress 时,只有一个在尝试访问 www.example.de 时有效(这在我的 /etc/hosts 中映射到 127.0.0.1)。
在 nginx-ingress 日志中看到以下警告:
2020/01/08 09:33:51 [warn] 560#560: conflicting server name "www.example.de" on 0.0.0.0:80, ignored
2020/01/08 09:33:51 [warn] 560#560: conflicting server name "www.example.de" on 0.0.0.0:443, ignored
原来我用错了 nginx-ingress
控制器。 nginxinc/kubernetes-ingress
controller does not support merging Ingress rules with the same host (only via Mergeable Ingresses).
而应使用 kubernetes/ingress-nginx
。
列出了这些控制器之间的差异 here。
删除旧控制器并安装 kubernetes/ingress-nginx
而不是使用以下命令解决了问题。
helm install my-nginx stable/nginx-ingress
见https://kubernetes.github.io/ingress-nginx/deploy/#using-helm
只是为了赞美 Brass 的回复,参考 the docs:
If multiple Ingresses define different paths for the same host, the ingress controller will merge the definitions.