Spring boot 带有url参数的Kubernetes入口路由
因为明天我将没有wifi,这更像是一种理论上的捏造。我需要在“脱机模式”下准备入口文件 我想从Spring boot 带有url参数的Kubernetes入口路由,spring-boot,kubernetes,Spring Boot,Kubernetes,因为明天我将没有wifi,这更像是一种理论上的捏造。我需要在“脱机模式”下准备入口文件 我想从ApplicationA路由到ApplicationB。这些路由有望携带url参数。这两个应用程序都使用spring boot和REST。群集(当前)由minikube设置 例如,我在ServiceA:http://url.com/customerapi/getCustomerById?id=5。此url应符合ApplicationB中定义的方法应用程序B 它和下面的入口一样简单吗?这很直截了当。致以最
ApplicationA
路由到ApplicationB
。这些路由有望携带url参数。这两个应用程序都使用spring boot
和REST
。群集(当前)由minikube
设置
例如,我在ServiceA
:http://url.com/customerapi/getCustomerById?id=5
。此url应符合ApplicationB
中定义的方法<可以使用customerservice
和端口31001访问代码>应用程序B
它和下面的入口一样简单吗?这很直截了当。致以最良好的祝愿
我会这样定义一个kubernetes入口
:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: serviceA
spec:
rules:
- http:
paths:
- path: /customerapi
backend:
serviceName: customerservice
servicePort: 31001
如果我理解正确,您希望根据url将来自web的流量路由到两个后端 您可以通过以下方式设置入口:
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
路由到后端test1svc
,并将所有从url.com/test2
路由到后端test2svc
如果您需要在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"
}]
但是请用你的例子来测试一下,因为你的问题中没有足够的细节
有一种方法可以使用
nginx.ingres.kubernetes.io/server snippet
注释从Header
捕获参数。Shopify正在使用这个特殊的工具,并解释了它的用法。有关更多注释,请检查Kubernetes。此参数仅在URL中,或者您可以在标头中传递它?仅在URL中传递。我不认为“ingress.Kubernetes.io/query routing”注释是API的一部分