从Kurbenetes入口删除路由路径

时间:2018-10-22 06:14:01

标签: google-kubernetes-engine

我在kurbenates中部署了称为“测试”的服务。   服务名称:测试   端口:80

有一个名为“ / abc”的端点

ingress.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: load-balancer

spec:
  rules:
  - http:
      paths:
      - path: /test/*
        backend:
          serviceName: test
          servicePort: 80

API调用“ http://ip-address/test/abc”给出了404错误。但是端点“ / test / abc”可以正常工作。

我需要在路由时跳过“ / test”。 我该怎么做。

2 个答案:

答案 0 :(得分:9)

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
  name: rewrite
  namespace: default
spec:
  rules:
  - host: rewrite.bar.com
    http:
      paths:
      - backend:
          serviceName: http-svc
          servicePort: 80
        path: /something(/|$)(.*)

在这个入口定义中,(.*) 捕获的任何字符都将分配给占位符 $2,然后将其用作 rewrite-target 注释中的参数。

例如:

  • rewrite.bar.com/something 重写为 rewrite.bar.com/

来源:https://github.com/kubernetes/ingress-nginx/blob/master/docs/examples/rewrite/README.md

答案 1 :(得分:2)

您正在寻找url重写功能。当前仅在nginx-ingress上受支持(不支持GKE入口)。 https://github.com/kubernetes/ingress-nginx/blob/master/docs/examples/rewrite/README.md

但是您可以根据需要在GKE上安装nginx-ingress控制器,有关如何执行此操作的信息documentation