kubernetes - 无法在 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
作为入口控制器,我安装了nginx-stable/nginx-ingress
via Helm
helm install my-ingress nginx-stable/nginx-ingress
当尝试从上面创建两个入口时,只有一个在尝试访问 www.example.de 时工作(这在我的 /etc/hosts 中映射到 127.0.0.1)。
在 nginx-ingress 日志中看到以下警告:
2020/01/08 09:33:51 [警告] 560#560:0.0.0.0:80 上的服务器名称“www.example.de”冲突,已忽略
2020/01/08 09:33:51 [警告] 560#560:0.0.0.0:443 上的服务器名称“www.example.de”冲突,已忽略
解决方案
原来我使用了错误的nginx-ingress
控制器。nginxinc/kubernetes-ingress
控制器不支持将 Ingress 规则与同一主机合并(仅通过Mergeable Ingresses)。
相反,kubernetes/ingress-nginx
应该使用。此处列出了这些控制器之间的差异。
删除旧控制器并kubernetes/ingress-nginx
使用以下命令进行安装解决了该问题。
helm install my-nginx stable/nginx-ingress
见https://kubernetes.github.io/ingress-nginx/deploy/#using-helm
推荐阅读
- r - 包含数学 $\\times$ 符号的绘图标题
- javascript - 仅对某些主机/域禁用 Chrome 的自动播放策略
- tsql - 创建/修改具有不同 QUOTED_IDENTIFIER 值的多个对象(在存储过程中)
- python - 如何自动对每小时范围内的数据求和?
- itext - IText 7 中的多行文本拟合
- database - 有效过滤数据库中的数据
- javascript - 我正在尝试安装 react 但我不断收到“错误:EPERM:不允许操作”
- nftables - nftables:覆盖默认配置文件
- opencv - 读取 OpenCV FOURCC 代码 int 到 char 转换
- javascript - 在移动浏览器中使用 go 键跳过 HTML“日期”输入