kubernetes - 入口路由到不同的服务和不同的路径到相同的服务
问题描述
我有以下入口配置:
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
。同时,我想使用um-service登录/api/auth/login/
并查看其他用户。/api/users/list
上面的配置只返回最后一个服务的默认路径,即 um-service。如何配置以便默认情况下 Web 加载,然后要么 要么/api/auth/login
被/api/users/list
路由到 um-service 并且/api/tasks/
还被路由到任务服务?好心劝告
解决方案
如果我对您的理解正确,您希望达到这样的结果:
$ 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
推荐阅读
- git - 查找将有助于 git 中的下一个版本的合并提交及其顶级问题编号
- c++ - 为工作线程任务实现分析器
- python - 直方图未从 python shell 显示
- mongodb - 如何在猫鼬模型上使用 partialFilterExpression
- java - Xamarin Android java.lang.InstantiationException:java.lang.Class 没有零参数构造函数
- c# - WebMatrix.WebData 使用什么安全性
- tabulator - 如何在制表符中创建表格而无需添加列属性?
- python - 如何删除尾随的非字母字符
- spring - 如何在测试中重新配置 LocalContainerEntityManagerFactoryBean
- kubernetes - Ansible + Kubernetes:如何等待作业完成