gpt4 book ai didi

regex - 如何使用正则表达式路径设置 Kubernetes Ingress 规则?

转载 作者:行者123 更新时间:2023-12-04 12:29:00 25 4
gpt4 key购买 nike

我想在 Ingress 规则的路径中使用正则表达式,但我无法让它工作。 For example :

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: cafe-ingress
spec:
tls:
- hosts:
- cafe.example.com
secretName: cafe-secret
rules:
- host: cafe.example.com
http:
paths:
- path: /tea
backend:
serviceName: tea-svc
servicePort: 80
- path: /coffee
backend:
serviceName: coffee-svc
servicePort: 80

我试过把 /t[a-z]a对于第一条路径,但是我尝试过的任何应该匹配该正则表达式的路径都会将我带到默认后端而不是我期望的服务。

注意:我使用的是 nginx 入口 Controller ,它应该能够支持正则表达式。

最佳答案

显然这个问题仍然有流量,所以我觉得我应该更新它。我不再使用 nginx 入口,所以我无法验证它是否有效。根据 https://kubernetes.github.io/ingress-nginx/user-guide/ingress-path-matching/ :

The ingress controller supports case insensitive regular expressions in the spec.rules.http.paths.path field. This can be enabled by setting the nginx.ingress.kubernetes.io/use-regex annotation to true (the default is false).



他们在页面上提供的示例将涵盖它:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress-3
annotations:
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:
- host: test.com
http:
paths:
- path: /foo/bar/bar
backend:
serviceName: test
servicePort: 80
- path: /foo/bar/[A-Z0-9]{3}
backend:
serviceName: test
servicePort: 80

不再有效的原始答案。

解决方案似乎非常简单(至少使用 nginx 入口 Controller )-您只需要在路径前面加上 "~ " :
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: cafe-ingress
spec:
tls:
- hosts:
- cafe.example.com
secretName: cafe-secret
rules:
- host: cafe.example.com
http:
paths:
- path: ~ /t[a-z]a
backend:
serviceName: tea-svc
servicePort: 80
- path: /coffee
backend:
serviceName: coffee-svc
servicePort: 80

关于regex - 如何使用正则表达式路径设置 Kubernetes Ingress 规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40009640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com