微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Kubernetes - Ingress - 被更一般的规则捕获

如何解决Kubernetes - Ingress - 被更一般的规则捕获

我正在尝试为在我的 microk8s 集群中运行的服务 (Kibana) 设置入口规则,但我遇到了一些问题。

设置的第一个规则是

Name:             web-ingress
Namespace:        default
Address:          127.0.0.1
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
TLS:
  k8s-ingress-tls terminates web10
Rules:
  Host        Path  Backends
  ----        ----  --------
  *
              /   web-service:8080 (10.1.72.26:8080,10.1.72.27:8080)
Annotations:  Nginx.ingress.kubernetes.io/rewrite-target: /
              Nginx.ingress.kubernetes.io/ssl-redirect: false
Events:       <none>

我正在尝试将 Kibana 服务设置为在路径 /kibana 上提供服务

Name:             kibana
Namespace:        default
Address:          127.0.0.1
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
TLS:
  k8s-ingress-tls terminates web10
Rules:
  Host        Path  Backends
  ----        ----  --------
  *
              /kibana(/|$)(.*)   kibana:5601 (10.1.72.39:5601)
Annotations:  Nginx.ingress.kubernetes.io/ssl-redirect: false
Events:
  Type    Reason  Age   From                      Message
  ----    ------  ----  ----                      -------
  normal  CREATE  17m   nginx-ingress-controller  Ingress default/kibana
  normal  UPDATE  17m   nginx-ingress-controller  Ingress default/kibana

我的问题是 Kibana 做的第一件事是将 302 重定向返回到 host/login?next=%2F,这由第一个 Ingress 规则解决,因为现在我丢失了 /kibana 路径。

我尝试添加 Nginx.ingress.kubernetes.io/rewrite-target: /kibana/$2重定向然后看起来像 host/login?next=%2Fkibana%2F 这根本不是我想要的。

如果我删除第一条规则,一旦 Kibana 重定向到主机/登录,我就会得到 404?next=%2F

解决方法

kibana 入口添加以下注解,以便 nginx-ingress 使用正则表达式解释 /kibana(/|$)(.*) 路径:

 nginx.ingress.kubernetes.io/use-regex: "true"

其他细节: 要让 kibana 知道它在 /kibana 路径上运行,请将以下环境变量添加到 kibana pod/deployment:

        - name: SERVER_BASEPATH
          value: /kibana

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。