我有以下入口配置:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: my-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /
pathType: Exact
backend:
serviceName: web-service
servicePort: 5000
paths:
- path: /api/tasks/.*
pathType: Prefix
backend:
serviceName: tasks-service
servicePort: 5004
paths:
- path: /api/.*
pathType: Prefix
backend:
serviceName: um-service
servicePort: 5001
我打算默认加载前端,然后使用其他路径加载其他服务。我想从 /api/tasks/total_count
获得总任务数并从 /api/tasks/raise
提出新任务。同时,我想使用 /api/auth/login/
登录,并使用 /api/users/list
来查看其他用户都使用 um-service 服务。
上面的配置只返回最后一个服务的默认路径,即um-service。
如何配置以便默认加载网络,然后将 /api/auth/login
或 /api/users/list
路由到 um-service 而 /api/tasks/
也路由到任务服务?恳请指教
答案 0 :(得分:2)
如果我理解正确的话,你想达到那个结果:
$ curl <MY_DOMAIN>/api/auth/login
um-service
$ curl <MY_DOMAIN>/api/users/list
um-service
$ curl <MY_DOMAIN>/api/tasks/
tasks-service
$ curl <MY_DOMAIN>/
web-service
你几乎做对了一切,但 paths
应该只给出一次
试试这个配置:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: my-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: web-service
servicePort: 5000
- path: /api/tasks/.*
backend:
serviceName: tasks-service
servicePort: 5004
- path: /api/.*
backend:
serviceName: um-service
servicePort: 5001