如果有前缀,将流量从一个应用程序(工作负载)重定向到另一个应用程序?

Redirect trafic from one app (workload) to other if there is prefix?

我有两个应用程序(工作负载):app1app2。如果存在 diona 前缀,我的目标是将流量从 app1 重定向到 app2。例如:

app1/diona > app2/<api>

现在我有这样的规则:

rules:
  - host: host
    http:
      paths:
      - backend:
          serviceName: ingress-37ce1ad1e8214375784d1e50805c056c
          servicePort: 80
        path: /diona

当我在 app2 的日志中检查 app1/diona 端点时出现错误:

Not Found: /diona

如何在不实现 app2 中的 diona 前缀的情况下正确重定向流量?

您可以使用 nginx ingress controller 来实现它。您的代码将如下所示

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
  name: rewrite
spec:
  rules:
    - host: host
      http:
        paths:
        - backend:
            serviceName: ingress-37ce1ad1e8214375784d1e50805c056c
            servicePort: 80
          path: /diona

如果您想将 app1/diona/* 重定向到 app2/*,请将注释更改为

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
  name: rewrite
spec:
  rules:
    - host: host
      http:
        paths:
        - backend:
            serviceName: ingress-37ce1ad1e8214375784d1e50805c056c
            servicePort: 80
          path: /diona/(.*)

Reference