Ingress 将流量发送到域根
Ingress sends traffic to the domain root
我有一个工作负载通过名称为 online-forms-lib-service
的 NodePort
服务公开。此工作负载具有 /version
路由。
我还有以下入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
spec:
rules:
- host: example.com
http:
paths:
- backend:
serviceName: online-forms-lib-service
servicePort: 80
path: /formslib/
问题是,/version
路线不可用:
example.com/formslib/version
如何解决?
更新
当我调用时,它会转到应用程序根目录:
example.com/formslib/
从那里添加任何路径都会将我定向到默认后端
更新
添加注释:
annotations:
ingress.kubernetes.io/rewrite-target: /
还是一样的行为。
实际上,Ingress resource mostly relies on the Ingress controller 在 K8s 集群中实现,目的是传播 Ingress 规则并提供负载平衡和流量路由功能。
正如 @UtkuÖzdemir 在评论中提到的,市场上的大多数云提供商都提出了原生 Ingress 控制器支持,即 Ingress-gce in Google Cloud, making possible to create External HTTP(S) load balancer 通过特定的 Ingress 资源。
此外,您可能会发现很多第三方 Ingress 控制器 solutions,它们可能会根据客户需求扩展 L7 网络流量 功能。
我已经在类似的场景中检查了您当前的 Ingress 配置,并且我已经管理了一个采用通配符 *
匹配规则的正确子路径路由,位于特定后端服务的根应用程序路径之前:
- backend:
serviceName: online-forms-lib-service
servicePort: 80
path: /formslib/*
此行为由 rewrite 注释控制。
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
截至 2019 年 9 月,GKE ingress 不支持 rewrite
规则。
https://github.com/kubernetes/ingress-gce/issues/109
也没有公布实施计划。
唯一的解决方案是 nginx 或其他支持重写注释的第 3 方入口控制器。
我有一个工作负载通过名称为 online-forms-lib-service
的 NodePort
服务公开。此工作负载具有 /version
路由。
我还有以下入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
spec:
rules:
- host: example.com
http:
paths:
- backend:
serviceName: online-forms-lib-service
servicePort: 80
path: /formslib/
问题是,/version
路线不可用:
example.com/formslib/version
如何解决?
更新
当我调用时,它会转到应用程序根目录:
example.com/formslib/
从那里添加任何路径都会将我定向到默认后端
更新 添加注释:
annotations:
ingress.kubernetes.io/rewrite-target: /
还是一样的行为。
实际上,Ingress resource mostly relies on the Ingress controller 在 K8s 集群中实现,目的是传播 Ingress 规则并提供负载平衡和流量路由功能。
正如 @UtkuÖzdemir 在评论中提到的,市场上的大多数云提供商都提出了原生 Ingress 控制器支持,即 Ingress-gce in Google Cloud, making possible to create External HTTP(S) load balancer 通过特定的 Ingress 资源。
此外,您可能会发现很多第三方 Ingress 控制器 solutions,它们可能会根据客户需求扩展 L7 网络流量 功能。
我已经在类似的场景中检查了您当前的 Ingress 配置,并且我已经管理了一个采用通配符 *
匹配规则的正确子路径路由,位于特定后端服务的根应用程序路径之前:
- backend:
serviceName: online-forms-lib-service
servicePort: 80
path: /formslib/*
此行为由 rewrite 注释控制。
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
截至 2019 年 9 月,GKE ingress 不支持 rewrite
规则。
https://github.com/kubernetes/ingress-gce/issues/109
也没有公布实施计划。
唯一的解决方案是 nginx 或其他支持重写注释的第 3 方入口控制器。