【问题标题】:Unable to add multiple Ingresses with same host on nginx-ingress无法在 nginx-ingress 上添加具有相同主机的多个 Ingress
【发布时间】:2020-04-27 02:51:38
【问题描述】:

我正在尝试添加多个应共享同一主机的 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 [警告] 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”冲突,已忽略

【问题讨论】:

    标签: kubernetes kubernetes-ingress nginx-ingress


    【解决方案1】:

    原来我使用了错误的nginx-ingress 控制器。 nginxinc/kubernetes-ingress 控制器不支持将 Ingress 规则与同一主机合并(仅通过 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

    【讨论】:

      【解决方案2】:

      只是为了称赞Brass的回复,参考the docs

      如果多个 Ingress 为同一主机定义不同的路径,则入口控制器将合并定义。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-03
        • 1970-01-01
        • 2021-11-05
        • 2023-01-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多