使用带有动态参数的 Kubernetes Ingress 到 web API
Use Kubernetes Ingress with dynamic parameters to web API
我在 ASP.NET 核心网络 API 中使用 Kubernetes Ingress 时遇到问题。
假设我有一个带有三个控制器的网络 API(演示三个路由 /、/ep1、/ep2 的简化代码):
endpoints.MapGet("/", async context =>
{
await context.Response.WriteAsync("##");
});
endpoints.MapGet("/ep1", async context =>
{
await context.Response.WriteAsync("1");
});
endpoints.MapGet("/ep2", async context =>
{
await context.Response.WriteAsync("2");
});
我想要的是定义一个将内部路由传递给应用程序的入口规则:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: myhost.com
http:
paths:
- path: /(/|$)(.*)
pathType: Prefix
backend:
service:
name: myservice
port:
number: 80
然后我期望发生的是浏览到 myhost.com/ 将 return“##”,myhost.com/ep1 将 return“1”和 myhost .com/ep2 将 return "2"
但是,所有三个路由 return "##"
我在配置入口时做错了什么吗?使用入口规则时甚至可能吗?如果没有,您如何创建使用动态参数的控制器?假设我想要一个 API 的网络 return 是某个用户 ID 的银行金额,当在 GET 路径中指定其 ID 时:myhost.com/balance/1312323,我如何使用网络 API 和 Kubernetes 的入口规则?
感谢您的帮助
应用内的路由应由应用处理。因此,不需要定义动态路径。试试这个。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: myhost.com
http:
paths:
- path: /
backend:
service:
name: myservice
port:
number: 80
我在 ASP.NET 核心网络 API 中使用 Kubernetes Ingress 时遇到问题。
假设我有一个带有三个控制器的网络 API(演示三个路由 /、/ep1、/ep2 的简化代码):
endpoints.MapGet("/", async context =>
{
await context.Response.WriteAsync("##");
});
endpoints.MapGet("/ep1", async context =>
{
await context.Response.WriteAsync("1");
});
endpoints.MapGet("/ep2", async context =>
{
await context.Response.WriteAsync("2");
});
我想要的是定义一个将内部路由传递给应用程序的入口规则:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: myhost.com
http:
paths:
- path: /(/|$)(.*)
pathType: Prefix
backend:
service:
name: myservice
port:
number: 80
然后我期望发生的是浏览到 myhost.com/ 将 return“##”,myhost.com/ep1 将 return“1”和 myhost .com/ep2 将 return "2" 但是,所有三个路由 return "##"
我在配置入口时做错了什么吗?使用入口规则时甚至可能吗?如果没有,您如何创建使用动态参数的控制器?假设我想要一个 API 的网络 return 是某个用户 ID 的银行金额,当在 GET 路径中指定其 ID 时:myhost.com/balance/1312323,我如何使用网络 API 和 Kubernetes 的入口规则?
感谢您的帮助
应用内的路由应由应用处理。因此,不需要定义动态路径。试试这个。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: myhost.com
http:
paths:
- path: /
backend:
service:
name: myservice
port:
number: 80