Kubernetes - Ingress - 被更通用的规则捕获

Kubernetes - Ingress - caught by a more general rule

我正在尝试为我的 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 做的第一件事是 returns 一个 302 重定向到 host/login?next=%2F 这被第一个 Ingress 规则解决了,因为现在我丢失了我的 /kibana路径。

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

如果我删除第一条规则,一旦 Kibana 重定向到 host/login?next=%2F

,我只会收到 404

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

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

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

        - name: SERVER_BASEPATH
          value: /kibana