从 Kubernetes 入口删除路由路径

Nuw*_*era 16 google-kubernetes-engine

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

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

入口.yaml

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

spec:
  rules:
  - http:
      paths:
      - path: /test/*
        backend:
          serviceName: test
          servicePort: 80
Run Code Online (Sandbox Code Playgroud)

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

路由时我需要跳过“/test”。我如何做到这一点。

Ahm*_*gle 12

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

但是如果你愿意,你可以在 GKE 上安装 nginx-ingress 控制器,有关于如何做到这一点的文档


Con*_*che 10

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

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

例如:

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

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

  • 是不是少了“pathType”?https://kubernetes.io/docs/concepts/services-networking/ingress/#path-types (2认同)