我有三个问题:
1-如何正确实现正则表达式以匹配入口中路径的第一部分?
- path: /^search_[0-9A-Z]{9}
backend:
serviceName: global-search-service
servicePort: 5050我希望匹配任何以/search_开头的路径,例如/search_model或/search_make
2-如何访问没有路径只有端口的服务。
path:
pathType: Exact
backend:
serviceName: chart-display
servicePort: 10000我只是使用iframe来显示这个服务。我只有端口号,怎么访问它?
3-我托管了两个不同的react应用程序,当我将它们的路径设置为根/时,它们都可以工作。我如何将它们都实现为使用根路径?
正在尝试第3期。
所以我想出了这样的东西,对吧?
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: admin-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /admin
backend:
serviceName: web2-service
servicePort: 2000
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: normal-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: web1-service
servicePort: 1000加载服务不会转到web2- <my-ip>/admin,如果我把它们都放在/上,它会自动转到web1-service。亲切的忠告
发布于 2021-01-31 17:44:15
对于第一个问题,您可以在路径中使用正则表达式,没有任何问题,您只需要使用use -正则表达式注释入口,至少根据文档(https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#use-regex)。
类似于:
metadata:
name: your-name
annotations:
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
...或者,如果您将注释用于重写目标,则还应强制执行正则表达式。
至于要使用的正则表达式,为了匹配路径的开头,例如所有以开头的路径,如something_first或something_another,,您可以使用简单的:
something_[a-zA-Z0-9]*对于第二个问题,我不确定你到底在问什么。入口应该与http或https请求一起使用,这些请求应该提供路径。如果您想简单地在给定端口公开外部服务,则可以使用LoadBalancer服务。
在内部,您只想通过一个端口访问的服务在根路径处以http应答吗?或者做一些不同的事情?如果它只在根路径上响应,则可以将请求中的所有路径与根路径进行匹配。
至于如何将请求的所有路径重写到根目录,您可以使用重写注释,例如:
nginx.ingress.kubernetes.io/rewrite-target: /有关此注释的更多信息,请查看文档,因为它可以做很多事情(https://kubernetes.github.io/ingress-nginx/examples/rewrite/)
还要记住,如果您想在两个不同的位置重写两个服务,则需要将Ingress拆分为两个单独的入口
https://stackoverflow.com/questions/65976800
复制相似问题