kubernetessingress 路由到另一个服务

时间:2020-12-23 12:21:53

标签: kubernetes kubernetes-ingress nginx-config configmap

当我点击 xyz.abc.com/login 时,它应该进入测试服务,当我点击 URL xyz.abc.com/(anything) 时,它应该进入 test1 服务,但目前,当我点击 xyz.abc.com 时/login 它不会去那里,而是去 test1 service random.com/login,所以去 NLB 中的基于路径的路由 那么如何实现这个场景 有人可以帮忙吗?

kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: test
  namespace: test
  labels:
    app.kubernetes.io/managed-by: Helm
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
    kubernetes.io/ingress.class: internet-facing-ingress
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/server-snippet: >
      rewrite /login(.*) /v2/login/ break; rewrite / / break;

      rewrite /integration/customer(.*) /v1/integration/customer$1; break;

      rewrite /admin/customer(.*) /v2/admin/customer$1; break;

      rewrite /admin/abc1(.*) /v2/admin/abc1$1;
      break;
spec:
  tls:
    - hosts:
        - xyz.abc.com
      secretName: serverv1-tls
  rules:
    - host: xyz.abc.com
      http:
        paths:
          - path: /login
            backend:
              serviceName: test
              servicePort: 80
          - path: /
            backend:
              serviceName: test1
              servicePort: 80

外部服务:

kind: Service
apiVersion: v1
metadata:
  name: test1
  namespace: test1
spec:
  type: ExternalName
  sessionAffinity: None
  externalName: random.com
status:
  loadBalancer: {}

1 个答案:

答案 0 :(得分:1)

在路径中尝试最后添加 /login/ /

rules:
        - host: xyz.abc.com
          http:
            paths:
              - path: /login/
                backend:
                  serviceName: test
                  servicePort: 80
              - path: /
                backend:
                  serviceName: test1
                  servicePort: 80

最简单的方法是尽可能分离入口。