我在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”。 我该怎么做。
答案 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。