• 微服务
  • 请教应用路由该如何配置,path 非根路径会返回 404

操作系统信息
vSphere,anolis 8,两个master节点三个worker

Kubernetes版本信息
clientVersion:

buildDate: "2022-08-23T17:44:59Z"

compiler: gc

gitCommit: a866cbe2e5bbaa01cfd5e969aa3e033f3282a8a2

gitTreeState: clean

gitVersion: v1.25.0

goVersion: go1.19

major: "1"

minor: "25"

platform: darwin/amd64

kustomizeVersion: v4.5.7

serverVersion:

buildDate: "2022-07-13T14:23:26Z"

compiler: gc

gitCommit: aef86a93758dc3cb2c658dd9657ab4ad4afc21cb

gitTreeState: clean

gitVersion: v1.24.3

goVersion: go1.18.3

major: "1"

minor: "24"

platform: linux/amd64

容器运行时
crictl version

Version: 0.1.0

RuntimeName: containerd

RuntimeVersion: v1.6.4

RuntimeApiVersion: v1

KubeSphere版本信息
v3.3.0。kk 内网离线安装。

问题是什么

应用路由配置规则 如果 path: /si

127.0.0.6 - - [11/Oct/2022:14:53:33 +0000] “GET /si/swagger/index.html HTTP/1.1” 404 0 “-” “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36” 648 0.008 [si-middleware-si-svc-5001] [] 10.99.12.205:5001 0 0.007 404 db01fe03-f913-4e36-8a26-a4699f4eab7d

如上就是 404

path: / 就是正常的,这是为什么呢?

完整路由配置:

kind: Ingress

apiVersion: networking.k8s.io/v1

metadata:

name: si-app-ingress

namespace: si-middleware

labels:

app.kubernetes.io/name: si-app

app.kubernetes.io/version: v1

annotations:

kubesphere.io/creator: ylll

nginx.ingress.kubernetes.io/service-upstream: 'true'

nginx.ingress.kubernetes.io/upstream-vhost: si-svc.si-middleware.svc.cluster.local

spec:

rules:

- host: api.xxx.com

  http:

    paths:

      - path: /si

        pathType: ImplementationSpecific

        backend:

          service:

            name: si-svc

            port:

              number: 5001

应该是你这个URL去请求本来就没有资源就返回404了,而根目录下去访问是有资源的就正常。首先要确保访问对应的 URL 是有资源的,然后看你具体需求是什么再看怎么配置。这配置里可以做一些与 URL 路径相关的处理,如果你是想加个前缀去访问根路径下的资源可以配个 URL 重写,具体看你需求。