由于我明天将没有wifi,这更多是某种理论上的尝试。我需要在“离线模式”下准备入口文件。
我想从ApplicationA
路由到ApplicationB
。这些路由有望能够携带url参数。两个应用程序都使用spring boot
和REST
。集群(当前)由minikube
设置。
例如我在ServiceA
:http://url.com/customerapi/getCustomerById?id=5
中得到了这个URL。该网址应符合ApplicationB
中定义的方法。使用ApplicationB
和端口31001可以访问customerservice
。
它和下面的入口一样简单吗?多数民众赞成在直接。最好的问候。
我会这样定义kubernetes ingress
:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: serviceA
spec:
rules:
- http:
paths:
- path: /customerapi
backend:
serviceName: customerservice
servicePort: 31001
答案 0 :(得分:1)
如果我对您的理解正确,那么您希望根据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正在使用这一特定功能,用法here进行了说明。有关更多注释,请检查Kubernetes NGINX Ingress Controller。