spring-boot - 带有 url 参数的 Kubernetes 入口路由
问题描述
因为明天我将没有 wifi,所以这更像是某种理论制作。我需要在“离线模式”下准备入口文件。
我想从 到ApplicationA
路由ApplicationB
。这些路由有望携带 url 参数。两个应用程序都使用spring boot
和REST
。集群(当前)由minikube
.
因此,例如,我在ServiceA
:中得到了这个 url http://url.com/customerapi/getCustomerById?id=5
。这个 url 应该命中一个在ApplicationB
. ApplicationB
可使用customerservice
端口 31001 访问。
是不是像下面的入口那么简单?这几乎是直截了当的。此致。
我会这样定义kubernetes ingress
:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: serviceA
spec:
rules:
- http:
paths:
- path: /customerapi
backend:
serviceName: customerservice
servicePort: 31001
解决方案
如果我理解正确,您希望根据 url 将来自网络的流量路由到两个后端。
您可以通过以下方式设置 Ingress:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: cafe-ingress-nginx
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: url.com
http:
paths:
- path: /test1
backend:
serviceName: test1-svc
servicePort: 80
- path: /test2
backend:
serviceName: test2-svc
servicePort: 80
这将路由所有从url.com/test1
到后端test1-svc
和所有从url.com/test2
到后端test2-svc
。
如果你需要使用里面的参数Url
,我认为下面的方法可以工作:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test
annotations:
ingress.kubernetes.io/query-routing: default/query-routing
spec:
backend:
serviceName: default-backend
servicePort: 80
rules:
- host: url.com
---
kind:ConfigMap
apiVersion: v1
metadata:
name: query-routing
data:
mapping: |-
[{
"field": "getCustomerById",
"value": "1",
"path": "customerapi/",
"service": "customerservice",
"port": "31001"
}]
但是请在您的示例中对其进行测试,因为您的问题中没有足够的细节。
有一种方法可以通过Header
使用nginx.ingress.kubernetes.io/server-snippet
注释来捕获参数。Shopify 正在使用这个特定的,用法在此处进行说明。有关更多注释,请查看 Kubernetes NGINX Ingress Controller。
推荐阅读
- sql - tSQLt.ExceptionException 不适用于 SQL Server 中的回滚事务
- sql - 加入2张桌子的最佳方式是什么?
- arduino - 退出状态 1 'class WiFiClass' 在 NodeMCU 中没有名为“softAP”的成员
- mysql - 如何更新所有引用约束中的 MySQL 字段长度?
- mongodb - AWS Database Migration Service (DMS) MongoDB 到 S3 中的 CSV
- r - 在分组条形图中设置变量的顺序
- reactjs - 使用 Redux 工具包的反应测试库
- python - 使用 docker 运行时,Flask 在 OptionParser.parse_args() 处停止
- azure-data-factory-2 - Azure 数据工厂的问题 - 长文件路径名
- javascript - 锚标记导航删除所有事件监听器