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

Pal*_*ron 0 openshift kubernetes

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

$ 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 -
Run Code Online (Sandbox Code Playgroud)

但是如果我去的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 -
Run Code Online (Sandbox Code Playgroud)

该路线经过我,http-svcrewrite不起作用。

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

Dav*_*ren 5

OpenShift 路由器不基于 nginx,因此 nginx 注释/规则不会执行任何操作。如果内置的基于 HAProxy 的功能不能满足您的需求,您必须安装基于 nginx 的入口控制器或在应用程序级别处理重写。

  • 谢谢你!对于任何人来说,HAProxy 的重写目标注释是“haproxy.router.openshift.io/rewrite-target”,可以在上面 David 的链接中找到。 (2认同)