为什么ingress重写在openshift中不起作用



我通过这个例子创建了一个入口:

$ echo '
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
name: rewrite
spec:
ingressClassName: nginx
rules:
- host: my.hostname.com
http:
paths:
- path: /something(/|$)(.*)
pathType: Prefix
backend:
service:
name: http-svc
port: 
number: 80
' | kubectl create -f -

但如果我去my.hostname.com/something,即使我把它改成,路线也不匹配

$ echo '
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
name: rewrite
spec:
ingressClassName: nginx
rules:
- host: my.hostname.com
http:
paths:
- path: /something
pathType: Prefix
backend:
service:
name: http-svc
port: 
number: 80
' | kubectl create -f -

路线经过我到http-svc,但rewrite不工作。

那么,如何进行haproxy.router.openshift.io/rewrite-target: /无法提供的复杂重写呢?

OpenShift路由器不是基于nginx的,所以nginx注释/规则不会有任何作用。如果内置的基于HAProxy的功能不能满足您的需求,您将不得不安装一个基于nginx的入口控制器,或者在应用程序级别处理重写。

最新更新